diff options
Diffstat (limited to 'mkspecs/features')
-rw-r--r-- | mkspecs/features/create_cmake.prf | 9 | ||||
-rw-r--r-- | mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in | 9 |
2 files changed, 12 insertions, 6 deletions
diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf index 24ed125f12..64639f177d 100644 --- a/mkspecs/features/create_cmake.prf +++ b/mkspecs/features/create_cmake.prf @@ -170,6 +170,9 @@ qtConfig(debug_and_release) { } contains(CONFIG, plugin) { + CMAKE_PLUGIN_NAME = $$PLUGIN_CLASS_NAME + + plugin_genex_check = equals(PLUGIN_EXTENDS, -) { CMAKE_PLUGIN_EXTENDS = - } else { @@ -177,8 +180,13 @@ contains(CONFIG, plugin) { for (p, PLUGIN_EXTENDS) { m = $$cmakeModuleName($$p) list_plugin_extends += Qt::$$m + + # CMake introduced $<IN_LIST:> in 3.12 which is too new for Qt, so manually + # unroll each module check with an STREQUAL genex + plugin_genex_check += \"$<STREQUAL:$<TARGET_PROPERTY:Qt5::$${CMAKE_PLUGIN_NAME},QT_PLUGIN_EXTENDS>,Qt::$${m}>,\" } CMAKE_PLUGIN_EXTENDS = $$join(list_plugin_extends, ";") + CMAKE_PLUGIN_EXTENDS_GENEX_CHECK = $$join(plugin_genex_check, "$$escape_expand(\\n) ") } PLUGIN_MODULE_NAME = @@ -207,7 +215,6 @@ contains(CONFIG, plugin) { CMAKE_MODULE_NAME = $$cmakeModuleName($$PLUGIN_MODULE_NAME) - CMAKE_PLUGIN_NAME = $$PLUGIN_CLASS_NAME CMAKE_PLUGIN_TYPE = $$PLUGIN_TYPE CMAKE_PLUGIN_TYPE_ESCAPED = $$replace(PLUGIN_TYPE, [-/], _) diff --git a/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in b/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in index b550a52c60..2e23109167 100644 --- a/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in +++ b/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in @@ -86,15 +86,14 @@ string(CONCAT _plugin_genex \"${_user_specified_genex_versionless},\" # Add this plugin if all of the following are true: # 1) the list of explicitly included plugin types is empty - # 2) the QT_PLUGIN_EXTENDS property for the plugin is empty or equal to the current - # module name + # 2) the QT_PLUGIN_EXTENDS property for the plugin is empty or equal to one of the modules + # listed in the plugin's PLUGIN_EXTEND qmake variable # 3) the user hasn\'t explicitly excluded the plugin. + # TODO: Note that the current implementation of (2) is not entirely correct QTBUG-93501 \"$<AND:\" \"$<STREQUAL:${_plugin_type_genex},>,\" \"$<OR:\" - # FIXME: The value of CMAKE_MODULE_NAME seems to be wrong (e.g for Svg plugin - # it should be Qt::Svg instead of Qt::Gui). - \"$<STREQUAL:$<TARGET_PROPERTY:Qt5::$${CMAKE_PLUGIN_NAME},QT_PLUGIN_EXTENDS>,Qt::$${CMAKE_MODULE_NAME}>,\" + $${CMAKE_PLUGIN_EXTENDS_GENEX_CHECK} \"$<STREQUAL:$<TARGET_PROPERTY:Qt5::$${CMAKE_PLUGIN_NAME},QT_PLUGIN_EXTENDS>,>\" \">,\" \"$<NOT:$<IN_LIST:Qt5::$${CMAKE_PLUGIN_NAME},${_no_plugins_genex}>>,\" |