summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Edelev <alexey.edelev@qt.io>2021-06-02 15:02:03 +0200
committerAlexey Edelev <alexey.edelev@qt.io>2021-06-03 12:55:01 +0200
commita25027eecb3829a65543d0e8ab00c74e1b1a21c5 (patch)
tree913b01d7c6cda57f15eaead288c96a8ba0d91e97
parent2e02ae94975c324480bbb5c87106d7e098df1e7c (diff)
Collect resource objects of plugins and their dependencies in finalizer
Resource objects might be linked to plugins. Since some plugins may be present in LINK_LIBRARIES as the complex genexes, need to collect them explicitly and iterate over plugin targets to find resource object libraries that need to be exposed to end-point target executable. Amends a1fd4f51ada82854f35654158a334454e760a9f7 Change-Id: Icd85f54f7bf9d1b7e3382caa5d9aa62449b6adb8 Reviewed-by: Lorn Potter <lorn.potter@gmail.com> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-rw-r--r--cmake/QtPublicTargetHelpers.cmake34
1 files changed, 32 insertions, 2 deletions
diff --git a/cmake/QtPublicTargetHelpers.cmake b/cmake/QtPublicTargetHelpers.cmake
index 285e84608c..3804b18ac4 100644
--- a/cmake/QtPublicTargetHelpers.cmake
+++ b/cmake/QtPublicTargetHelpers.cmake
@@ -33,7 +33,16 @@ endfunction()
function(__qt_internal_collect_dependency_resource_objects target out_var)
set_property(GLOBAL PROPERTY _qt_resource_processed_targets "")
+
__qt_internal_collect_resource_objects_recursively(resource_targets ${target} ${target})
+
+ # Collect resource objects of plugins and plugin dependencies.
+ __qt_internal_collect_plugin_targets_from_dependencies(${target} plugin_targets)
+ __qt_internal_collect_dependency_plugin_resource_objects(${target}
+ "${plugin_targets}"
+ plugin_resource_objects
+ )
+
set_property(GLOBAL PROPERTY _qt_resource_processed_targets "")
list(REMOVE_DUPLICATES resource_targets)
@@ -42,7 +51,25 @@ function(__qt_internal_collect_dependency_resource_objects target out_var)
list(PREPEND resource_objects "$<TARGET_OBJECTS:${dep}>")
endforeach()
- set(${out_var} "${resource_objects}" PARENT_SCOPE)
+ set(${out_var} "${plugin_resource_objects};${resource_objects}" PARENT_SCOPE)
+endfunction()
+
+function(__qt_internal_collect_dependency_plugin_resource_objects target plugin_targets out_var)
+ set(plugin_resource_objects "")
+ foreach(plugin_target IN LISTS plugin_targets)
+ __qt_internal_collect_resource_objects_recursively(plugin_resource_targets
+ "${QT_CMAKE_EXPORT_NAMESPACE}::${plugin_target}"
+ ${target}
+ )
+ __qt_internal_get_static_plugin_condition_genex("${plugin_target}" plugin_condition)
+
+ foreach(plugin_resource_target IN LISTS plugin_resource_targets)
+ list(APPEND plugin_resource_objects
+ "$<${plugin_condition}:$<TARGET_OBJECTS:${plugin_resource_target}>>"
+ )
+ endforeach()
+ endforeach()
+ set(${out_var} "${plugin_resource_objects}" PARENT_SCOPE)
endfunction()
function(__qt_internal_collect_resource_objects_recursively out_var target initial_target)
@@ -77,7 +104,10 @@ function(__qt_internal_collect_resource_objects_recursively out_var target initi
if(is_qt_resource)
list(APPEND resource_targets ${lib})
else()
- __qt_internal_collect_resource_objects_recursively(next_level_resources ${lib} ${initial_target})
+ __qt_internal_collect_resource_objects_recursively(next_level_resources
+ ${lib}
+ ${initial_target}
+ )
list(APPEND resource_targets ${next_level_resources})
endif()
endif()