From cca279338c5778fe09fa52384a1ffa5531885cf5 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Fri, 3 Jan 2020 13:51:39 +0100 Subject: CMake: Fix usage requirements for static builds of Qt on macOS When scanning the prl files to set up usage requirements for the Qt libraries we omitted "-framework Foo" flags. Those were passed as linker flags, but not as interface libraries. Consequently, the frameworks that are used by Qt libraries were missing on the link line when building against a statically built Qt. Fix this issue by scanning the dependencies for "-framework Foo" just like we do with "-lfoo" flags. Fixes: QTBUG-80855 Change-Id: Ie7804304141c86207d143a6e1005e78bdc099113 Reviewed-by: Cristian Adam Reviewed-by: Kyle Edwards --- .../features/data/cmake/Qt5BasicConfig.cmake.in | 28 +++++++++++++++------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'mkspecs') diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in index 5077b8d8b4..26d4c17e6c 100644 --- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in @@ -72,18 +72,28 @@ function(_qt5_$${CMAKE_MODULE_NAME}_process_prl_file prl_file_location Configura string(REGEX REPLACE \"QMAKE_PRL_LIBS_FOR_CMAKE[ \\t]*=[ \\t]*([^\\n]*)\" \"\\\\1\" _static_depends \"${_prl_strings}\") string(REGEX REPLACE \"[ \\t]+\" \";\" _standard_libraries \"${CMAKE_CXX_STANDARD_LIBRARIES}\") set(_search_paths) + set(_framework_flag) string(REPLACE \"\\$\\$[QT_INSTALL_LIBS]\" \"${_qt5_install_libs}\" _static_depends \"${_static_depends}\") foreach(_flag ${_static_depends}) string(REPLACE \"\\\"\" \"\" _flag ${_flag}) - if(_flag MATCHES \"^-l(.*)$\") - # Handle normal libraries passed as -lfoo - set(_lib \"${CMAKE_MATCH_1}\") - foreach(_standard_library ${_standard_libraries}) - if(_standard_library MATCHES \"^${_lib}(\\\\.lib)?$\") - set(_lib_is_default_linked TRUE) - break() - endif() - endforeach() + if(_flag MATCHES \"^-framework$\") + # Handle the next flag as framework name + set(_framework_flag 1) + elseif(_framework_flag OR _flag MATCHES \"^-l(.*)$\") + if(_framework_flag) + # Handle Darwin framework bundles passed as -framework Foo + unset(_framework_flag) + set(_lib ${_flag}) + else() + # Handle normal libraries passed as -lfoo + set(_lib \"${CMAKE_MATCH_1}\") + foreach(_standard_library ${_standard_libraries}) + if(_standard_library MATCHES \"^${_lib}(\\\\.lib)?$\") + set(_lib_is_default_linked TRUE) + break() + endif() + endforeach() + endif() if (_lib_is_default_linked) unset(_lib_is_default_linked) elseif(_lib MATCHES \"^pthread$\") -- cgit v1.2.3 From 9b4ec1393fde2af7deb39b9a2f98bcc93635603f Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Thu, 19 Dec 2019 13:12:34 +0100 Subject: MinGW: Allow debug-and-release builds Commit 4d289edb14aeb49 did disable debug-and-release for MinGW completely. While it makes sense to change the default, we should allow people to opt-in to old behavior by explicitly setting '-debug-and-release'. To allow differentiation between debug and release libraries debug dll's (again) have a 'd' suffix. Fixes: QTBUG-80792 Change-Id: I341b1a94788f490e975be6736159980cd9273f08 Reviewed-by: Joerg Bornemann --- mkspecs/features/qt_functions.prf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mkspecs') diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf index 661b7dd961..45d4492788 100644 --- a/mkspecs/features/qt_functions.prf +++ b/mkspecs/features/qt_functions.prf @@ -5,7 +5,7 @@ defineReplace(qtPlatformTargetSuffix) { else: CONFIG(debug, debug|release) { !debug_and_release|build_pass { mac: return($${suffix}_debug) - win32:!gcc: return($${suffix}d) + win32: return($${suffix}d) } } return($$suffix) -- cgit v1.2.3