diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-01-14 16:55:26 +0100 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-01-18 14:01:59 +0100 |
commit | d5c9d88885916265819d7f6d3f336cf39ca1a863 (patch) | |
tree | bd7a75f9ef6f15e92df336f3e9e22db5bed518dd /mkspecs | |
parent | 12df6c63a0272408f3fa369dccc3c9eb0486a7f8 (diff) |
[CMake] Fix handling Qt frameworks link flags in static lib deps
QMAKE_PRL_LIBS_FOR_CMAKE can contain "-F/foo/bar" entries which
are search paths for where frameworks should be found.
These should be passed as HINTS to find_library when searching for
frameworks.
Fixes: QTBUG-81369
Change-Id: I4f699800bd49a1f368b6132823e23d08d1fae604
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'mkspecs')
-rw-r--r-- | mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in index 26d4c17e6c..50364765fb 100644 --- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in @@ -72,6 +72,7 @@ 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(_fw_search_paths) set(_framework_flag) string(REPLACE \"\\$\\$[QT_INSTALL_LIBS]\" \"${_qt5_install_libs}\" _static_depends \"${_static_depends}\") foreach(_flag ${_static_depends}) @@ -79,10 +80,13 @@ function(_qt5_$${CMAKE_MODULE_NAME}_process_prl_file prl_file_location Configura if(_flag MATCHES \"^-framework$\") # Handle the next flag as framework name set(_framework_flag 1) + elseif(_flag MATCHES \"^-F(.*)$\") + # Handle -F/foo/bar flags by recording the framework search paths to be used + # by find_library. + list(APPEND _fw_search_paths \"${CMAKE_MATCH_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 @@ -100,8 +104,12 @@ function(_qt5_$${CMAKE_MODULE_NAME}_process_prl_file prl_file_location Configura find_package(Threads REQUIRED) list(APPEND _lib_deps Threads::Threads) else() - if(_search_paths) - find_library(_Qt5$${CMAKE_MODULE_NAME}_${Configuration}_${_lib}_PATH ${_lib} HINTS ${_search_paths} NO_DEFAULT_PATH) + set(current_search_paths \"${_search_paths}\") + if(_framework_flag) + set(current_search_paths \"${_fw_search_paths}\") + endif() + if(current_search_paths) + find_library(_Qt5$${CMAKE_MODULE_NAME}_${Configuration}_${_lib}_PATH ${_lib} HINTS ${current_search_paths} NO_DEFAULT_PATH) endif() find_library(_Qt5$${CMAKE_MODULE_NAME}_${Configuration}_${_lib}_PATH ${_lib}) mark_as_advanced(_Qt5$${CMAKE_MODULE_NAME}_${Configuration}_${_lib}_PATH) @@ -112,6 +120,7 @@ function(_qt5_$${CMAKE_MODULE_NAME}_process_prl_file prl_file_location Configura else() message(FATAL_ERROR \"Library not found: ${_lib}\") endif() + unset(_framework_flag) endif() elseif(EXISTS \"${_flag}\") # The flag is an absolute path to an existing library |