feat: Added CPython and pybind11 libraries
This commit is contained in:
8
.gitmodules
vendored
8
.gitmodules
vendored
@@ -1,3 +1,11 @@
|
||||
[submodule "dependencies/sqapi"]
|
||||
path = dependencies/sqapi
|
||||
url = https://gitlab.com/GothicMultiplayerTeam/dependencies/sqapi.git
|
||||
[submodule "dependencies/pybind11"]
|
||||
path = dependencies/pybind11
|
||||
url = https://github.com/pybind/pybind11.git
|
||||
branch = master
|
||||
[submodule "dependencies/cpython"]
|
||||
path = dependencies/cpython
|
||||
url = https://github.com/python/cpython.git
|
||||
branch = 3.12
|
||||
@@ -1,18 +1,80 @@
|
||||
cmake_minimum_required(VERSION 3.21)
|
||||
|
||||
project(squirrel-template)
|
||||
include(${CMAKE_ROOT}/Modules/ExternalProject.cmake)
|
||||
project(PyG2O)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
|
||||
|
||||
file(GLOB_RECURSE SRC
|
||||
# Specify build type
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "Debug")
|
||||
endif()
|
||||
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo" "MinSizeRel")
|
||||
|
||||
if (CMAKE_BUILD_TYPE MATCHES "Debug")
|
||||
set(CPYTHON_BUILD_TYPE Debug)
|
||||
else ()
|
||||
set(CPYTHON_BUILD_TYPE Release)
|
||||
endif()
|
||||
|
||||
# Add the cpython as an external project that will be included in the build
|
||||
if(MSVC)
|
||||
if(CMAKE_CL_64)
|
||||
set(CPYTHON_PLATFORM x64)
|
||||
set(CPYTHON_BUILD_DIR amd64)
|
||||
else()
|
||||
set(CPYTHON_PLATFORM x86)
|
||||
set(CPYTHON_BUILD_DIR win32)
|
||||
endif()
|
||||
ExternalProject_Add(CPYTHON
|
||||
DOWNLOAD_COMMAND ""
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/dependencies/cpython
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND cd ${CMAKE_SOURCE_DIR}/dependencies/cpython && MSBuild.exe /p:Configuration=${CPYTHON_BUILD_TYPE} /property:Platform=${CPYTHON_PLATFORM} "PCBuild/python.vcxproj" /nologo /verbosity:minimal /consoleloggerparameters:summar
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
)
|
||||
else()
|
||||
ExternalProject_Add(CPYTHON
|
||||
DOWNLOAD_COMMAND ""
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/dependencies/cpython
|
||||
CONFIGURE_COMMAND cd ${CMAKE_SOURCE_DIR}/dependencies/cpython && ./configure --disable-static --enable-shared
|
||||
BUILD_COMMAND cd ${CMAKE_SOURCE_DIR}/dependencies/cpython && make
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
)
|
||||
endif()
|
||||
|
||||
set(CPYTHON_STDLIB_DIR ${CMAKE_SOURCE_DIR}/dependencies/cpython/Lib)
|
||||
if(MSVC)
|
||||
set(CPYTHON_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/dependencies/cpython/Include ${CMAKE_SOURCE_DIR}/dependencies/cpython/PC)
|
||||
set(CPYTHON_LIBRARY_DIR ${CMAKE_SOURCE_DIR}/dependencies/cpython/PCBuild/${CPYTHON_BUILD_DIR})
|
||||
if(CMAKE_BUILD_TYPE MATCHES "Debug")
|
||||
set(CPYTHON_BIN ${CMAKE_SOURCE_DIR}/dependencies/cpython/PCBuild/${CPYTHON_BUILD_DIR}/python314_d.dll)
|
||||
else()
|
||||
set(CPYTHON_BIN ${CMAKE_SOURCE_DIR}/dependencies/cpython/PCBuild/${CPYTHON_BUILD_DIR}/python314.dll)
|
||||
endif()
|
||||
else()
|
||||
set(CPYTHON_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/dependencies/cpython/Include ${CMAKE_SOURCE_DIR}/dependencies/cpython)
|
||||
set(CPYTHON_LIBRARY_DIR ${CMAKE_SOURCE_DIR}/dependencies/cpython)
|
||||
set(CPYTHON_LIBRARY python3.8m)
|
||||
set(CPYTHON_BIN ${CMAKE_SOURCE_DIR}/dependencies/dependencies/libpython3.8m.so)
|
||||
endif()
|
||||
|
||||
file(GLOB_RECURSE SOURCE
|
||||
"include/*.h"
|
||||
|
||||
"src/*.h"
|
||||
"src/*.cpp"
|
||||
)
|
||||
|
||||
add_library(${PROJECT_NAME} SHARED ${SRC})
|
||||
# Linking directories
|
||||
link_directories(${CPYTHON_LIBRARY_DIR})
|
||||
|
||||
add_library(${PROJECT_NAME} SHARED ${SOURCE})
|
||||
|
||||
# Dependencies
|
||||
add_dependencies(${PROJECT_NAME} CPYTHON)
|
||||
|
||||
target_compile_definitions(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
@@ -35,3 +97,21 @@ if(DEFINED OUT_FILE_SUFFIX)
|
||||
endif()
|
||||
|
||||
add_subdirectory(dependencies)
|
||||
target_link_libraries(${PROJECT_NAME} ${CPYTHON_LIBRARY})
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE pybind11::embed)
|
||||
|
||||
# Copy Python DLL to the build folder if different
|
||||
add_custom_command(
|
||||
TARGET ${PROJECT_NAME}
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-E copy_if_different ${CPYTHON_BIN} $<TARGET_FILE_DIR:${PROJECT_NAME}>
|
||||
)
|
||||
|
||||
# Copy the Python stdlib into the build folder (needed by the embedded python)
|
||||
add_custom_command(
|
||||
TARGET ${PROJECT_NAME}
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-E copy_directory ${CPYTHON_STDLIB_DIR} $<TARGET_FILE_DIR:${PROJECT_NAME}>/lib
|
||||
)
|
||||
1
dependencies/CMakeLists.txt
vendored
1
dependencies/CMakeLists.txt
vendored
@@ -1,4 +1,5 @@
|
||||
add_subdirectory(sqapi)
|
||||
add_subdirectory(pybind11)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
|
||||
1
dependencies/cpython
vendored
Submodule
1
dependencies/cpython
vendored
Submodule
Submodule dependencies/cpython added at d07dcce693
1
dependencies/pybind11
vendored
Submodule
1
dependencies/pybind11
vendored
Submodule
Submodule dependencies/pybind11 added at 75e48c5f95
Reference in New Issue
Block a user