From a21742ef6064c1e84ebc43468d253dd14d86bf02 Mon Sep 17 00:00:00 2001 From: Martin Negyokru Date: Thu, 16 Feb 2023 09:44:56 +0100 Subject: Pass system library paths to cmake Generate a new rsp file for each cmake target containing '-L' flags and pass them to cmake. Pick-to: dev Task-number: QTBUG-105053 Task-number: QTBUG-111225 Change-Id: Ib25c009795b776bc5f0f6e07fb89b932ef30b484 Reviewed-by: Michal Klocek --- cmake/Functions.cmake | 26 ++++++++++++++++++++++++-- src/core/configure/BUILD.root.gn.in | 4 ++-- src/pdf/configure/BUILD.root.gn.in | 2 +- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/cmake/Functions.cmake b/cmake/Functions.cmake index 04f32d2c6..538e2ffb4 100644 --- a/cmake/Functions.cmake +++ b/cmake/Functions.cmake @@ -453,9 +453,31 @@ function(add_linker_options target buildDir completeStatic) "$<1:-Wl,--start-group $<$:@${archives_rsp}> -Wl,--end-group>" ) endif() + + # we need only the '-L' flags from lflags.rsp, filter them + set(lflags_rsp "${buildDir}/${ninjaTarget}_lflags.rsp") + set(lflags_filtered_rsp "${buildDir}/${ninjaTarget}_lflags_filtered.rsp") + set(lflags_filter_script "${buildDir}/${ninjaTarget}_lflags_filter.cmake") + file(GENERATE OUTPUT ${lflags_filter_script} + CONTENT "file(STRINGS ${lflags_rsp} lflags) + string(REGEX MATCHALL \"-L.*\" lflags_filtered \${lflags}) + file(WRITE ${lflags_filtered_rsp} \${lflags_filtered})" + FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ + ) + add_custom_command( + OUTPUT ${lflags_filtered_rsp} + COMMAND ${CMAKE_COMMAND} -P ${lflags_filter_script} + DEPENDS ${lflags_filter_script} ${lflags_rsp} + ) + add_custom_target( + run_${cmakeTarget}_${config}_lflags_filter + DEPENDS ${lflags_filtered_rsp} + ) + add_dependencies(${cmakeTarget} run_${cmakeTarget}_${config}_lflags_filter) + # linker here options are just to prevent processing it by cmake target_link_libraries(${cmakeTarget} PRIVATE - "$<1:-Wl,--no-fatal-warnings $<$:@${libs_rsp}> -Wl,--no-fatal-warnings>" + "$<1:-Wl,--no-fatal-warnings $<$:@${lflags_filtered_rsp}> $<$:@${libs_rsp}> -Wl,--no-fatal-warnings>" ) endif() if(MACOS) @@ -1165,7 +1187,7 @@ function(add_gn_command) file(WRITE ${gnArgArgFile} ${arg_GN_ARGS}) foreach(ninjaTarget ${arg_NINJA_TARGETS}) - list(APPEND output ${ninjaTarget}_objects.rsp ${ninjaTarget}_archives.rsp ${ninjaTarget}_libs.rsp) + list(APPEND output ${ninjaTarget}_objects.rsp ${ninjaTarget}_archives.rsp ${ninjaTarget}_libs.rsp ${ninjaTarget}_lflags.rsp) endforeach() list(TRANSFORM output PREPEND "${arg_BUILDDIR}/") diff --git a/src/core/configure/BUILD.root.gn.in b/src/core/configure/BUILD.root.gn.in index bb4455fb7..01bf84b70 100644 --- a/src/core/configure/BUILD.root.gn.in +++ b/src/core/configure/BUILD.root.gn.in @@ -97,7 +97,7 @@ config("cpp17_config") { } shared_library("QtWebEngineCore") { - rsp_types = [ "objects", "archives", "libs" ] + rsp_types = [ "objects", "archives", "libs", "lflags"] configs += [ ":cpp17_config", ":QtWebEngineCore_config", @@ -691,7 +691,7 @@ if (enable_extensions) { if (enable_spellcheck) { shared_library("convert_dict") { - rsp_types = [ "objects", "archives", "libs" ] + rsp_types = [ "objects", "archives", "libs", "lflags" ] configs += [ "//build/config/compiler:wexit_time_destructors" ] deps = [ "//chrome/tools/convert_dict:lib", diff --git a/src/pdf/configure/BUILD.root.gn.in b/src/pdf/configure/BUILD.root.gn.in index da41d80cc..3918c1e9f 100644 --- a/src/pdf/configure/BUILD.root.gn.in +++ b/src/pdf/configure/BUILD.root.gn.in @@ -51,7 +51,7 @@ config("cpp17_config") { static_library("QtPdf") { complete_static_lib = true - rsp_types = [ "objects", "archives", "libs" ] + rsp_types = [ "objects", "archives", "libs", "lflags" ] configs += [ ":cpp17_config", ":QtPdf_config" -- cgit v1.2.3