summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/QtBuild.cmake12
-rw-r--r--cmake/QtPlugins.cmake.in16
-rw-r--r--cmake/QtProperties.cmake12
-rw-r--r--src/plugins/platforms/android/CMakeLists.txt1
-rw-r--r--src/plugins/platforms/cocoa/CMakeLists.txt1
-rw-r--r--src/plugins/platforms/eglfs/CMakeLists.txt1
-rw-r--r--src/plugins/platforms/linuxfb/CMakeLists.txt1
-rw-r--r--src/plugins/platforms/minimal/CMakeLists.txt1
-rw-r--r--src/plugins/platforms/minimalegl/CMakeLists.txt1
-rw-r--r--src/plugins/platforms/offscreen/CMakeLists.txt1
-rw-r--r--src/plugins/platforms/vnc/CMakeLists.txt1
-rw-r--r--src/plugins/platforms/windows/CMakeLists.txt1
-rw-r--r--src/plugins/platforms/xcb/CMakeLists.txt1
13 files changed, 40 insertions, 10 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index b2c25b5ef6..df9e9008ce 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -1449,7 +1449,7 @@ function(add_qt_plugin target)
qt_parse_all_arguments(arg "add_qt_plugin" "STATIC;EXCEPTIONS"
"TYPE;CLASS_NAME;OUTPUT_DIRECTORY;INSTALL_DIRECTORY;ARCHIVE_INSTALL_DIRECTORY"
- "${__default_private_args};${__default_public_args}" ${ARGN})
+ "${__default_private_args};${__default_public_args};DEFAULT_IF" ${ARGN})
set(output_directory_default "${QT_BUILD_DIR}/${INSTALL_PLUGINSDIR}/${arg_TYPE}")
@@ -1501,7 +1501,15 @@ function(add_qt_plugin target)
set_property(TARGET "${qt_module}" APPEND PROPERTY QT_PLUGINS "${target}")
endif()
- set_property(TARGET "${target}" APPEND PROPERTY EXPORT_PROPERTIES "QT_PLUGIN_CLASS_NAME;QT_MODULE")
+ set(_default_plugin 1)
+ if (DEFINED arg_DEFAULT_IF)
+ if (NOT ${arg_DEFAULT_IF})
+ set(_default_plugin 0)
+ endif()
+ endif()
+
+ set_property(TARGET "${target}" PROPERTY QT_DEFAULT_PLUGIN "${_default_plugin}")
+ set_property(TARGET "${target}" APPEND PROPERTY EXPORT_PROPERTIES "QT_PLUGIN_CLASS_NAME;QT_MODULE;QT_DEFAULT_PLUGIN")
extend_target("${target}"
SOURCES ${arg_SOURCES}
diff --git a/cmake/QtPlugins.cmake.in b/cmake/QtPlugins.cmake.in
index b51c7cec29..e6547508a7 100644
--- a/cmake/QtPlugins.cmake.in
+++ b/cmake/QtPlugins.cmake.in
@@ -3,7 +3,7 @@
if(NOT @BUILD_SHARED_LIBS@)
set(_module_target "@INSTALL_CMAKE_NAMESPACE@::@QT_MODULE@")
- set(_default_plugins_genex "$<GENEX_EVAL:$<TARGET_PROPERTY:QT_DEFAULT_PLUGINS>>")
+ set(_default_plugins_are_enabled "$<GENEX_EVAL:$<TARGET_PROPERTY:QT_DEFAULT_PLUGINS>>")
set(_manual_plugins_genex "$<GENEX_EVAL:$<TARGET_PROPERTY:QT_PLUGINS>>")
set(_no_plugins_genex "$<GENEX_EVAL:$<TARGET_PROPERTY:QT_NO_PLUGINS>>")
@@ -15,17 +15,17 @@ if(NOT @BUILD_SHARED_LIBS@)
continue()
endif()
- set(_user_specified_genex "$<IN_LIST:${_plugin_target},${_manual_plugins_genex}>")
+ set(_plugin_is_default "$<TARGET_PROPERTY:${_plugin_target},QT_DEFAULT_PLUGIN>")
+ set(_plugin_is_not_blacklisted "$<NOT:$<IN_LIST:${_plugin_target},${_no_plugins_genex}>>")
+ set(_plugin_is_whitelisted "$<IN_LIST:${_plugin_target},${_manual_plugins_genex}>")
string(CONCAT _plugin_condition
"$<BOOL:$<OR:"
- # Add this plugin if it\'s in the list of manual plugins or plugins for the type
- "${_user_specified_genex},"
- # Add this plugin if the default plugins haven't been disabled, the module of the plug-in
- # is either empty or equal to the module name, and the user hasn't blacklisted it
+ "${_plugin_is_whitelisted},"
"$<AND:"
- "${_default_plugins_genex},"
- "$<NOT:$<IN_LIST:${_plugin_target},${_no_plugins_genex}>>"
+ "${_default_plugins_are_enabled},"
+ "${_plugin_is_default},"
+ "${_plugin_is_not_blacklisted}"
">"
">>"
)
diff --git a/cmake/QtProperties.cmake b/cmake/QtProperties.cmake
index e8b1fbf4f0..0c3507b953 100644
--- a/cmake/QtProperties.cmake
+++ b/cmake/QtProperties.cmake
@@ -38,6 +38,18 @@ define_property(TARGET
For instance, Sql for qsqlite"
)
+define_property(TARGET
+ PROPERTY
+ QT_DEFAULT_PLUGIN
+ BRIEF_DOCS
+ "Indicates whether a plug-in is added by default."
+ FULL_DOCS
+ "This is a property on Qt plug-ins.
+ It is mainly used to indicate if a plug-in should be added
+ to the default set of plug-ins when building a static app -
+ for instance, which QPA should be linked."
+)
+
define_property(GLOBAL
PROPERTY
QT_KNOWN_PLUGINS
diff --git a/src/plugins/platforms/android/CMakeLists.txt b/src/plugins/platforms/android/CMakeLists.txt
index 5b91a733f1..f0da443481 100644
--- a/src/plugins/platforms/android/CMakeLists.txt
+++ b/src/plugins/platforms/android/CMakeLists.txt
@@ -6,6 +6,7 @@
add_qt_plugin(qtforandroid
TYPE platforms
+ DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES android # special case
SOURCES
androidcontentfileengine.cpp androidcontentfileengine.h
androiddeadlockprotector.cpp androiddeadlockprotector.h
diff --git a/src/plugins/platforms/cocoa/CMakeLists.txt b/src/plugins/platforms/cocoa/CMakeLists.txt
index 61b7c367af..9b546990ba 100644
--- a/src/plugins/platforms/cocoa/CMakeLists.txt
+++ b/src/plugins/platforms/cocoa/CMakeLists.txt
@@ -9,6 +9,7 @@ qt_find_package(Cups PROVIDED_TARGETS Cups::Cups)
add_qt_plugin(qcocoa
TYPE platforms
+ DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES cocoa # special case
CLASS_NAME QCocoaIntegrationPlugin
SOURCES
main.mm
diff --git a/src/plugins/platforms/eglfs/CMakeLists.txt b/src/plugins/platforms/eglfs/CMakeLists.txt
index d7ca11acb6..6705e40e0d 100644
--- a/src/plugins/platforms/eglfs/CMakeLists.txt
+++ b/src/plugins/platforms/eglfs/CMakeLists.txt
@@ -80,6 +80,7 @@ extend_target(EglFSDeviceIntegration CONDITION QT_FEATURE_opengl
add_qt_plugin(qeglfs
TYPE platforms
CLASS_NAME QEglFSIntegrationPlugin
+ DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES eglfs # special case
SOURCES
qeglfsmain.cpp
DEFINES
diff --git a/src/plugins/platforms/linuxfb/CMakeLists.txt b/src/plugins/platforms/linuxfb/CMakeLists.txt
index 623a5296c9..463c66989f 100644
--- a/src/plugins/platforms/linuxfb/CMakeLists.txt
+++ b/src/plugins/platforms/linuxfb/CMakeLists.txt
@@ -7,6 +7,7 @@
add_qt_plugin(qlinuxfb
TYPE platforms
CLASS_NAME QLinuxFbIntegrationPlugin
+ DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES linuxfb # special case
SOURCES
main.cpp
qlinuxfbintegration.cpp qlinuxfbintegration.h
diff --git a/src/plugins/platforms/minimal/CMakeLists.txt b/src/plugins/platforms/minimal/CMakeLists.txt
index 7f5ff13b27..6a2bda464d 100644
--- a/src/plugins/platforms/minimal/CMakeLists.txt
+++ b/src/plugins/platforms/minimal/CMakeLists.txt
@@ -7,6 +7,7 @@
add_qt_plugin(qminimal
TYPE platforms
CLASS_NAME QMinimalIntegrationPlugin
+ DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES minimal # special case
SOURCES
main.cpp
qminimalbackingstore.cpp qminimalbackingstore.h
diff --git a/src/plugins/platforms/minimalegl/CMakeLists.txt b/src/plugins/platforms/minimalegl/CMakeLists.txt
index 8118bef4c5..a37b4f9a25 100644
--- a/src/plugins/platforms/minimalegl/CMakeLists.txt
+++ b/src/plugins/platforms/minimalegl/CMakeLists.txt
@@ -7,6 +7,7 @@
add_qt_plugin(qminimalegl
TYPE platforms
CLASS_NAME QMinimalEglIntegrationPlugin
+ DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES minimalegl # special case
SOURCES
main.cpp
qminimaleglintegration.cpp qminimaleglintegration.h
diff --git a/src/plugins/platforms/offscreen/CMakeLists.txt b/src/plugins/platforms/offscreen/CMakeLists.txt
index a81b3b434f..98fa916445 100644
--- a/src/plugins/platforms/offscreen/CMakeLists.txt
+++ b/src/plugins/platforms/offscreen/CMakeLists.txt
@@ -7,6 +7,7 @@
add_qt_plugin(qoffscreen
TYPE platforms
CLASS_NAME QOffscreenIntegrationPlugin
+ DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES offscreen # special case
SOURCES
main.cpp
qoffscreencommon.cpp qoffscreencommon.h
diff --git a/src/plugins/platforms/vnc/CMakeLists.txt b/src/plugins/platforms/vnc/CMakeLists.txt
index 8a294a09fb..cdb2be39d8 100644
--- a/src/plugins/platforms/vnc/CMakeLists.txt
+++ b/src/plugins/platforms/vnc/CMakeLists.txt
@@ -7,6 +7,7 @@
add_qt_plugin(qvnc
TYPE platforms
CLASS_NAME QVncIntegrationPlugin
+ DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES vnc # special case
SOURCES
main.cpp
qvnc.cpp qvnc_p.h
diff --git a/src/plugins/platforms/windows/CMakeLists.txt b/src/plugins/platforms/windows/CMakeLists.txt
index 44a1698994..f4989649e2 100644
--- a/src/plugins/platforms/windows/CMakeLists.txt
+++ b/src/plugins/platforms/windows/CMakeLists.txt
@@ -7,6 +7,7 @@
add_qt_plugin(qwindows
TYPE platforms
CLASS_NAME QWindowsIntegrationPlugin
+ DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES windows # special case
SOURCES
main.cpp
qtwindowsglobal.h
diff --git a/src/plugins/platforms/xcb/CMakeLists.txt b/src/plugins/platforms/xcb/CMakeLists.txt
index 6849c75e2e..92c0a842ad 100644
--- a/src/plugins/platforms/xcb/CMakeLists.txt
+++ b/src/plugins/platforms/xcb/CMakeLists.txt
@@ -190,6 +190,7 @@ extend_target(XcbQpa CONDITION QT_FEATURE_fontconfig AND QT_FEATURE_xcb_native_p
add_qt_plugin(qxcb
TYPE platforms
CLASS_NAME QXcbIntegrationPlugin
+ DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES xcb # special case
SOURCES
qxcbmain.cpp
DEFINES