summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2020-01-22 16:28:57 +0100
committerAlexandru Croitor <alexandru.croitor@qt.io>2020-01-27 11:59:51 +0000
commitb714219fea567ff4ad7d84972704dbed8f5b4cf3 (patch)
tree4f14ae00fbb585b2e87e09041fb14b0e6f89b655 /cmake
parentf53ca8a4fc1e82d1c4802e387abe759b53f74b62 (diff)
Fix qt_import_plugins compatibility with Qt 5
Handle versionless plugin names passed to qt_import_plugins. Task-number: QTBUG-74137 Task-number: QTBUG-80477 Change-Id: Ic7fb6e54d2822c7eb58a7874b4a1c137f0c101d9 Reviewed-by: Qt CMake Build Bot Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/QtPlugins.cmake.in19
1 files changed, 18 insertions, 1 deletions
diff --git a/cmake/QtPlugins.cmake.in b/cmake/QtPlugins.cmake.in
index 5e2352d6c1..91884302c6 100644
--- a/cmake/QtPlugins.cmake.in
+++ b/cmake/QtPlugins.cmake.in
@@ -34,6 +34,7 @@ if(NOT @BUILD_SHARED_LIBS@)
# The code in here uses the properties defined in qt_import_plugins (Qt6CoreMacros.cmake)
foreach(target @qt_plugins@)
set(_plugin_target "@INSTALL_CMAKE_NAMESPACE@::${target}")
+ set(_plugin_target_versionless "Qt::${target}")
get_target_property(_classname "${_plugin_target}" QT_PLUGIN_CLASS_NAME)
if(NOT _classname)
message("Warning: plugin ${_plugin_target} has no class name, skipping.")
@@ -52,6 +53,8 @@ if(NOT @BUILD_SHARED_LIBS@)
# INCLUDE
set(_plugin_is_whitelisted "$<IN_LIST:${_plugin_target},${_manual_plugins_genex}>")
+ set(_plugin_versionless_is_whitelisted
+ "$<IN_LIST:${_plugin_target_versionless},${_manual_plugins_genex}>")
# Note: qt_import_plugins sets the QT_PLUGINS_${_plugin_type} to "-"
# when excluding it with EXCLUDE_BY_TYPE,
@@ -61,7 +64,11 @@ if(NOT @BUILD_SHARED_LIBS@)
"$<NOT:" # EXCLUDE
"$<IN_LIST:${_plugin_target},${_no_plugins_genex}>"
">,"
- # excludes both plugins targeted by EXCLUDE_BY_TYPE and not included in INCLUDE_BY_TYPE
+ "$<NOT:"
+ "$<IN_LIST:${_plugin_target_versionless},${_no_plugins_genex}>"
+ ">,"
+ # Excludes both plugins targeted by EXCLUDE_BY_TYPE and not included in
+ # INCLUDE_BY_TYPE.
"$<STREQUAL:,$<GENEX_EVAL:$<TARGET_PROPERTY:QT_PLUGINS_${_plugin_type}>>>"
">"
)
@@ -75,6 +82,14 @@ if(NOT @BUILD_SHARED_LIBS@)
">"
">"
)
+ string(CONCAT _plugin_versionless_is_in_type_whitelist
+ "$<IN_LIST:"
+ "${_plugin_target_versionless},"
+ "$<GENEX_EVAL:"
+ "$<TARGET_PROPERTY:QT_PLUGINS_${_plugin_type}>"
+ ">"
+ ">"
+ )
# Complete condition that defines whether a static plugin is linked
string(CONCAT _plugin_condition
@@ -82,7 +97,9 @@ if(NOT @BUILD_SHARED_LIBS@)
"${_build_allow_plugin_link_rules_genex},"
"$<OR:"
"${_plugin_is_whitelisted},"
+ "${_plugin_versionless_is_whitelisted},"
"${_plugin_is_in_type_whitelist},"
+ "${_plugin_versionless_is_in_type_whitelist},"
"$<AND:"
"${_default_plugins_are_enabled_wrapped},"
"${_plugin_is_default},"