diff options
Diffstat (limited to 'sources/shiboken6/libshiboken/CMakeLists.txt')
-rw-r--r-- | sources/shiboken6/libshiboken/CMakeLists.txt | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/sources/shiboken6/libshiboken/CMakeLists.txt b/sources/shiboken6/libshiboken/CMakeLists.txt new file mode 100644 index 000000000..4504e7844 --- /dev/null +++ b/sources/shiboken6/libshiboken/CMakeLists.txt @@ -0,0 +1,157 @@ +project(libshiboken) + +macro(get_numpy_location) + execute_process( + COMMAND ${PYTHON_EXECUTABLE} -c "if True: + import sys + import os + numpy = '' + for p in sys.path: + if 'site-' in p: + numpy = os.path.join(p, 'numpy') + if os.path.exists(numpy): + print(os.path.realpath(numpy)) + break" + OUTPUT_VARIABLE PYTHON_NUMPY_LOCATION + OUTPUT_STRIP_TRAILING_WHITESPACE) + message(STATUS "PYTHON_NUMPY_LOCATION: " ${PYTHON_NUMPY_LOCATION}) +endmacro() + +option(ENABLE_VERSION_SUFFIX "Used to use current version in suffix to generated files. This is used to allow multiples versions installed simultaneous." FALSE) +if(ENABLE_VERSION_SUFFIX) + set(shiboken6_SUFFIX "-${shiboken_MAJOR_VERSION}.${shiboken_MINOR_VERSION}") +else() + set(shiboken6_SUFFIX "") +endif() + +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/sbkversion.h.in" + "${CMAKE_CURRENT_BINARY_DIR}/sbkversion.h" @ONLY) +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/embed/signature_bootstrap.py" + "${CMAKE_CURRENT_BINARY_DIR}/embed/signature_bootstrap.py" @ONLY) + +add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/embed/signature_bootstrap_inc.h" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/embed/signature_inc.h" + COMMAND ${PYTHON_EXECUTABLE} -E + "${CMAKE_CURRENT_SOURCE_DIR}/embed/embedding_generator.py" + --cmake-dir "${CMAKE_CURRENT_BINARY_DIR}/embed" + --limited-api ${PYTHON_LIMITED_API}) + +set(libshiboken_MAJOR_VERSION ${shiboken_MAJOR_VERSION}) +set(libshiboken_MINOR_VERSION ${shiboken_MINOR_VERSION}) +set(libshiboken_MICRO_VERSION ${shiboken_MICRO_VERSION}) +set(libshiboken_VERSION "${libshiboken_MAJOR_VERSION}.${libshiboken_MINOR_VERSION}.${libshiboken_MICRO_VERSION}") +set(libshiboken_SOVERSION "${shiboken6_library_so_version}") + +set(libshiboken_SRC +basewrapper.cpp +debugfreehook.cpp +gilstate.cpp +helper.cpp +sbkarrayconverter.cpp +sbkconverter.cpp +sbkenum.cpp +sbkmodule.cpp +sbkstring.cpp +sbkstaticstrings.cpp +bindingmanager.cpp +threadstatesaver.cpp +shibokenbuffer.cpp +qapp_macro.cpp +pep384impl.cpp +voidptr.cpp +bufferprocs_py37.cpp + +embed/signature_bootstrap_inc.h +embed/signature_inc.h + +signature/signature.cpp +signature/signature_globals.cpp +signature/signature_extend.cpp +signature/signature_helper.cpp +) + +get_numpy_location() + +if (NOT "${PYTHON_NUMPY_LOCATION}" STREQUAL "") + list(APPEND libshiboken_SRC sbknumpyarrayconverter.cpp) +endif() + +set(APIEXTRACTOR_EXTRA_INCLUDES ${APIEXTRACTOR_EXTRA_INCLUDES} ${LIBXSLT_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR}) + +add_library(libshiboken SHARED ${libshiboken_SRC}) +add_library(Shiboken6::libshiboken ALIAS libshiboken) + +target_include_directories(libshiboken PUBLIC + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> + $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> + $<INSTALL_INTERFACE:include/shiboken6> +) + +if (NOT "${PYTHON_NUMPY_LOCATION}" STREQUAL "") + target_include_directories(libshiboken PRIVATE ${PYTHON_NUMPY_LOCATION}/core/include) + target_compile_definitions(libshiboken PRIVATE -DHAVE_NUMPY + PRIVATE -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION) + +endif() + +shiboken_compute_python_includes() +# On Windows we need to link against the python.lib import library. +# On macOS and Linux we don't link against the python shared / static library, +# the dynamic linker will pick up the python symbols at runtime automatically. +shiboken_compute_python_libraries() + +if(PYTHON_LIMITED_API) + target_compile_definitions(libshiboken PUBLIC "-DPy_LIMITED_API=0x03050000") +endif() + +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + if(PYTHON_WITH_DEBUG) + target_compile_definitions(libshiboken PUBLIC "-DPy_DEBUG") + endif() + if (PYTHON_WITH_COUNT_ALLOCS) + target_compile_definitions(libshiboken PUBLIC "-DCOUNT_ALLOCS") + endif() +elseif(CMAKE_BUILD_TYPE STREQUAL "Release") + target_compile_definitions(libshiboken PUBLIC "-DNDEBUG") +endif() + +set_target_properties(libshiboken PROPERTIES OUTPUT_NAME "shiboken6${shiboken6_SUFFIX}${PYTHON_SHARED_LIBRARY_SUFFIX}" + VERSION ${libshiboken_VERSION} + SOVERSION ${libshiboken_SOVERSION} + DEFINE_SYMBOL BUILD_LIBSHIBOKEN) + +install(FILES + autodecref.h + basewrapper.h + bindingmanager.h + gilstate.h + helper.h + sbkarrayconverter.h + sbkconverter.h + sbkenum.h + sbkmodule.h + sbkdbg.h + sbkstring.h + sbkstaticstrings.h + shiboken.h + shibokenmacros.h + threadstatesaver.h + shibokenbuffer.h + sbkpython.h + pep384impl.h + qapp_macro.h + voidptr.h + bufferprocs_py37.h + "${CMAKE_CURRENT_BINARY_DIR}/sbkversion.h" + + signature.h + signature/signature_p.h + + DESTINATION include/shiboken6${shiboken6_SUFFIX}) +install(TARGETS libshiboken EXPORT Shiboken6Targets + LIBRARY DESTINATION "${LIB_INSTALL_DIR}" + ARCHIVE DESTINATION "${LIB_INSTALL_DIR}" + RUNTIME DESTINATION bin) +install(EXPORT Shiboken6Targets NAMESPACE Shiboken6:: + DESTINATION ${LIB_INSTALL_DIR}/cmake/Shiboken6-${shiboken6_VERSION}) |