From ac77cd779ed183d9987f75c35af4a9a9b36e5916 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Tue, 18 Feb 2025 23:13:05 -0600 Subject: [PATCH] CMake: PySide cleanup --- cMake/FindPySide6.cmake | 22 +++++++++++-------- .../SetupShibokenAndPyside.cmake | 19 +++++++++------- cMake/FreeCadMacros.cmake | 15 ++++++++----- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/cMake/FindPySide6.cmake b/cMake/FindPySide6.cmake index 2b0a58069e..a1f1746755 100644 --- a/cMake/FindPySide6.cmake +++ b/cMake/FindPySide6.cmake @@ -5,18 +5,22 @@ find_package(PySide6 CONFIG QUIET) if(NOT PySide6_FOUND) - if(NOT PySide6_INCLUDE_DIR AND TARGET PySide6::pyside6) - get_property(PySide6_INCLUDE_DIR TARGET PySide6::pyside6 PROPERTY INTERFACE_INCLUDE_DIRECTORIES) + if(NOT PySide6_INCLUDE_DIRS AND TARGET PySide6::pyside6) + get_property(PySide6_INCLUDE_DIRS TARGET PySide6::pyside6 PROPERTY INTERFACE_INCLUDE_DIRECTORIES) endif() - if(NOT PySide6_INCLUDE_DIR) + if(NOT PySide6_INCLUDE_DIRS) find_pip_package(PySide6) - if (PySide6_FOUND) - set(PYSIDE_INCLUDE_DIR ${PySide6_INCLUDE_DIRS} CACHE INTERNAL "") - set(PYSIDE_LIBRARY ${PySide6_LIBRARIES} CACHE INTERNAL "") - set(PYSIDE_FOUND TRUE CACHE BOOL OFF) - set(PYSIDE_MAJOR_VERSION 6 CACHE INTERNAL 6) - endif() + else() + set(PySide6_FOUND ON CACHE BOOL OFF) endif() endif() + +# Also provide the old-style variables so we don't have to update everything yet +if (PySide6_FOUND) + set(PYSIDE_INCLUDE_DIR ${PySide6_INCLUDE_DIRS} CACHE INTERNAL "") + set(PYSIDE_LIBRARY ${PySide6_LIBRARIES} CACHE INTERNAL "") + set(PYSIDE_FOUND TRUE CACHE BOOL "(Backwards compatibility PySide6->PySide2) Whether PySide was found") + set(PYSIDE_MAJOR_VERSION 6 CACHE INTERNAL 6) +endif() diff --git a/cMake/FreeCAD_Helpers/SetupShibokenAndPyside.cmake b/cMake/FreeCAD_Helpers/SetupShibokenAndPyside.cmake index 9b8c35ec1d..45c10fc2f4 100644 --- a/cMake/FreeCAD_Helpers/SetupShibokenAndPyside.cmake +++ b/cMake/FreeCAD_Helpers/SetupShibokenAndPyside.cmake @@ -59,15 +59,18 @@ macro(SetupShibokenAndPyside) find_package(PySide${PYSIDE_MAJOR_VERSION} QUIET) - if(NOT PYSIDE_INCLUDE_DIR AND TARGET PySide${PYSIDE_MAJOR_VERSION}::pyside${PYSIDE_MAJOR_VERSION}) - get_property(PYSIDE_INCLUDE_DIR TARGET PySide${PYSIDE_MAJOR_VERSION}::pyside${PYSIDE_MAJOR_VERSION} PROPERTY INTERFACE_INCLUDE_DIRECTORIES) - endif(NOT PYSIDE_INCLUDE_DIR AND TARGET PySide${PYSIDE_MAJOR_VERSION}::pyside${PYSIDE_MAJOR_VERSION}) + if(${PYSIDE_MAJOR_VERSION} EQUAL 5) + # Our internal FindPySide6.cmake file already provides these for PySide6 + if(NOT PYSIDE_INCLUDE_DIR AND TARGET PySide${PYSIDE_MAJOR_VERSION}::pyside${PYSIDE_MAJOR_VERSION}) + get_property(PYSIDE_INCLUDE_DIR TARGET PySide${PYSIDE_MAJOR_VERSION}::pyside${PYSIDE_MAJOR_VERSION} PROPERTY INTERFACE_INCLUDE_DIRECTORIES) + endif(NOT PYSIDE_INCLUDE_DIR AND TARGET PySide${PYSIDE_MAJOR_VERSION}::pyside${PYSIDE_MAJOR_VERSION}) - if(NOT PYSIDE_INCLUDE_DIR) - find_pip_package(PySide${PYSIDE_MAJOR_VERSION}) - if (PySide${PYSIDE_MAJOR_VERSION}_FOUND) - set(PYSIDE_INCLUDE_DIR ${PySide${PYSIDE_MAJOR_VERSION}_INCLUDE_DIRS}) - set(PYSIDE_LIBRARY ${PySide${PYSIDE_MAJOR_VERSION}_LIBRARIES}) + if(NOT PYSIDE_INCLUDE_DIR) + find_pip_package(PySide${PYSIDE_MAJOR_VERSION}) + if (PySide${PYSIDE_MAJOR_VERSION}_FOUND) + set(PYSIDE_INCLUDE_DIR ${PySide${PYSIDE_MAJOR_VERSION}_INCLUDE_DIRS}) + set(PYSIDE_LIBRARY ${PySide${PYSIDE_MAJOR_VERSION}_LIBRARIES}) + endif() endif() endif() diff --git a/cMake/FreeCadMacros.cmake b/cMake/FreeCadMacros.cmake index e30437af12..c650625ed9 100644 --- a/cMake/FreeCadMacros.cmake +++ b/cMake/FreeCadMacros.cmake @@ -266,6 +266,8 @@ ENDMACRO(SET_PYTHON_PREFIX_SUFFIX) # Locate the include directory for a pip-installed package -- uses pip show to find the base pip # install directory, and then appends the package name and "/include" to the end macro(find_pip_package PACKAGE) + unset(${PACKAGE}_FOUND) # Remove from local scope + unset(${PACKAGE}_FOUND CACHE) # Remove from CMake cache (if it exists) execute_process( COMMAND ${Python3_EXECUTABLE} -m pip show ${PACKAGE} RESULT_VARIABLE FAILURE @@ -300,15 +302,18 @@ macro(find_pip_package PACKAGE) file(GLOB OPT_LIBRARIES "${PIP_PACKAGE_LOCATION}/${PIP_PACKAGE_NAME}/*${PIP_LIB_NAME}*.so.*") endif() if (OPT_LIBRARIES AND DEBUG_LIBRARIES) - set(${PACKAGE}_LIBRARIES optimized ${OPT_LIBRARIES} debug ${DEBUG_LIBRARIES} CACHE PATH "") + set(${PACKAGE}_LIBRARIES optimized ${OPT_LIBRARIES} debug ${DEBUG_LIBRARIES} CACHE PATH "Location of the ${PACKAGE} libraries") elseif(OPT_LIBRARIES) - set(${PACKAGE}_LIBRARIES ${OPT_LIBRARIES} CACHE PATH "") + set(${PACKAGE}_LIBRARIES ${OPT_LIBRARIES} CACHE PATH "Location of the ${PACKAGE} optimized libraries") elseif(DEBUG_LIBRARIES) - set(${PACKAGE}_LIBRARIES ${DEBUG_LIBRARIES} CACHE PATH "") + set(${PACKAGE}_LIBRARIES ${DEBUG_LIBRARIES} CACHE PATH "Location of the ${PACKAGE} debug libraries") endif() - set(${PACKAGE}_INCLUDE_DIRS ${INCLUDE_DIR} CACHE PATH "") - set(${PACKAGE}_FOUND ON CACHE BOOL OFF) + set(${PACKAGE}_INCLUDE_DIRS ${INCLUDE_DIR} CACHE PATH "Location of the ${PACKAGE} includes") + set(${PACKAGE}_FOUND ON CACHE BOOL "${PACKAGE} detection status") message(STATUS "Found pip-installed ${PACKAGE} in ${PIP_PACKAGE_LOCATION}/${PIP_PACKAGE_NAME}") + if(${PACKAGE}_INCLUDE_DIRS) + message(STATUS " --> with includes in ${${PACKAGE}_INCLUDE_DIRS}") + endif() endif() endmacro()