From 17ed2b196a58afbbc3cc1bb99f6eb76060171ad2 Mon Sep 17 00:00:00 2001 From: howetuft Date: Tue, 24 Dec 2019 16:06:18 +0100 Subject: [PATCH] [Cmake] Update FindPySide2Tools for PySide2 5.14 - issue #4229 Since PySide2 5.14, 'pyside2-rcc' and 'pyside2-uic' have been renamed into plain 'rcc' and 'uic'. This leads FindPySide2Tools.cmake to no longer find rcc/uic, as reported in bug #4229 (https://www.freecadweb.org/tracker/view.php?id=4229) and prevents compilation. FindPySide2Tools has been updated accordingly. --- cMake/FindPySide2Tools.cmake | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/cMake/FindPySide2Tools.cmake b/cMake/FindPySide2Tools.cmake index 9c9751488872..7ca9690dc11a 100644 --- a/cMake/FindPySide2Tools.cmake +++ b/cMake/FindPySide2Tools.cmake @@ -20,8 +20,24 @@ if(WIN32 OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(PYSIDE_BIN_DIR ${PYTHON_BIN_DIR}) endif(WIN32 OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") -FIND_PROGRAM(PYSIDE2UICBINARY NAMES python2-pyside2-uic pyside2-uic pyside2-uic-${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} HINTS ${PYSIDE_BIN_DIR}) -FIND_PROGRAM(PYSIDE2RCCBINARY NAMES pyside2-rcc pyside2-rcc-${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} HINTS ${PYSIDE_BIN_DIR}) +# Since Qt v5.14, pyside2-uic and pyside2-rcc are directly provided by Qt5Core uic and rcc, with '-g python' option +# We test Qt5Core version to act accordingly + +FIND_PACKAGE(Qt5Core) + +IF(Qt5Core_VERSION LESS 5.14) + # Legacy (< 5.14) + FIND_PROGRAM(PYSIDE2UICBINARY NAMES python2-pyside2-uic pyside2-uic pyside2-uic-${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} HINTS ${PYSIDE_BIN_DIR}) + FIND_PROGRAM(PYSIDE2RCCBINARY NAMES pyside2-rcc pyside2-rcc-${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} HINTS ${PYSIDE_BIN_DIR}) + set(UICOPTIONS "") + set(RCCOPTIONS "") +ELSE(Qt5Core_VERSION LESS 5.14) + # New (>= 5.14) + FIND_PROGRAM(PYSIDE2UICBINARY NAMES uic) + set(UICOPTIONS "--generator=python") + FIND_PROGRAM(PYSIDE2RCCBINARY NAMES rcc) + set(RCCOPTIONS "--generator=python" "--compress-algo=zlib" "--compress=1") +ENDIF(Qt5Core_VERSION LESS 5.14) MACRO(PYSIDE_WRAP_UI outfiles) FOREACH(it ${ARGN}) @@ -33,7 +49,7 @@ MACRO(PYSIDE_WRAP_UI outfiles) #) if(WIN32 OR APPLE) ADD_CUSTOM_COMMAND(OUTPUT ${outfile} - COMMAND ${PYSIDE2UICBINARY} ${infile} -o ${outfile} + COMMAND ${PYSIDE2UICBINARY} ${UICOPTIONS} ${infile} -o ${outfile} MAIN_DEPENDENCY ${infile} ) else() @@ -41,7 +57,7 @@ MACRO(PYSIDE_WRAP_UI outfiles) # pyside2-uic generates in comments at beginning., which is why # we follow the tool command with in-place sed. ADD_CUSTOM_COMMAND(OUTPUT ${outfile} - COMMAND "${PYSIDE2UICBINARY}" "${infile}" -o "${outfile}" + COMMAND "${PYSIDE2UICBINARY}" ${UICOPTIONS} "${infile}" -o "${outfile}" COMMAND sed -i "/^# /d" "${outfile}" MAIN_DEPENDENCY "${infile}" ) @@ -60,7 +76,7 @@ MACRO(PYSIDE_WRAP_RC outfiles) #) if(WIN32 OR APPLE) ADD_CUSTOM_COMMAND(OUTPUT ${outfile} - COMMAND ${PYSIDE2RCCBINARY} ${infile} -o ${outfile} + COMMAND ${PYSIDE2RCCBINARY} ${RCCOPTIONS} ${infile} -o ${outfile} MAIN_DEPENDENCY ${infile} ) else() @@ -68,7 +84,7 @@ MACRO(PYSIDE_WRAP_RC outfiles) # pyside-rcc generates in comments at beginning, which is why # we follow the tool command with in-place sed. ADD_CUSTOM_COMMAND(OUTPUT "${outfile}" - COMMAND "${PYSIDE2RCCBINARY}" "${infile}" ${PY_ATTRIBUTE} -o "${outfile}" + COMMAND "${PYSIDE2RCCBINARY}" ${RCCOPTIONS} "${infile}" ${PY_ATTRIBUTE} -o "${outfile}" COMMAND sed -i "/^# /d" "${outfile}" MAIN_DEPENDENCY "${infile}" )