diff options
Diffstat (limited to 'sources/pyside2')
-rw-r--r-- | sources/pyside2/CMakeLists.txt | 120 | ||||
-rw-r--r-- | sources/pyside2/libpyside/CMakeLists.txt | 6 | ||||
-rw-r--r-- | sources/pyside2/libpyside/PySide2Config-spec.cmake.in | 8 | ||||
-rw-r--r-- | sources/pyside2/libpyside/PySide2Config.cmake.in | 8 | ||||
-rw-r--r-- | sources/pyside2/libpyside/pyside2.pc.in | 2 | ||||
-rw-r--r-- | sources/pyside2/tests/pysidetest/CMakeLists.txt | 1 |
6 files changed, 58 insertions, 87 deletions
diff --git a/sources/pyside2/CMakeLists.txt b/sources/pyside2/CMakeLists.txt index 1c0c5c93e..4ac5afa85 100644 --- a/sources/pyside2/CMakeLists.txt +++ b/sources/pyside2/CMakeLists.txt @@ -21,90 +21,60 @@ else() find_package(PythonLibs 2.6) endif() -# Queries the python sysconfig for the abi flags which need to be inserted into extension suffixes. -# Only present starting with Python 3.2. -# Corresponding configure switches to single letter flags: -# --with-pymalloc -> m -# --with-pydebug -> d -# --with-unicode -> u (rare) -macro(get_python3_abi_flags) - if (NOT PYTHON_ABI_FLAGS) - execute_process( - COMMAND ${PYTHON_EXECUTABLE} -c "if True: - import sysconfig - print(sysconfig.get_config_var('abiflags')) - " - OUTPUT_VARIABLE PYTHON_ABI_FLAGS - OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() - message("PYTHON_ABI_FLAGS: " ${PYTHON_ABI_FLAGS}) -endmacro() +macro(get_python_extension_suffix) + # Result of imp.get_suffixes() depends on the platform, but generally looks something like: + # [('.cpython-34m-x86_64-linux-gnu.so', 'rb', 3), ('.cpython-34m.so', 'rb', 3), + # ('.abi3.so', 'rb', 3), ('.so', 'rb', 3), ('.py', 'r', 1), ('.pyc', 'rb', 2)] + # We pick the first most detailed one, strip of the file extension part. -macro(get_python_multi_arch_suffix) - # TODO: This part needs testing to check if it is available on Windows. - # It is present on macOS, but is not used yet. - # Result is something like 'x86_64-linux-gnu'. - if (NOT PYTHON_MULTIARCH_SUFFIX) - execute_process( - COMMAND ${PYTHON_EXECUTABLE} -c "if True: - import sysconfig - print(sysconfig.get_config_var('MULTIARCH')) - " - OUTPUT_VARIABLE PYTHON_MULTIARCH_SUFFIX - OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() - message("PYTHON_MULTIARCH_SUFFIX: " ${PYTHON_MULTIARCH_SUFFIX}) -endmacro() - -macro(get_python2_release_suffix) - # Result of imp.get_suffixes() is something like: - # [('_d.so', 'rb', 3), ('module_d.so', 'rb', 3), ('.x86_64-linux-gnu_d.so', 'rb', 3)] - # or alternatively the same but withut the '_d' part. - # The list comprehension is used to choose which suffix to include in library names. execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "if True: - import imp - print('_d' if any([tup[0].endswith('_d.so') for tup in imp.get_suffixes()]) else '') + import imp, re + first_suffix = imp.get_suffixes()[0][0] + res = re.search(r'^(.+)\\.', first_suffix) + if res: + first_suffix = res.group(1) + else: + first_suffix = '' + print(first_suffix) " - OUTPUT_VARIABLE PYTHON_MODULE_RELEASE_SUFFIX + OUTPUT_VARIABLE PYTHON_EXTENSION_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) - message("PYTHON_MODULE_RELEASE_SUFFIX: " ${PYTHON_MODULE_RELEASE_SUFFIX}) + message("PYTHON_EXTENSION_SUFFIX: " ${PYTHON_EXTENSION_SUFFIX}) endmacro() -if (UNIX AND NOT APPLE) +# Note the quirk that UNIX includes Apple! +if (UNIX) if (NOT PYTHON_EXTENSION_SUFFIX) - get_python_multi_arch_suffix() - # The suffix added to .so libraries should be differenet between Python 2 and 3. - # The position of the multiarch suffix is different, and the way the debug flag is set - # computed differently. - # In Python 2 there is no standard way to query if the python interpeter was built in debug or - # release build (sysconfig.get_config_var('Py_Debug') can have a different value than you would - # expect if you do a custom Python build). The solution to query for the import - # suffixes and check if _d is present there. It is present on Linux distribution - # packages of Python, but not in custom built Python builds, because the distros apply their - # custom patches too append the '_d's. - # In Python 3 (starting with 3.2) there is a standard way to check if '_d' needs to be added, - # as well as any other letters, by querying the abiflags sysconfig variable. - if (PYTHON_VERSION_MAJOR EQUAL 2) - get_python2_release_suffix() - # The suffix of Python module files (e.g. QtCore.x86_64-linux-gnu_d.so) as well as library - # libraries (e.g. libpyside2.x86_64-linux-gnu.so). - if(PYTHON_MULTIARCH_SUFFIX) - set(PYTHON_EXTENSION_SUFFIX ".${PYTHON_MULTIARCH_SUFFIX}") - endif() - set(PYTHON_EXTENSION_SUFFIX "${PYTHON_EXTENSION_SUFFIX}${PYTHON_MODULE_RELEASE_SUFFIX}") - elseif (PYTHON_VERSION_MAJOR EQUAL 3) - get_python3_abi_flags() - set(PYTHON_EXTENSION_SUFFIX ".cpython-${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}${PYTHON_ABI_FLAGS}") - if(PYTHON_MULTIARCH_SUFFIX) - set(PYTHON_EXTENSION_SUFFIX "${PYTHON_EXTENSION_SUFFIX}-${PYTHON_MULTIARCH_SUFFIX}") - endif() - else() - message(FATAL_ERROR "Unsupported PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH}!") - endif() + get_python_extension_suffix() endif() - message("PYTHON_EXTENSION_SUFFIX: " ${PYTHON_EXTENSION_SUFFIX}) -endif () + + if (NOT PYTHON_CONFIG_SUFFIX) + if (PYTHON_VERSION_MAJOR EQUAL 2) + set(PYTHON_CONFIG_SUFFIX "-python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") + if (PYTHON_EXTENSION_SUFFIX) + set(PYTHON_CONFIG_SUFFIX "${PYTHON_CONFIG_SUFFIX}${PYTHON_EXTENSION_SUFFIX}") + endif() + elseif (PYTHON_VERSION_MAJOR EQUAL 3) + set(PYTHON_CONFIG_SUFFIX "${PYTHON_EXTENSION_SUFFIX}") + endif() + endif() + + if (NOT PYTHON_SHARED_LIBRARY_SUFFIX) + set(PYTHON_SHARED_LIBRARY_SUFFIX "${PYTHON_CONFIG_SUFFIX}") + + # Append a "v" to disambiguate the python version and the pyside version in the + # shared library file name. + if (APPLE AND PYTHON_VERSION_MAJOR EQUAL 2) + set(PYTHON_SHARED_LIBRARY_SUFFIX "${PYTHON_SHARED_LIBRARY_SUFFIX}v") + endif() + endif() + + + message(STATUS "PYTHON_EXTENSION_SUFFIX: ${PYTHON_EXTENSION_SUFFIX}") + message(STATUS "PYTHON_CONFIG_SUFFIX: ${PYTHON_CONFIG_SUFFIX}") + message(STATUS "PYTHON_SHARED_LIBRARY_SUFFIX: ${PYTHON_SHARED_LIBRARY_SUFFIX}") +endif() find_package(Shiboken2 2.0.0 REQUIRED) find_package(Qt5 5.6.0 REQUIRED COMPONENTS Core) diff --git a/sources/pyside2/libpyside/CMakeLists.txt b/sources/pyside2/libpyside/CMakeLists.txt index 481062caa..05e383307 100644 --- a/sources/pyside2/libpyside/CMakeLists.txt +++ b/sources/pyside2/libpyside/CMakeLists.txt @@ -100,7 +100,7 @@ target_link_libraries(pyside2 set_target_properties(pyside2 PROPERTIES VERSION ${BINDING_API_VERSION} SOVERSION "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}" - OUTPUT_NAME "pyside2${pyside2_SUFFIX}${SHIBOKEN_PYTHON_EXTENSION_SUFFIX}" + OUTPUT_NAME "pyside2${pyside2_SUFFIX}${SHIBOKEN_PYTHON_SHARED_LIBRARY_SUFFIX}" DEFINE_SYMBOL PYSIDE_EXPORTS) if(Qt5Core_VERSION VERSION_GREATER "5.7.1") @@ -146,7 +146,7 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pyside2.pc.in" configure_file("${CMAKE_CURRENT_SOURCE_DIR}/PySide2Config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/PySide2Config.cmake" @ONLY) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/PySide2Config-spec.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/PySide2Config${SHIBOKEN_PYTHON_EXTENSION_SUFFIX}.cmake" @ONLY) + "${CMAKE_CURRENT_BINARY_DIR}/PySide2Config${SHIBOKEN_PYTHON_CONFIG_SUFFIX}.cmake" @ONLY) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/PySide2ConfigVersion.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/PySide2ConfigVersion.cmake" @ONLY) @@ -160,7 +160,7 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pyside2${pyside2_SUFFIX}.pc" DESTINATION "${LIB_INSTALL_DIR}/pkgconfig") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/PySide2Config.cmake" DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide2-${BINDING_API_VERSION}") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/PySide2Config${SHIBOKEN_PYTHON_EXTENSION_SUFFIX}.cmake" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/PySide2Config${SHIBOKEN_PYTHON_CONFIG_SUFFIX}.cmake" DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide2-${BINDING_API_VERSION}") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/PySide2ConfigVersion.cmake" DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide2-${BINDING_API_VERSION}") diff --git a/sources/pyside2/libpyside/PySide2Config-spec.cmake.in b/sources/pyside2/libpyside/PySide2Config-spec.cmake.in index 205b6f10e..822b8e4c2 100644 --- a/sources/pyside2/libpyside/PySide2Config-spec.cmake.in +++ b/sources/pyside2/libpyside/PySide2Config-spec.cmake.in @@ -6,13 +6,13 @@ SET(PYSIDE_INCLUDE_DIR "@CMAKE_INSTALL_PREFIX@/include/PySide2@pyside2_SUFFIX@") # Platform specific library names if(MSVC) - SET(PYSIDE_LIBRARY "@LIB_INSTALL_DIR@/@CMAKE_SHARED_LIBRARY_PREFIX@pyside2@pyside2_SUFFIX@@LIBRARY_OUTPUT_SUFFIX@@SHIBOKEN_PYTHON_EXTENSION_SUFFIX@.lib") + SET(PYSIDE_LIBRARY "@LIB_INSTALL_DIR@/@CMAKE_SHARED_LIBRARY_PREFIX@pyside2@pyside2_SUFFIX@@LIBRARY_OUTPUT_SUFFIX@@PYTHON_SHARED_LIBRARY_SUFFIX@.lib") elseif(CYGWIN) - SET(PYSIDE_LIBRARY "@LIB_INSTALL_DIR@/@CMAKE_SHARED_LIBRARY_PREFIX@pyside2@pyside2_SUFFIX@@LIBRARY_OUTPUT_SUFFIX@@SHIBOKEN_PYTHON_EXTENSION_SUFFIX@@CMAKE_IMPORT_LIBRARY_SUFFIX@") + SET(PYSIDE_LIBRARY "@LIB_INSTALL_DIR@/@CMAKE_SHARED_LIBRARY_PREFIX@pyside2@pyside2_SUFFIX@@LIBRARY_OUTPUT_SUFFIX@@PYTHON_SHARED_LIBRARY_SUFFIX@@CMAKE_IMPORT_LIBRARY_SUFFIX@") elseif(WIN32) - SET(PYSIDE_LIBRARY "@CMAKE_INSTALL_PREFIX@/bin/@CMAKE_SHARED_LIBRARY_PREFIX@pyside2@pyside2_SUFFIX@@LIBRARY_OUTPUT_SUFFIX@@SHIBOKEN_PYTHON_EXTENSION_SUFFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@") + SET(PYSIDE_LIBRARY "@CMAKE_INSTALL_PREFIX@/bin/@CMAKE_SHARED_LIBRARY_PREFIX@pyside2@pyside2_SUFFIX@@LIBRARY_OUTPUT_SUFFIX@@PYTHON_SHARED_LIBRARY_SUFFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@") else() - SET(PYSIDE_LIBRARY "@LIB_INSTALL_DIR@/@CMAKE_SHARED_LIBRARY_PREFIX@pyside2@pyside2_SUFFIX@@LIBRARY_OUTPUT_SUFFIX@@SHIBOKEN_PYTHON_EXTENSION_SUFFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@") + SET(PYSIDE_LIBRARY "@LIB_INSTALL_DIR@/@CMAKE_SHARED_LIBRARY_PREFIX@pyside2@pyside2_SUFFIX@@LIBRARY_OUTPUT_SUFFIX@@PYTHON_SHARED_LIBRARY_SUFFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@") endif() SET(PYSIDE_PYTHONPATH "@SITE_PACKAGE@") SET(PYSIDE_TYPESYSTEMS "@CMAKE_INSTALL_PREFIX@/share/PySide2@pyside2_SUFFIX@/typesystems") diff --git a/sources/pyside2/libpyside/PySide2Config.cmake.in b/sources/pyside2/libpyside/PySide2Config.cmake.in index cf3e6d1a6..352a89997 100644 --- a/sources/pyside2/libpyside/PySide2Config.cmake.in +++ b/sources/pyside2/libpyside/PySide2Config.cmake.in @@ -1,5 +1,5 @@ -if (NOT PYTHON_BASENAME) - message(STATUS "PySide2Config: Using default python: @SHIBOKEN_PYTHON_EXTENSION_SUFFIX@") - SET(PYTHON_BASENAME @SHIBOKEN_PYTHON_EXTENSION_SUFFIX@) +if (NOT PYTHON_CONFIG_SUFFIX) + message(STATUS "PySide2Config: Using default python: @SHIBOKEN_PYTHON_CONFIG_SUFFIX@") + SET(PYTHON_CONFIG_SUFFIX @SHIBOKEN_PYTHON_CONFIG_SUFFIX@) endif() -include(@LIB_INSTALL_DIR@/cmake/PySide2-@BINDING_API_VERSION@/PySide2Config${PYTHON_BASENAME}.cmake) +include(@LIB_INSTALL_DIR@/cmake/PySide2-@BINDING_API_VERSION@/PySide2Config${PYTHON_CONFIG_SUFFIX}.cmake) diff --git a/sources/pyside2/libpyside/pyside2.pc.in b/sources/pyside2/libpyside/pyside2.pc.in index 4f396ac72..4f8b5e6e6 100644 --- a/sources/pyside2/libpyside/pyside2.pc.in +++ b/sources/pyside2/libpyside/pyside2.pc.in @@ -8,7 +8,7 @@ pythonpath=@SITE_PACKAGE@ Name: PySide2@pyside2_SUFFIX@ Description: Support library for Python bindings of Qt5-based libraries. Version: @BINDING_API_VERSION_FULL@ -Libs: -L${libdir} -lpyside2@pyside2_SUFFIX@@SHIBOKEN_PYTHON_EXTENSION_SUFFIX@@LIBRARY_OUTPUT_SUFFIX@ +Libs: -L${libdir} -lpyside2@pyside2_SUFFIX@@SHIBOKEN_PYTHON_CONFIG_SUFFIX@@LIBRARY_OUTPUT_SUFFIX@ Cflags: -I${includedir} Requires: shiboken2 diff --git a/sources/pyside2/tests/pysidetest/CMakeLists.txt b/sources/pyside2/tests/pysidetest/CMakeLists.txt index 68916490b..0702d6085 100644 --- a/sources/pyside2/tests/pysidetest/CMakeLists.txt +++ b/sources/pyside2/tests/pysidetest/CMakeLists.txt @@ -88,6 +88,7 @@ target_link_libraries(pysidetest add_library(testbinding MODULE ${testbinding_SRC}) set_property(TARGET testbinding PROPERTY PREFIX "") +set_property(TARGET testbinding PROPERTY OUTPUT_NAME "testbinding${PYTHON_EXTENSION_SUFFIX}") if(WIN32) set_target_properties(testbinding PROPERTIES SUFFIX ".pyd") endif() |