1- cmake_minimum_required (VERSION 3.10 )
2- project (numpy)
1+ cmake_minimum_required (VERSION 3.15...3.26 )
2+
3+ if (NOT DEFINED SKBUILD_PROJECT_NAME)
4+ set (SKBUILD_PROJECT_NAME "pocket_numpy" )
5+ endif ()
6+ if (NOT DEFINED PROJECT_VERSION )
7+ set (PROJECT_VERSION "dev" )
8+ endif ()
9+
10+ # https://scikit-build-core.readthedocs.io/en/latest/cmakelists.html#accessing-information
11+ project (
12+ ${SKBUILD_PROJECT_NAME}
13+ VERSION ${SKBUILD_PROJECT_VERSION}
14+ LANGUAGES CXX )
315
416# Set C++ standard
517set (CMAKE_CXX_STANDARD 17)
@@ -10,6 +22,11 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
1022set (CMAKE_EXPORT_COMPILE_COMMANDS ON )
1123set (CMAKE_INCLUDE_CURRENT_DIR ON )
1224
25+ # std::visit requires macOS 10.14+
26+ if (APPLE AND CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS "10.14" )
27+ set (CMAKE_OSX_DEPLOYMENT_TARGET "10.14" CACHE STRING "Minimum macOS deployment version" FORCE )
28+ endif ()
29+
1330# set(CMAKE_BUILD_TYPE "Debug")
1431if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "" )
1532 set (CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE )
@@ -51,14 +68,25 @@ if(NOT SHOW_XTENSOR_WARNINGS)
5168endif ()
5269
5370# Create numpy static library
54- add_library (${PROJECT_NAME} STATIC src/numpy.cpp )
71+ add_library (numpy STATIC src/numpy.cpp )
5572
5673# Define PY_DYNAMIC_MODULE for numpy
57- target_compile_definitions (${PROJECT_NAME} PRIVATE PY_DYNAMIC_MODULE )
74+ target_compile_definitions (numpy PRIVATE PY_DYNAMIC_MODULE )
5875
5976# Link numpy with pocketpy
60- target_link_libraries (${PROJECT_NAME} PUBLIC pocketpy )
77+ target_link_libraries (numpy PUBLIC pocketpy )
6178
6279add_executable (pocketpy_cli src/main.cpp )
6380set_target_properties (pocketpy_cli PROPERTIES OUTPUT_NAME pocketpy )
64- target_link_libraries (pocketpy_cli ${PROJECT_NAME} )
81+ set_target_properties (pocketpy_cli PROPERTIES SUFFIX ".exe" )
82+ target_link_libraries (pocketpy_cli numpy )
83+ install (TARGETS pocketpy_cli DESTINATION ${PROJECT_NAME} )
84+
85+ # https://scikit-build-core.readthedocs.io/en/latest/getting_started.html
86+ find_package (Python REQUIRED COMPONENTS Interpreter Development.Module )
87+ find_package (pybind11 CONFIG REQUIRED )
88+
89+ python_add_library (_core MODULE src/pybind.cpp WITH_SOABI )
90+ target_link_libraries (_core PRIVATE pybind11::headers )
91+ target_compile_definitions (_core PRIVATE VERSION_INFO=${PROJECT_VERSION} )
92+ install (TARGETS _core DESTINATION ${PROJECT_NAME} )
0 commit comments