From 76378c8990f9e5aa87998f7a7bf73108aa294e2e Mon Sep 17 00:00:00 2001 From: Sam Edwards Date: Sun, 19 Aug 2018 23:10:20 -0600 Subject: [PATCH] CMake: Ask Python for preferred binary extension suffix --- cmake/macros/Interrogate.cmake | 4 +--- dtool/Package.cmake | 29 +++++++++++++++++++------- dtool/src/interrogatedb/CMakeLists.txt | 1 + 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/cmake/macros/Interrogate.cmake b/cmake/macros/Interrogate.cmake index 5cbecfb626..44d2aed8e1 100644 --- a/cmake/macros/Interrogate.cmake +++ b/cmake/macros/Interrogate.cmake @@ -297,9 +297,7 @@ function(add_python_module module) LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/panda3d" PREFIX "" ) - if(WIN32 AND NOT CYGWIN) - set_target_properties(${module} PROPERTIES SUFFIX ".pyd") - endif() + set_target_properties(${module} PROPERTIES SUFFIX "${PYTHON_EXTENSION_SUFFIX}") install(TARGETS ${module} DESTINATION "${PYTHON_ARCH_INSTALL_DIR}/panda3d") diff --git a/dtool/Package.cmake b/dtool/Package.cmake index 468b123ea5..43b9fdc23b 100644 --- a/dtool/Package.cmake +++ b/dtool/Package.cmake @@ -22,13 +22,29 @@ if(HAVE_PYTHON) execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(False))" - OUTPUT_VARIABLE _LIB_DIR - OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_VARIABLE _LIB_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(True))" - OUTPUT_VARIABLE _ARCH_DIR - OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_VARIABLE _ARCH_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process( + COMMAND ${PYTHON_EXECUTABLE} + -c "from sysconfig import get_config_var as g; print((g('EXT_SUFFIX') or g('SO'))[:])" + OUTPUT_VARIABLE _EXT_SUFFIX + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(NOT _EXT_SUFFIX) + if(CYGWIN) + set(_EXT_SUFFIX ".dll") + elseif(WIN32) + set(_EXT_SUFFIX ".pyd") + else() + set(_EXT_SUFFIX ".so") + endif() + endif() set(PYTHON_LIB_INSTALL_DIR "${_LIB_DIR}" CACHE STRING "Path to the Python architecture-independent package directory.") @@ -36,9 +52,8 @@ if(HAVE_PYTHON) set(PYTHON_ARCH_INSTALL_DIR "${_ARCH_DIR}" CACHE STRING "Path to the Python architecture-dependent package directory.") - # Always include Python, because we include it pretty much everywhere - # though we don't usually want to link it in as well. - include_directories(${PYTHON_INCLUDE_DIRS}) + set(PYTHON_EXTENSION_SUFFIX "${_EXT_SUFFIX}" CACHE STRING + "Suffix for Python binary extension modules.") endif() # diff --git a/dtool/src/interrogatedb/CMakeLists.txt b/dtool/src/interrogatedb/CMakeLists.txt index c4d02f25a0..305e64efbe 100644 --- a/dtool/src/interrogatedb/CMakeLists.txt +++ b/dtool/src/interrogatedb/CMakeLists.txt @@ -67,6 +67,7 @@ add_custom_command( add_library(interrogatedb ${MODULE_TYPE} "${CMAKE_CURRENT_BINARY_DIR}/interrogatedb_module.cxx") +set_target_properties(interrogatedb PROPERTIES SUFFIX "${PYTHON_EXTENSION_SUFFIX}") target_use_packages(interrogatedb PYTHON) target_link_libraries(interrogatedb p3dtoolconfig)