summaryrefslogtreecommitdiffstats
path: root/cmake/QtPublicTargetHelpers.cmake
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 /cmake/QtPublicTargetHelpers.cmake
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>
Diffstat (limited to 'cmake/QtPublicTargetHelpers.cmake')
-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()