From 05e328476f2d6ef8a0f3f44aca1e5b1cdb7499fc Mon Sep 17 00:00:00 2001 From: Shyamnath Premnadh Date: Wed, 28 May 2025 14:44:23 +0200 Subject: [PATCH] PySide6: Cleanup CMake configuration files - Variables PYSIDE_PYTHONPATH, PYSIDE_TYPESYSTEMS, PYSIDE_GLUE were corrected to correctly reflect the paths for the build-tree in the CMake configuration files during super-project build of PySide6. These were also corrected for the install-tree based on the wheel structure. - Introduce two new CMake variables PYSIDE_PYTHON_CONFIG_SUFFIX and PYSIDE_SO_VERSION shipped with the CMake config files. - Fix pyside6qml to use the export set of pyside6. Change-Id: I3b177bfed31af1d0e3a13fcc9469019a7f349d22 Reviewed-by: Friedemann Kleint --- sources/pyside6/cmake/PySideSetup.cmake | 1 + sources/pyside6/libpyside/CMakeLists.txt | 37 ++++++++++++------- .../libpyside/PySide6Config-spec.cmake.in | 4 ++ 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/sources/pyside6/cmake/PySideSetup.cmake b/sources/pyside6/cmake/PySideSetup.cmake index 71c8206465..72d6a1ccf6 100644 --- a/sources/pyside6/cmake/PySideSetup.cmake +++ b/sources/pyside6/cmake/PySideSetup.cmake @@ -52,6 +52,7 @@ set(BINDING_API_MINOR_VERSION "${pyside_MINOR_VERSION}") set(BINDING_API_MICRO_VERSION "${pyside_MICRO_VERSION}") set(BINDING_API_PRE_RELEASE_VERSION_TYPE "${pyside_PRE_RELEASE_VERSION_TYPE}") set(BINDING_API_PRE_RELEASE_VERSION "${pyside_PRE_RELEASE_VERSION}") +set(pyside6_library_so_version "${SHIBOKEN_SO_VERSION}") # Detect if the Python interpreter is actually PyPy execute_process( diff --git a/sources/pyside6/libpyside/CMakeLists.txt b/sources/pyside6/libpyside/CMakeLists.txt index 089e1c74e2..75c2328744 100644 --- a/sources/pyside6/libpyside/CMakeLists.txt +++ b/sources/pyside6/libpyside/CMakeLists.txt @@ -146,28 +146,29 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pyside6.pc.in" include(CMakePackageConfigHelpers) # Build-tree / super project package config file. -set(PYSIDE_PYTHONPATH "${pysidebindings_BINARY_DIR}/PySide6") -set(PYSIDE_TYPESYSTEMS "${pysidebindings_SOURCE_DIR}/PySide6/templates/") -set(PYSIDE_GLUE "${pysidebindings_SOURCE_DIR}/PySide6/glue") +set(PYSIDE_PYTHONPATH "${PYTHON_SITE_PACKAGES}/PySide6") +set(PYSIDE_TYPESYSTEMS "${CMAKE_INSTALL_PREFIX}/share/PySide6${pyside6_SUFFIX}/typesystems") +set(PYSIDE_GLUE "${CMAKE_INSTALL_PREFIX}/share/PySide6${pyside6_SUFFIX}/glue") configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/PySide6Config-spec.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/PySide6Config${SHIBOKEN_PYTHON_CONFIG_SUFFIX}.cmake" - INSTALL_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" - PATH_VARS PYSIDE_PYTHONPATH PYSIDE_TYPESYSTEMS PYSIDE_GLUE - INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}" + INSTALL_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" + PATH_VARS PYSIDE_PYTHONPATH PYSIDE_TYPESYSTEMS PYSIDE_GLUE + INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}" ) -set(PYSIDE_PYTHONPATH "${PYTHON_SITE_PACKAGES}/PySide6") -set(PYSIDE_TYPESYSTEMS "${CMAKE_INSTALL_PREFIX}/share/PySide6${pyside6_SUFFIX}/typesystems") -set(PYSIDE_GLUE "${CMAKE_INSTALL_PREFIX}/share/PySide6${pyside6_SUFFIX}/glue") +# Install-tree / wheel configuration +set(PYSIDE_PYTHONPATH "") +set(PYSIDE_TYPESYSTEMS "typesystems") +set(PYSIDE_GLUE "glue") +set(PYSIDE_SOVERSION "${pyside6_library_so_version}") -# Install-tree / relocatable package config file. configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/PySide6Config-spec.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/install/PySide6Config${SHIBOKEN_PYTHON_CONFIG_SUFFIX}.cmake" - INSTALL_DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6" - PATH_VARS PYSIDE_PYTHONPATH PYSIDE_TYPESYSTEMS PYSIDE_GLUE + INSTALL_DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6" + PATH_VARS PYSIDE_PYTHONPATH PYSIDE_TYPESYSTEMS PYSIDE_GLUE ) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/PySide6Config.cmake.in" @@ -178,12 +179,20 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/PySide6ConfigVersion.cmake.in" install(FILES ${libpyside_HEADERS} DESTINATION ${BINDING_NAME}${pyside6_SUFFIX}/include) +# build-time installation install(TARGETS pyside6 EXPORT PySide6Targets LIBRARY DESTINATION "${LIB_INSTALL_DIR}" ARCHIVE DESTINATION "${LIB_INSTALL_DIR}" RUNTIME DESTINATION bin) -install(EXPORT PySide6Targets NAMESPACE PySide6:: - DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6") + +# wheel installation +set_target_properties(pyside6 PROPERTIES + VERSION ${PYSIDE_SOVERSION}) + +install(TARGETS pyside6 EXPORT PySide6WheelTargets + LIBRARY DESTINATION "PySide6" + ARCHIVE DESTINATION "PySide6" + RUNTIME DESTINATION "PySide6") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pyside6${pyside6_SUFFIX}.pc" DESTINATION "${LIB_INSTALL_DIR}/pkgconfig") diff --git a/sources/pyside6/libpyside/PySide6Config-spec.cmake.in b/sources/pyside6/libpyside/PySide6Config-spec.cmake.in index fd3de1e759..f9e9a4900e 100644 --- a/sources/pyside6/libpyside/PySide6Config-spec.cmake.in +++ b/sources/pyside6/libpyside/PySide6Config-spec.cmake.in @@ -10,6 +10,10 @@ if (NOT TARGET PySide6::pyside6) include("${CMAKE_CURRENT_LIST_DIR}/PySide6Targets.cmake") endif() +# set static variables +set(PYSIDE_PYTHON_CONFIG_SUFFIX "@PYTHON_CONFIG_SUFFIX@") +set(PYSIDE_SO_VERSION "@pyside6_library_so_version@") + # Set relocatable variables. set_and_check(PYSIDE_PYTHONPATH "@PACKAGE_PYSIDE_PYTHONPATH@") set_and_check(PYSIDE_TYPESYSTEMS "@PACKAGE_PYSIDE_TYPESYSTEMS@")