summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore16
-rw-r--r--CMakeLists.txt75
-rw-r--r--bin/qt-cmake.bat.in1
-rwxr-xr-xbin/qt-cmake.in3
-rw-r--r--cmake/3rdparty/extra-cmake-modules/COPYING-CMAKE-SCRIPTS22
-rw-r--r--cmake/3rdparty/extra-cmake-modules/find-modules/ECMFindModuleHelpersStub.cmake1
-rw-r--r--cmake/3rdparty/extra-cmake-modules/find-modules/FindEGL.cmake172
-rw-r--r--cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake101
-rw-r--r--cmake/3rdparty/extra-cmake-modules/find-modules/FindWayland.cmake143
-rw-r--r--cmake/3rdparty/extra-cmake-modules/find-modules/FindWaylandScanner.cmake167
-rw-r--r--cmake/3rdparty/extra-cmake-modules/find-modules/FindX11_XCB.cmake118
-rw-r--r--cmake/3rdparty/extra-cmake-modules/find-modules/FindXCB.cmake201
-rw-r--r--cmake/3rdparty/extra-cmake-modules/modules/ECMEnableSanitizers.cmake173
-rw-r--r--cmake/3rdparty/extra-cmake-modules/modules/ECMFindModuleHelpers.cmake297
-rw-r--r--cmake/3rdparty/extra-cmake-modules/qt_attribution.json15
-rw-r--r--cmake/3rdparty/kwin/COPYING-CMAKE-SCRIPTS22
-rw-r--r--cmake/3rdparty/kwin/FindLibdrm.cmake126
-rw-r--r--cmake/3rdparty/kwin/FindLibinput.cmake125
-rw-r--r--cmake/3rdparty/kwin/FindXKB.cmake101
-rw-r--r--cmake/3rdparty/kwin/Findgbm.cmake125
-rw-r--r--cmake/3rdparty/kwin/qt_attribution.json17
-rw-r--r--cmake/3rdpartyConfig.cmake.in13
-rw-r--r--cmake/FindATSPI2.cmake7
-rw-r--r--cmake/FindAtomic.cmake44
-rw-r--r--cmake/FindCups.cmake98
-rw-r--r--cmake/FindDB2.cmake59
-rw-r--r--cmake/FindDirectFB.cmake7
-rw-r--r--cmake/FindGLESv2.cmake51
-rw-r--r--cmake/FindGTK3.cmake7
-rw-r--r--cmake/FindLibproxy.cmake7
-rw-r--r--cmake/FindLibsystemd.cmake7
-rw-r--r--cmake/FindLibudev.cmake7
-rw-r--r--cmake/FindMtdev.cmake7
-rw-r--r--cmake/FindMySQL.cmake50
-rw-r--r--cmake/FindOracle.cmake48
-rw-r--r--cmake/FindPPS.cmake19
-rw-r--r--cmake/FindSlog2.cmake19
-rw-r--r--cmake/FindTslib.cmake7
-rw-r--r--cmake/FindWrapDBus1.cmake35
-rw-r--r--cmake/FindWrapDoubleConversion.cmake61
-rw-r--r--cmake/FindWrapFreetype.cmake33
-rw-r--r--cmake/FindWrapPCRE2.cmake20
-rw-r--r--cmake/FindWrapRt.cmake34
-rw-r--r--cmake/FindXKB_COMMON_X11.cmake7
-rw-r--r--cmake/FindXRender.cmake11
-rw-r--r--cmake/FindZSTD.cmake50
-rw-r--r--cmake/Finddouble-conversion.cmake32
-rw-r--r--cmake/QtAutoDetect.cmake57
-rw-r--r--cmake/QtBaseCMakeTesting.cmake9
-rw-r--r--cmake/QtBaseConfigureTests.cmake165
-rw-r--r--cmake/QtBaseGlobalTargets.cmake241
-rw-r--r--cmake/QtBuild.cmake3267
-rw-r--r--cmake/QtBuildInternals/QtBuildInternalsAndroid.cmake213
-rw-r--r--cmake/QtBuildInternals/QtBuildInternalsConfig.cmake208
-rw-r--r--cmake/QtBuildInternalsExtra.cmake.in31
-rw-r--r--cmake/QtCompilerFlags.cmake6
-rw-r--r--cmake/QtCompilerOptimization.cmake121
-rw-r--r--cmake/QtConfig.cmake.in56
-rw-r--r--cmake/QtFeature.cmake565
-rw-r--r--cmake/QtInternalTargets.cmake98
-rw-r--r--cmake/QtModuleConfig.cmake.in47
-rw-r--r--cmake/QtModuleDependencies.cmake.in66
-rw-r--r--cmake/QtModuleToolsConfig.cmake.in14
-rw-r--r--cmake/QtModuleToolsDependencies.cmake.in16
-rw-r--r--cmake/QtPlatformAndroid.cmake313
-rw-r--r--cmake/QtPlatformSupport.cmake81
-rw-r--r--cmake/QtPluginConfig.cmake.in15
-rw-r--r--cmake/QtPluginDependencies.cmake.in42
-rw-r--r--cmake/QtPlugins.cmake.in97
-rw-r--r--cmake/QtPostProcess.cmake356
-rw-r--r--cmake/QtProperties.cmake107
-rw-r--r--cmake/QtResource.cmake.in302
-rw-r--r--cmake/QtSetup.cmake129
-rw-r--r--cmake/QtToolsConfig.cmake.in35
-rw-r--r--cmake/README.md255
-rw-r--r--cmake/qt.toolchain.cmake.in20
-rw-r--r--cmake/tests/CMakeLists.txt48
-rw-r--r--cmake/tests/empty.cpp0
-rw-r--r--cmake/tests/features/CMakeLists.txt42
-rw-r--r--cmake/tests/features/configure.cmake35
-rw-r--r--cmake/tests/features/src/CMakeLists.txt7
-rw-r--r--cmake/tests/main.cpp1
-rw-r--r--cmake/tests/qt_make_output_file/CMakeLists.txt22
-rw-r--r--cmake/tests/test.cmake54
-rw-r--r--coin/instructions/call_cmake.yaml23
-rw-r--r--coin/instructions/cmake_build_and_upload_test_artifacts.yaml34
-rw-r--r--coin/instructions/cmake_cross_compilation.yaml58
-rw-r--r--coin/instructions/cmake_module_build_instructions.yaml46
-rw-r--r--coin/instructions/cmake_qtbase_build_instructions.yaml49
-rw-r--r--coin/instructions/cmake_regular_test_instructions.yaml22
-rw-r--r--coin/instructions/prepare_building_env.yaml202
-rw-r--r--coin/module_config.yaml40
-rw-r--r--config.tests/x86_simd/CMakeLists.txt23
-rwxr-xr-xconfigure208
-rw-r--r--configure.cmake490
-rw-r--r--configure.json11
-rw-r--r--doc/global/macros.qdocconf1
-rw-r--r--examples/CMakeLists.txt54
-rw-r--r--examples/corelib/CMakeLists.txt10
-rw-r--r--examples/corelib/ipc/CMakeLists.txt14
-rw-r--r--examples/corelib/ipc/localfortuneclient/CMakeLists.txt29
-rw-r--r--examples/corelib/ipc/localfortuneserver/CMakeLists.txt29
-rw-r--r--examples/corelib/ipc/sharedmemory/CMakeLists.txt27
-rw-r--r--examples/corelib/mimetypes/CMakeLists.txt6
-rw-r--r--examples/corelib/mimetypes/mimetypebrowser/CMakeLists.txt28
-rw-r--r--examples/corelib/serialization/CMakeLists.txt5
-rw-r--r--examples/corelib/serialization/cbordump/CMakeLists.txt27
-rw-r--r--examples/corelib/serialization/convert/CMakeLists.txt34
-rw-r--r--examples/corelib/serialization/savegame/CMakeLists.txt30
-rw-r--r--examples/corelib/threads/CMakeLists.txt9
-rw-r--r--examples/corelib/threads/mandelbrot/CMakeLists.txt28
-rw-r--r--examples/corelib/threads/queuedcustomtype/CMakeLists.txt29
-rw-r--r--examples/corelib/threads/semaphores/CMakeLists.txt26
-rw-r--r--examples/corelib/threads/waitconditions/CMakeLists.txt26
-rw-r--r--examples/corelib/tools/CMakeLists.txt5
-rw-r--r--examples/corelib/tools/contiguouscache/CMakeLists.txt27
-rw-r--r--examples/corelib/tools/customtype/CMakeLists.txt27
-rw-r--r--examples/corelib/tools/customtypesending/CMakeLists.txt28
-rw-r--r--examples/dbus/CMakeLists.txt13
-rw-r--r--examples/dbus/chat/CMakeLists.txt44
-rw-r--r--examples/dbus/complexpingpong/CMakeLists.txt27
-rw-r--r--examples/dbus/listnames/CMakeLists.txt27
-rw-r--r--examples/dbus/pingpong/CMakeLists.txt28
-rw-r--r--examples/dbus/remotecontrolledcar/CMakeLists.txt4
-rw-r--r--examples/dbus/remotecontrolledcar/car/CMakeLists.txt39
-rw-r--r--examples/dbus/remotecontrolledcar/controller/CMakeLists.txt37
-rw-r--r--examples/embedded/CMakeLists.txt8
-rw-r--r--examples/embedded/digiflip/CMakeLists.txt26
-rw-r--r--examples/embedded/flickable/CMakeLists.txt27
-rw-r--r--examples/embedded/flightinfo/CMakeLists.txt30
-rw-r--r--examples/embedded/lightmaps/CMakeLists.txt31
-rw-r--r--examples/embedded/raycasting/CMakeLists.txt27
-rw-r--r--examples/embedded/styleexample/CMakeLists.txt28
-rw-r--r--examples/gui/CMakeLists.txt8
-rw-r--r--examples/gui/analogclock/CMakeLists.txt33
-rw-r--r--examples/gui/openglwindow/CMakeLists.txt32
-rw-r--r--examples/gui/rasterwindow/CMakeLists.txt32
-rw-r--r--examples/network/CMakeLists.txt45
-rw-r--r--examples/network/bearermonitor/CMakeLists.txt37
-rw-r--r--examples/network/blockingfortuneclient/CMakeLists.txt31
-rw-r--r--examples/network/broadcastreceiver/CMakeLists.txt30
-rw-r--r--examples/network/broadcastsender/CMakeLists.txt30
-rw-r--r--examples/network/dnslookup/CMakeLists.txt29
-rw-r--r--examples/network/download/CMakeLists.txt29
-rw-r--r--examples/network/downloadmanager/CMakeLists.txt31
-rw-r--r--examples/network/fortuneclient/CMakeLists.txt30
-rw-r--r--examples/network/fortuneserver/CMakeLists.txt30
-rw-r--r--examples/network/googlesuggest/CMakeLists.txt31
-rw-r--r--examples/network/http/CMakeLists.txt31
-rw-r--r--examples/network/loopback/CMakeLists.txt30
-rw-r--r--examples/network/multicastreceiver/CMakeLists.txt30
-rw-r--r--examples/network/multicastsender/CMakeLists.txt30
-rw-r--r--examples/network/multistreamclient/CMakeLists.txt34
-rw-r--r--examples/network/multistreamserver/CMakeLists.txt34
-rw-r--r--examples/network/network-chat/CMakeLists.txt34
-rw-r--r--examples/network/securesocketclient/CMakeLists.txt33
-rw-r--r--examples/network/secureudpclient/CMakeLists.txt32
-rw-r--r--examples/network/secureudpserver/CMakeLists.txt32
-rw-r--r--examples/network/threadedfortuneserver/CMakeLists.txt32
-rw-r--r--examples/network/torrent/.prev_CMakeLists.txt41
-rw-r--r--examples/network/torrent/CMakeLists.txt43
-rw-r--r--examples/opengl/2dpainting/CMakeLists.txt35
-rw-r--r--examples/opengl/CMakeLists.txt16
-rw-r--r--examples/opengl/computegles31/CMakeLists.txt43
-rw-r--r--examples/opengl/contextinfo/CMakeLists.txt33
-rw-r--r--examples/opengl/cube/CMakeLists.txt57
-rw-r--r--examples/opengl/hellogl2/CMakeLists.txt35
-rw-r--r--examples/opengl/hellogles3/CMakeLists.txt44
-rw-r--r--examples/opengl/hellowindow/CMakeLists.txt34
-rw-r--r--examples/opengl/legacy/CMakeLists.txt13
-rw-r--r--examples/opengl/legacy/framebufferobject2/CMakeLists.txt47
-rw-r--r--examples/opengl/legacy/grabber/CMakeLists.txt35
-rw-r--r--examples/opengl/legacy/hellogl/CMakeLists.txt39
-rw-r--r--examples/opengl/legacy/overpainting/CMakeLists.txt39
-rw-r--r--examples/opengl/legacy/pbuffers/CMakeLists.txt48
-rw-r--r--examples/opengl/legacy/pbuffers2/CMakeLists.txt50
-rw-r--r--examples/opengl/legacy/samplebuffers/CMakeLists.txt34
-rw-r--r--examples/opengl/paintedwindow/CMakeLists.txt30
-rw-r--r--examples/opengl/qopenglwidget/CMakeLists.txt47
-rw-r--r--examples/opengl/qopenglwindow/CMakeLists.txt46
-rw-r--r--examples/opengl/textures/CMakeLists.txt51
-rw-r--r--examples/opengl/threadedqopenglwidget/CMakeLists.txt33
-rw-r--r--examples/qpa/CMakeLists.txt4
-rw-r--r--examples/qpa/qrasterwindow/CMakeLists.txt25
-rw-r--r--examples/qpa/windows/CMakeLists.txt34
-rw-r--r--examples/qtconcurrent/CMakeLists.txt9
-rw-r--r--examples/qtconcurrent/imagescaling/CMakeLists.txt30
-rw-r--r--examples/qtconcurrent/map/.prev_CMakeLists.txt26
-rw-r--r--examples/qtconcurrent/map/CMakeLists.txt28
-rw-r--r--examples/qtconcurrent/progressdialog/CMakeLists.txt29
-rw-r--r--examples/qtconcurrent/runfunction/CMakeLists.txt29
-rw-r--r--examples/qtconcurrent/wordcount/CMakeLists.txt29
-rw-r--r--examples/qtestlib/CMakeLists.txt7
-rw-r--r--examples/qtestlib/tutorial1/CMakeLists.txt28
-rw-r--r--examples/qtestlib/tutorial2/CMakeLists.txt28
-rw-r--r--examples/qtestlib/tutorial3/CMakeLists.txt28
-rw-r--r--examples/qtestlib/tutorial4/CMakeLists.txt28
-rw-r--r--examples/qtestlib/tutorial5/CMakeLists.txt28
-rw-r--r--examples/sql/CMakeLists.txt17
-rw-r--r--examples/sql/books/CMakeLists.txt36
-rw-r--r--examples/sql/cachedtable/CMakeLists.txt31
-rw-r--r--examples/sql/drilldown/CMakeLists.txt34
-rw-r--r--examples/sql/masterdetail/CMakeLists.txt35
-rw-r--r--examples/sql/querymodel/CMakeLists.txt32
-rw-r--r--examples/sql/relationaltablemodel/CMakeLists.txt30
-rw-r--r--examples/sql/sqlbrowser/CMakeLists.txt33
-rw-r--r--examples/sql/sqlwidgetmapper/CMakeLists.txt30
-rw-r--r--examples/sql/tablemodel/CMakeLists.txt30
-rw-r--r--examples/vulkan/CMakeLists.txt11
-rw-r--r--examples/vulkan/hellovulkancubes/CMakeLists.txt63
-rw-r--r--examples/vulkan/hellovulkantexture/CMakeLists.txt45
-rw-r--r--examples/vulkan/hellovulkantriangle/CMakeLists.txt50
-rw-r--r--examples/vulkan/hellovulkanwidget/CMakeLists.txt53
-rw-r--r--examples/vulkan/hellovulkanwindow/CMakeLists.txt30
-rw-r--r--examples/widgets/CMakeLists.txt33
-rw-r--r--examples/widgets/animation/CMakeLists.txt8
-rw-r--r--examples/widgets/animation/animatedtiles/CMakeLists.txt28
-rw-r--r--examples/widgets/animation/easing/CMakeLists.txt31
-rw-r--r--examples/widgets/animation/moveblocks/CMakeLists.txt27
-rw-r--r--examples/widgets/animation/states/CMakeLists.txt28
-rw-r--r--examples/widgets/animation/stickman/CMakeLists.txt33
-rw-r--r--examples/widgets/animation/sub-attaq/CMakeLists.txt44
-rw-r--r--examples/widgets/desktop/CMakeLists.txt4
-rw-r--r--examples/widgets/desktop/screenshot/CMakeLists.txt28
-rw-r--r--examples/widgets/desktop/systray/CMakeLists.txt29
-rw-r--r--examples/widgets/dialogs/CMakeLists.txt14
-rw-r--r--examples/widgets/dialogs/classwizard/CMakeLists.txt28
-rw-r--r--examples/widgets/dialogs/extension/CMakeLists.txt28
-rw-r--r--examples/widgets/dialogs/findfiles/CMakeLists.txt28
-rw-r--r--examples/widgets/dialogs/licensewizard/CMakeLists.txt30
-rw-r--r--examples/widgets/dialogs/standarddialogs/CMakeLists.txt28
-rw-r--r--examples/widgets/dialogs/tabdialog/CMakeLists.txt28
-rw-r--r--examples/widgets/dialogs/trivialwizard/CMakeLists.txt27
-rw-r--r--examples/widgets/draganddrop/CMakeLists.txt7
-rw-r--r--examples/widgets/draganddrop/draggableicons/CMakeLists.txt29
-rw-r--r--examples/widgets/draganddrop/draggabletext/CMakeLists.txt29
-rw-r--r--examples/widgets/draganddrop/dropsite/CMakeLists.txt29
-rw-r--r--examples/widgets/draganddrop/fridgemagnets/CMakeLists.txt30
-rw-r--r--examples/widgets/draganddrop/puzzle/CMakeLists.txt31
-rw-r--r--examples/widgets/effects/CMakeLists.txt4
-rw-r--r--examples/widgets/effects/blurpicker/CMakeLists.txt29
-rw-r--r--examples/widgets/effects/fademessage/CMakeLists.txt28
-rw-r--r--examples/widgets/gestures/CMakeLists.txt3
-rw-r--r--examples/widgets/gestures/imagegestures/CMakeLists.txt29
-rw-r--r--examples/widgets/graphicsview/CMakeLists.txt20
-rw-r--r--examples/widgets/graphicsview/anchorlayout/CMakeLists.txt27
-rw-r--r--examples/widgets/graphicsview/basicgraphicslayouts/CMakeLists.txt30
-rw-r--r--examples/widgets/graphicsview/boxes/CMakeLists.txt39
-rw-r--r--examples/widgets/graphicsview/chip/CMakeLists.txt39
-rw-r--r--examples/widgets/graphicsview/collidingmice/CMakeLists.txt29
-rw-r--r--examples/widgets/graphicsview/diagramscene/CMakeLists.txt32
-rw-r--r--examples/widgets/graphicsview/dragdroprobot/CMakeLists.txt29
-rw-r--r--examples/widgets/graphicsview/elasticnodes/CMakeLists.txt30
-rw-r--r--examples/widgets/graphicsview/embeddeddialogs/CMakeLists.txt30
-rw-r--r--examples/widgets/graphicsview/flowlayout/CMakeLists.txt29
-rw-r--r--examples/widgets/graphicsview/padnavigator/.prev_CMakeLists.txt45
-rw-r--r--examples/widgets/graphicsview/padnavigator/CMakeLists.txt38
-rw-r--r--examples/widgets/graphicsview/simpleanchorlayout/CMakeLists.txt27
-rw-r--r--examples/widgets/graphicsview/weatheranchorlayout/CMakeLists.txt28
-rw-r--r--examples/widgets/itemviews/CMakeLists.txt27
-rw-r--r--examples/widgets/itemviews/addressbook/CMakeLists.txt32
-rw-r--r--examples/widgets/itemviews/basicsortfiltermodel/CMakeLists.txt28
-rw-r--r--examples/widgets/itemviews/chart/CMakeLists.txt30
-rw-r--r--examples/widgets/itemviews/coloreditorfactory/CMakeLists.txt29
-rw-r--r--examples/widgets/itemviews/combowidgetmapper/CMakeLists.txt28
-rw-r--r--examples/widgets/itemviews/customsortfiltermodel/CMakeLists.txt31
-rw-r--r--examples/widgets/itemviews/dirview/CMakeLists.txt27
-rw-r--r--examples/widgets/itemviews/editabletreemodel/CMakeLists.txt31
-rw-r--r--examples/widgets/itemviews/fetchmore/CMakeLists.txt29
-rw-r--r--examples/widgets/itemviews/flattreeview/CMakeLists.txt27
-rw-r--r--examples/widgets/itemviews/frozencolumn/CMakeLists.txt29
-rw-r--r--examples/widgets/itemviews/interview/CMakeLists.txt29
-rw-r--r--examples/widgets/itemviews/pixelator/CMakeLists.txt37
-rw-r--r--examples/widgets/itemviews/puzzle/CMakeLists.txt31
-rw-r--r--examples/widgets/itemviews/simpledommodel/CMakeLists.txt32
-rw-r--r--examples/widgets/itemviews/simpletreemodel/CMakeLists.txt30
-rw-r--r--examples/widgets/itemviews/simplewidgetmapper/CMakeLists.txt28
-rw-r--r--examples/widgets/itemviews/spinboxdelegate/CMakeLists.txt28
-rw-r--r--examples/widgets/itemviews/spreadsheet/CMakeLists.txt37
-rw-r--r--examples/widgets/itemviews/stardelegate/CMakeLists.txt30
-rw-r--r--examples/widgets/itemviews/storageview/CMakeLists.txt32
-rw-r--r--examples/widgets/layouts/CMakeLists.txt6
-rw-r--r--examples/widgets/layouts/basiclayouts/CMakeLists.txt28
-rw-r--r--examples/widgets/layouts/borderlayout/CMakeLists.txt29
-rw-r--r--examples/widgets/layouts/dynamiclayouts/CMakeLists.txt28
-rw-r--r--examples/widgets/layouts/flowlayout/CMakeLists.txt29
-rw-r--r--examples/widgets/mac/CMakeLists.txt7
-rw-r--r--examples/widgets/mac/qmaccocoaviewcontainer/CMakeLists.txt28
-rw-r--r--examples/widgets/mac/qmacnativewidget/CMakeLists.txt28
-rw-r--r--examples/widgets/mainwindows/CMakeLists.txt8
-rw-r--r--examples/widgets/mainwindows/application/CMakeLists.txt29
-rw-r--r--examples/widgets/mainwindows/dockwidgets/CMakeLists.txt35
-rw-r--r--examples/widgets/mainwindows/mainwindow/CMakeLists.txt30
-rw-r--r--examples/widgets/mainwindows/mdi/CMakeLists.txt30
-rw-r--r--examples/widgets/mainwindows/menus/CMakeLists.txt28
-rw-r--r--examples/widgets/mainwindows/sdi/CMakeLists.txt29
-rw-r--r--examples/widgets/painting/CMakeLists.txt14
-rw-r--r--examples/widgets/painting/affine/CMakeLists.txt34
-rw-r--r--examples/widgets/painting/basicdrawing/CMakeLists.txt30
-rw-r--r--examples/widgets/painting/composition/CMakeLists.txt33
-rw-r--r--examples/widgets/painting/concentriccircles/CMakeLists.txt29
-rw-r--r--examples/widgets/painting/deform/CMakeLists.txt34
-rw-r--r--examples/widgets/painting/fontsampler/CMakeLists.txt29
-rw-r--r--examples/widgets/painting/gradients/CMakeLists.txt33
-rw-r--r--examples/widgets/painting/imagecomposition/CMakeLists.txt29
-rw-r--r--examples/widgets/painting/painterpaths/CMakeLists.txt29
-rw-r--r--examples/widgets/painting/pathstroke/CMakeLists.txt35
-rw-r--r--examples/widgets/painting/shared/CMakeLists.txt27
-rw-r--r--examples/widgets/painting/transformations/CMakeLists.txt29
-rw-r--r--examples/widgets/richtext/CMakeLists.txt6
-rw-r--r--examples/widgets/richtext/calendar/CMakeLists.txt28
-rw-r--r--examples/widgets/richtext/orderform/CMakeLists.txt33
-rw-r--r--examples/widgets/richtext/syntaxhighlighter/CMakeLists.txt29
-rw-r--r--examples/widgets/richtext/textedit/CMakeLists.txt34
-rw-r--r--examples/widgets/scroller/CMakeLists.txt3
-rw-r--r--examples/widgets/scroller/graphicsview/CMakeLists.txt27
-rw-r--r--examples/widgets/statemachine/CMakeLists.txt11
-rw-r--r--examples/widgets/statemachine/eventtransitions/CMakeLists.txt27
-rw-r--r--examples/widgets/statemachine/factorial/CMakeLists.txt27
-rw-r--r--examples/widgets/statemachine/pingpong/CMakeLists.txt27
-rw-r--r--examples/widgets/statemachine/rogue/CMakeLists.txt29
-rw-r--r--examples/widgets/statemachine/trafficlight/CMakeLists.txt27
-rw-r--r--examples/widgets/statemachine/twowaybutton/CMakeLists.txt27
-rw-r--r--examples/widgets/tools/CMakeLists.txt22
-rw-r--r--examples/widgets/tools/codecs/CMakeLists.txt31
-rw-r--r--examples/widgets/tools/completer/CMakeLists.txt30
-rw-r--r--examples/widgets/tools/customcompleter/CMakeLists.txt30
-rw-r--r--examples/widgets/tools/echoplugin/CMakeLists.txt4
-rw-r--r--examples/widgets/tools/echoplugin/echowindow/CMakeLists.txt29
-rw-r--r--examples/widgets/tools/echoplugin/plugin/CMakeLists.txt10
-rw-r--r--examples/widgets/tools/i18n/CMakeLists.txt30
-rw-r--r--examples/widgets/tools/plugandpaint/CMakeLists.txt4
-rw-r--r--examples/widgets/tools/plugandpaint/app/CMakeLists.txt34
-rw-r--r--examples/widgets/tools/plugandpaint/plugins/CMakeLists.txt4
-rw-r--r--examples/widgets/tools/plugandpaint/plugins/basictools/CMakeLists.txt13
-rw-r--r--examples/widgets/tools/plugandpaint/plugins/extrafilters/CMakeLists.txt9
-rw-r--r--examples/widgets/tools/regexp/CMakeLists.txt28
-rw-r--r--examples/widgets/tools/regularexpression/CMakeLists.txt29
-rw-r--r--examples/widgets/tools/settingseditor/CMakeLists.txt31
-rw-r--r--examples/widgets/tools/styleplugin/CMakeLists.txt19
-rw-r--r--examples/widgets/tools/styleplugin/plugin/CMakeLists.txt9
-rw-r--r--examples/widgets/tools/styleplugin/stylewindow/CMakeLists.txt28
-rw-r--r--examples/widgets/tools/treemodelcompleter/CMakeLists.txt29
-rw-r--r--examples/widgets/tools/undo/CMakeLists.txt31
-rw-r--r--examples/widgets/tools/undoframework/CMakeLists.txt32
-rw-r--r--examples/widgets/touch/CMakeLists.txt6
-rw-r--r--examples/widgets/touch/dials/CMakeLists.txt28
-rw-r--r--examples/widgets/touch/fingerpaint/CMakeLists.txt35
-rw-r--r--examples/widgets/touch/knobs/CMakeLists.txt28
-rw-r--r--examples/widgets/touch/pinchzoom/CMakeLists.txt30
-rw-r--r--examples/widgets/tutorials/CMakeLists.txt7
-rw-r--r--examples/widgets/tutorials/addressbook/CMakeLists.txt9
-rw-r--r--examples/widgets/tutorials/addressbook/part1/CMakeLists.txt28
-rw-r--r--examples/widgets/tutorials/addressbook/part2/CMakeLists.txt28
-rw-r--r--examples/widgets/tutorials/addressbook/part3/CMakeLists.txt28
-rw-r--r--examples/widgets/tutorials/addressbook/part4/CMakeLists.txt28
-rw-r--r--examples/widgets/tutorials/addressbook/part5/CMakeLists.txt29
-rw-r--r--examples/widgets/tutorials/addressbook/part6/CMakeLists.txt29
-rw-r--r--examples/widgets/tutorials/addressbook/part7/CMakeLists.txt29
-rw-r--r--examples/widgets/tutorials/gettingStarted/CMakeLists.txt2
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/CMakeLists.txt7
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/part1/CMakeLists.txt27
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/part2/CMakeLists.txt27
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/part3/CMakeLists.txt27
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/part4/CMakeLists.txt27
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/part5/CMakeLists.txt27
-rw-r--r--examples/widgets/tutorials/modelview/1_readonly/CMakeLists.txt28
-rw-r--r--examples/widgets/tutorials/modelview/2_formatting/CMakeLists.txt28
-rw-r--r--examples/widgets/tutorials/modelview/3_changingmodel/CMakeLists.txt28
-rw-r--r--examples/widgets/tutorials/modelview/4_headers/CMakeLists.txt28
-rw-r--r--examples/widgets/tutorials/modelview/5_edit/CMakeLists.txt29
-rw-r--r--examples/widgets/tutorials/modelview/6_treeview/CMakeLists.txt28
-rw-r--r--examples/widgets/tutorials/modelview/7_selections/CMakeLists.txt28
-rw-r--r--examples/widgets/tutorials/modelview/CMakeLists.txt9
-rw-r--r--examples/widgets/tutorials/notepad/.prev_CMakeLists.txt49
-rw-r--r--examples/widgets/tutorials/notepad/CMakeLists.txt36
-rw-r--r--examples/widgets/tutorials/widgets/CMakeLists.txt6
-rw-r--r--examples/widgets/tutorials/widgets/childwidget/CMakeLists.txt27
-rw-r--r--examples/widgets/tutorials/widgets/nestedlayouts/CMakeLists.txt27
-rw-r--r--examples/widgets/tutorials/widgets/toplevel/CMakeLists.txt27
-rw-r--r--examples/widgets/tutorials/widgets/windowlayout/CMakeLists.txt27
-rw-r--r--examples/widgets/widgets/CMakeLists.txt27
-rw-r--r--examples/widgets/widgets/analogclock/CMakeLists.txt28
-rw-r--r--examples/widgets/widgets/calculator/CMakeLists.txt29
-rw-r--r--examples/widgets/widgets/calendarwidget/CMakeLists.txt28
-rw-r--r--examples/widgets/widgets/charactermap/CMakeLists.txt29
-rw-r--r--examples/widgets/widgets/codeeditor/CMakeLists.txt28
-rw-r--r--examples/widgets/widgets/digitalclock/CMakeLists.txt28
-rw-r--r--examples/widgets/widgets/elidedlabel/CMakeLists.txt33
-rw-r--r--examples/widgets/widgets/groupbox/CMakeLists.txt28
-rw-r--r--examples/widgets/widgets/icons/CMakeLists.txt33
-rw-r--r--examples/widgets/widgets/imageviewer/CMakeLists.txt34
-rw-r--r--examples/widgets/widgets/lineedits/CMakeLists.txt28
-rw-r--r--examples/widgets/widgets/mousebuttons/CMakeLists.txt30
-rw-r--r--examples/widgets/widgets/movie/CMakeLists.txt28
-rw-r--r--examples/widgets/widgets/scribble/CMakeLists.txt35
-rw-r--r--examples/widgets/widgets/shapedclock/CMakeLists.txt28
-rw-r--r--examples/widgets/widgets/sliders/CMakeLists.txt29
-rw-r--r--examples/widgets/widgets/spinboxes/CMakeLists.txt28
-rw-r--r--examples/widgets/widgets/styles/CMakeLists.txt30
-rw-r--r--examples/widgets/widgets/stylesheet/CMakeLists.txt30
-rw-r--r--examples/widgets/widgets/tablet/CMakeLists.txt31
-rw-r--r--examples/widgets/widgets/tetrix/CMakeLists.txt30
-rw-r--r--examples/widgets/widgets/tooltips/CMakeLists.txt30
-rw-r--r--examples/widgets/widgets/validators/CMakeLists.txt31
-rw-r--r--examples/widgets/widgets/wiggly/CMakeLists.txt29
-rw-r--r--examples/widgets/widgets/windowflags/CMakeLists.txt29
-rw-r--r--examples/widgets/windowcontainer/CMakeLists.txt31
-rw-r--r--examples/xml/CMakeLists.txt14
-rw-r--r--examples/xml/dombookmarks/CMakeLists.txt30
-rw-r--r--examples/xml/htmlinfo/CMakeLists.txt26
-rw-r--r--examples/xml/rsslisting/CMakeLists.txt31
-rw-r--r--examples/xml/saxbookmarks/CMakeLists.txt31
-rw-r--r--examples/xml/streambookmarks/CMakeLists.txt31
-rw-r--r--examples/xml/xmlstreamlint/CMakeLists.txt27
-rw-r--r--qmake/.prev_CMakeLists.txt184
-rw-r--r--qmake/CMakeLists.txt215
-rw-r--r--src/3rdparty/CMakeLists.txt8
-rw-r--r--src/3rdparty/double-conversion/CMakeLists.txt21
-rw-r--r--src/3rdparty/gradle/CMakeLists.txt21
-rw-r--r--src/3rdparty/harfbuzz/CMakeLists.txt14
-rw-r--r--src/CMakeLists.txt55
-rw-r--r--src/android/CMakeLists.txt14
-rw-r--r--src/android/jar/CMakeLists.txt33
-rw-r--r--src/android/java/CMakeLists.txt12
-rw-r--r--src/android/templates/CMakeLists.txt19
-rw-r--r--src/concurrent/CMakeLists.txt49
-rw-r--r--src/corelib/.prev_CMakeLists.txt1042
-rw-r--r--src/corelib/CMakeLists.txt1152
-rw-r--r--src/corelib/Qt5CoreConfigExtras.cmake.in175
-rw-r--r--src/corelib/Qt6CTestMacros.cmake (renamed from src/corelib/Qt5CTestMacros.cmake)0
-rw-r--r--src/corelib/Qt6Config.cmake.in (renamed from src/corelib/Qt5Config.cmake.in)0
-rw-r--r--src/corelib/Qt6CoreConfigExtras.cmake.in52
-rw-r--r--src/corelib/Qt6CoreConfigExtrasMkspecDir.cmake.in (renamed from src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in)0
-rw-r--r--src/corelib/Qt6CoreConfigExtrasMkspecDirForInstall.cmake.in (renamed from src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in)0
-rw-r--r--src/corelib/Qt6CoreMacros.cmake (renamed from src/corelib/Qt5CoreMacros.cmake)236
-rw-r--r--src/corelib/Qt6ModuleLocation.cmake.in (renamed from src/corelib/Qt5ModuleLocation.cmake.in)0
-rw-r--r--src/corelib/Qt6ModuleLocationForInstall.cmake.in (renamed from src/corelib/Qt5ModuleLocationForInstall.cmake.in)0
-rw-r--r--src/corelib/configure.cmake912
-rw-r--r--src/corelib/configure.json27
-rw-r--r--src/corelib/global/qconfig.cpp.in29
-rw-r--r--src/corelib/io/qfilesystemiterator_unix.cpp2
-rw-r--r--src/corelib/kernel/qvariant.cpp4
-rw-r--r--src/corelib/mimetypes/mimetypes_resources.cmake21
-rw-r--r--src/dbus/.prev_CMakeLists.txt75
-rw-r--r--src/dbus/CMakeLists.txt78
-rw-r--r--src/dbus/Qt5DBusConfigExtras.cmake.in33
-rw-r--r--src/dbus/Qt6DBusMacros.cmake (renamed from src/dbus/Qt5DBusMacros.cmake)22
-rw-r--r--src/gui/.prev_CMakeLists.txt650
-rw-r--r--src/gui/CMakeLists.txt789
-rw-r--r--src/gui/Qt5GuiConfigExtras.cmake.in193
-rw-r--r--src/gui/configure.cmake1054
-rw-r--r--src/gui/configure.json19
-rw-r--r--src/network/.prev_CMakeLists.txt447
-rw-r--r--src/network/CMakeLists.txt451
-rw-r--r--src/network/configure.cmake383
-rw-r--r--src/network/configure.json18
-rw-r--r--src/network/socket/qhttpsocketengine.cpp2
-rw-r--r--src/network/socket/qnativesocketengine.cpp2
-rw-r--r--src/network/socket/qsocks5socketengine.cpp2
-rw-r--r--src/opengl/.prev_CMakeLists.txt66
-rw-r--r--src/opengl/CMakeLists.txt60
-rw-r--r--src/platformheaders/.prev_CMakeLists.txt2
-rw-r--r--src/platformheaders/CMakeLists.txt15
-rw-r--r--src/platformheaders/fake.cpp0
-rw-r--r--src/platformsupport/CMakeLists.txt44
-rw-r--r--src/platformsupport/accessibility/CMakeLists.txt24
-rw-r--r--src/platformsupport/clipboard/CMakeLists.txt32
-rw-r--r--src/platformsupport/devicediscovery/CMakeLists.txt43
-rw-r--r--src/platformsupport/edid/CMakeLists.txt24
-rw-r--r--src/platformsupport/eglconvenience/.prev_CMakeLists.txt54
-rw-r--r--src/platformsupport/eglconvenience/CMakeLists.txt45
-rw-r--r--src/platformsupport/eventdispatchers/.prev_CMakeLists.txt46
-rw-r--r--src/platformsupport/eventdispatchers/CMakeLists.txt48
-rw-r--r--src/platformsupport/fbconvenience/CMakeLists.txt30
-rw-r--r--src/platformsupport/fontdatabases/.prev_CMakeLists.txt131
-rw-r--r--src/platformsupport/fontdatabases/CMakeLists.txt134
-rw-r--r--src/platformsupport/fontdatabases/fake.cpp0
-rw-r--r--src/platformsupport/glxconvenience/.prev_CMakeLists.txt25
-rw-r--r--src/platformsupport/glxconvenience/CMakeLists.txt27
-rw-r--r--src/platformsupport/graphics/CMakeLists.txt24
-rw-r--r--src/platformsupport/input/.prev_CMakeLists.txt108
-rw-r--r--src/platformsupport/input/CMakeLists.txt113
-rw-r--r--src/platformsupport/input/xkbcommon/CMakeLists.txt36
-rw-r--r--src/platformsupport/kmsconvenience/.prev_CMakeLists.txt25
-rw-r--r--src/platformsupport/kmsconvenience/CMakeLists.txt27
-rw-r--r--src/platformsupport/linuxaccessibility/.prev_CMakeLists.txt46
-rw-r--r--src/platformsupport/linuxaccessibility/CMakeLists.txt48
-rw-r--r--src/platformsupport/platformcompositor/CMakeLists.txt25
-rw-r--r--src/platformsupport/services/CMakeLists.txt34
-rw-r--r--src/platformsupport/themes/CMakeLists.txt58
-rw-r--r--src/platformsupport/vkconvenience/.prev_CMakeLists.txt27
-rw-r--r--src/platformsupport/vkconvenience/CMakeLists.txt29
-rw-r--r--src/platformsupport/windowsuiautomation/CMakeLists.txt32
-rw-r--r--src/plugins/CMakeLists.txt25
-rw-r--r--src/plugins/bearer/.prev_CMakeLists.txt12
-rw-r--r--src/plugins/bearer/CMakeLists.txt14
-rw-r--r--src/plugins/bearer/android/CMakeLists.txt4
-rw-r--r--src/plugins/bearer/android/jar/.prev_CMakeLists.txt18
-rw-r--r--src/plugins/bearer/android/jar/CMakeLists.txt19
-rw-r--r--src/plugins/bearer/android/src/CMakeLists.txt27
-rw-r--r--src/plugins/bearer/connman/CMakeLists.txt28
-rw-r--r--src/plugins/bearer/corewlan/CMakeLists.txt36
-rw-r--r--src/plugins/bearer/generic/CMakeLists.txt34
-rw-r--r--src/plugins/bearer/networkmanager/CMakeLists.txt28
-rw-r--r--src/plugins/generic/.prev_CMakeLists.txt23
-rw-r--r--src/plugins/generic/CMakeLists.txt23
-rw-r--r--src/plugins/generic/evdevkeyboard/CMakeLists.txt25
-rw-r--r--src/plugins/generic/evdevmouse/CMakeLists.txt25
-rw-r--r--src/plugins/generic/evdevtablet/CMakeLists.txt25
-rw-r--r--src/plugins/generic/evdevtouch/CMakeLists.txt25
-rw-r--r--src/plugins/generic/libinput/CMakeLists.txt25
-rw-r--r--src/plugins/generic/tslib/.prev_CMakeLists.txt26
-rw-r--r--src/plugins/generic/tslib/CMakeLists.txt28
-rw-r--r--src/plugins/generic/tuiotouch/CMakeLists.txt31
-rw-r--r--src/plugins/imageformats/CMakeLists.txt11
-rw-r--r--src/plugins/imageformats/gif/.prev_CMakeLists.txt20
-rw-r--r--src/plugins/imageformats/gif/CMakeLists.txt21
-rw-r--r--src/plugins/imageformats/ico/.prev_CMakeLists.txt22
-rw-r--r--src/plugins/imageformats/ico/CMakeLists.txt22
-rw-r--r--src/plugins/imageformats/jpeg/.prev_CMakeLists.txt24
-rw-r--r--src/plugins/imageformats/jpeg/CMakeLists.txt26
-rw-r--r--src/plugins/platforminputcontexts/CMakeLists.txt8
-rw-r--r--src/plugins/platforminputcontexts/compose/.prev_CMakeLists.txt25
-rw-r--r--src/plugins/platforminputcontexts/compose/CMakeLists.txt28
-rw-r--r--src/plugins/platforminputcontexts/ibus/CMakeLists.txt30
-rw-r--r--src/plugins/platforms/.prev_CMakeLists.txt57
-rw-r--r--src/plugins/platforms/CMakeLists.txt57
-rw-r--r--src/plugins/platforms/android/.prev_CMakeLists.txt91
-rw-r--r--src/plugins/platforms/android/CMakeLists.txt100
-rw-r--r--src/plugins/platforms/cocoa/.prev_CMakeLists.txt143
-rw-r--r--src/plugins/platforms/cocoa/CMakeLists.txt147
-rw-r--r--src/plugins/platforms/directfb/.prev_CMakeLists.txt68
-rw-r--r--src/plugins/platforms/directfb/CMakeLists.txt72
-rw-r--r--src/plugins/platforms/eglfs/.prev_CMakeLists.txt122
-rw-r--r--src/plugins/platforms/eglfs/CMakeLists.txt109
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/.prev_CMakeLists.txt38
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/CMakeLists.txt38
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_emu/CMakeLists.txt31
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/CMakeLists.txt42
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/CMakeLists.txt39
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/CMakeLists.txt35
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/CMakeLists.txt31
-rw-r--r--src/plugins/platforms/linuxfb/.prev_CMakeLists.txt56
-rw-r--r--src/plugins/platforms/linuxfb/CMakeLists.txt57
-rw-r--r--src/plugins/platforms/minimal/.prev_CMakeLists.txt41
-rw-r--r--src/plugins/platforms/minimal/CMakeLists.txt42
-rw-r--r--src/plugins/platforms/minimalegl/.prev_CMakeLists.txt44
-rw-r--r--src/plugins/platforms/minimalegl/CMakeLists.txt45
-rw-r--r--src/plugins/platforms/offscreen/.prev_CMakeLists.txt46
-rw-r--r--src/plugins/platforms/offscreen/CMakeLists.txt47
-rw-r--r--src/plugins/platforms/vnc/.prev_CMakeLists.txt52
-rw-r--r--src/plugins/platforms/vnc/CMakeLists.txt53
-rw-r--r--src/plugins/platforms/windows/.prev_CMakeLists.txt243
-rw-r--r--src/plugins/platforms/windows/CMakeLists.txt236
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.cpp2
-rw-r--r--src/plugins/platforms/xcb/.prev_CMakeLists.txt181
-rw-r--r--src/plugins/platforms/xcb/CMakeLists.txt210
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/CMakeLists.txt8
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_egl/CMakeLists.txt34
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_glx/CMakeLists.txt47
-rw-r--r--src/plugins/platformthemes/CMakeLists.txt8
-rw-r--r--src/plugins/platformthemes/gtk3/.prev_CMakeLists.txt30
-rw-r--r--src/plugins/platformthemes/gtk3/CMakeLists.txt34
-rw-r--r--src/plugins/platformthemes/xdgdesktopportal/CMakeLists.txt27
-rw-r--r--src/plugins/printsupport/.prev_CMakeLists.txt11
-rw-r--r--src/plugins/printsupport/CMakeLists.txt11
-rw-r--r--src/plugins/printsupport/cocoa/CMakeLists.txt25
-rw-r--r--src/plugins/printsupport/cups/.prev_CMakeLists.txt31
-rw-r--r--src/plugins/printsupport/cups/CMakeLists.txt33
-rw-r--r--src/plugins/sqldrivers/.prev_CMakeLists.txt15
-rw-r--r--src/plugins/sqldrivers/CMakeLists.txt55
-rw-r--r--src/plugins/sqldrivers/configure.cmake58
-rw-r--r--src/plugins/sqldrivers/configure.json4
-rw-r--r--src/plugins/sqldrivers/db2/CMakeLists.txt34
-rw-r--r--src/plugins/sqldrivers/mysql/CMakeLists.txt26
-rw-r--r--src/plugins/sqldrivers/oci/CMakeLists.txt34
-rw-r--r--src/plugins/sqldrivers/odbc/.prev_CMakeLists.txt34
-rw-r--r--src/plugins/sqldrivers/odbc/CMakeLists.txt36
-rw-r--r--src/plugins/sqldrivers/odbc/qsql_odbc.cpp2
-rw-r--r--src/plugins/sqldrivers/psql/.prev_CMakeLists.txt26
-rw-r--r--src/plugins/sqldrivers/psql/CMakeLists.txt31
-rw-r--r--src/plugins/sqldrivers/sqlite/.prev_CMakeLists.txt95
-rw-r--r--src/plugins/sqldrivers/sqlite/CMakeLists.txt35
-rw-r--r--src/plugins/styles/.prev_CMakeLists.txt11
-rw-r--r--src/plugins/styles/CMakeLists.txt11
-rw-r--r--src/plugins/styles/mac/CMakeLists.txt25
-rw-r--r--src/printsupport/CMakeLists.txt176
-rw-r--r--src/printsupport/configure.cmake58
-rw-r--r--src/sql/CMakeLists.txt56
-rw-r--r--src/sql/configure.cmake21
-rw-r--r--src/testlib/.prev_CMakeLists.txt147
-rw-r--r--src/testlib/CMakeLists.txt133
-rw-r--r--src/testlib/Qt5TestConfigExtras.cmake.in5
-rw-r--r--src/testlib/configure.cmake31
-rw-r--r--src/testlib/qtestcase.cpp22
-rw-r--r--src/testlib/qtestcase.h11
-rw-r--r--src/tools/CMakeLists.txt12
-rw-r--r--src/tools/androiddeployqt/.prev_CMakeLists.txt28
-rw-r--r--src/tools/androiddeployqt/CMakeLists.txt28
-rw-r--r--src/tools/bootstrap/.prev_CMakeLists.txt210
-rw-r--r--src/tools/bootstrap/CMakeLists.txt198
-rw-r--r--src/tools/moc/.prev_CMakeLists.txt33
-rw-r--r--src/tools/moc/CMakeLists.txt35
-rw-r--r--src/tools/qdbuscpp2xml/.prev_CMakeLists.txt48
-rw-r--r--src/tools/qdbuscpp2xml/CMakeLists.txt48
-rw-r--r--src/tools/qdbusxml2cpp/.prev_CMakeLists.txt37
-rw-r--r--src/tools/qdbusxml2cpp/CMakeLists.txt36
-rw-r--r--src/tools/qlalr/.prev_CMakeLists.txt27
-rw-r--r--src/tools/qlalr/CMakeLists.txt28
-rw-r--r--src/tools/qvkgen/.prev_CMakeLists.txt17
-rw-r--r--src/tools/qvkgen/CMakeLists.txt18
-rw-r--r--src/tools/rcc/.prev_CMakeLists.txt38
-rw-r--r--src/tools/rcc/CMakeLists.txt39
-rw-r--r--src/tools/tracegen/.prev_CMakeLists.txt21
-rw-r--r--src/tools/tracegen/CMakeLists.txt22
-rw-r--r--src/tools/uic/.prev_CMakeLists.txt45
-rw-r--r--src/tools/uic/CMakeLists.txt46
-rw-r--r--src/widgets/.prev_CMakeLists.txt839
-rw-r--r--src/widgets/CMakeLists.txt843
-rw-r--r--src/widgets/Qt5WidgetsConfigExtras.cmake.in19
-rw-r--r--src/widgets/Qt6WidgetsMacros.cmake (renamed from src/widgets/Qt5WidgetsMacros.cmake)2
-rw-r--r--src/widgets/configure.cmake563
-rw-r--r--src/winmain/.prev_CMakeLists.txt48
-rw-r--r--src/winmain/CMakeLists.txt28
-rw-r--r--src/xml/CMakeLists.txt34
-rw-r--r--src/xml/configure.cmake22
-rw-r--r--tests/CMakeLists.txt17
-rw-r--r--tests/auto/CMakeLists.txt55
-rw-r--r--tests/auto/concurrent/CMakeLists.txt8
-rw-r--r--tests/auto/concurrent/qtconcurrentfilter/CMakeLists.txt16
-rw-r--r--tests/auto/concurrent/qtconcurrentiteratekernel/CMakeLists.txt12
-rw-r--r--tests/auto/concurrent/qtconcurrentmap/CMakeLists.txt19
-rw-r--r--tests/auto/concurrent/qtconcurrentmedian/CMakeLists.txt14
-rw-r--r--tests/auto/concurrent/qtconcurrentrun/CMakeLists.txt18
-rw-r--r--tests/auto/concurrent/qtconcurrentthreadengine/CMakeLists.txt12
-rw-r--r--tests/auto/corelib/.prev_CMakeLists.txt18
-rw-r--r--tests/auto/corelib/CMakeLists.txt18
-rw-r--r--tests/auto/corelib/animation/CMakeLists.txt6
-rw-r--r--tests/auto/corelib/animation/qabstractanimation/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/animation/qanimationgroup/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/animation/qparallelanimationgroup/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/animation/qpauseanimation/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/animation/qsequentialanimationgroup/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/animation/qvariantanimation/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/codecs/CMakeLists.txt3
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/CMakeLists.txt5
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/echo/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/codecs/utf8/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/global/CMakeLists.txt12
-rw-r--r--tests/auto/corelib/global/q_func_info/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/global/qflags/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/global/qfloat16/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/global/qgetputenv/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/global/qglobal/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/global/qglobalstatic/CMakeLists.txt9
-rw-r--r--tests/auto/corelib/global/qhooks/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/global/qlogging/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/global/qlogging/test/test.pro1
-rw-r--r--tests/auto/corelib/global/qlogging/tst_qlogging.cpp4
-rw-r--r--tests/auto/corelib/global/qnumeric/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/global/qrand/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/global/qrandomgenerator/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/global/qtendian/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/io/.prev_CMakeLists.txt56
-rw-r--r--tests/auto/corelib/io/CMakeLists.txt56
-rw-r--r--tests/auto/corelib/io/largefile/CMakeLists.txt14
-rw-r--r--tests/auto/corelib/io/qabstractfileengine/CMakeLists.txt22
-rw-r--r--tests/auto/corelib/io/qbuffer/CMakeLists.txt11
-rw-r--r--tests/auto/corelib/io/qdataurl/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/io/qdebug/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/io/qdir/CMakeLists.txt91
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/io/qdiriterator/CMakeLists.txt35
-rw-r--r--tests/auto/corelib/io/qfile/.prev_CMakeLists.txt90
-rw-r--r--tests/auto/corelib/io/qfile/CMakeLists.txt90
-rw-r--r--tests/auto/corelib/io/qfile/stdinprocess/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/io/qfileinfo/CMakeLists.txt40
-rw-r--r--tests/auto/corelib/io/qfilesystementry/CMakeLists.txt14
-rw-r--r--tests/auto/corelib/io/qfilesystemmetadata/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/CMakeLists.txt11
-rw-r--r--tests/auto/corelib/io/qiodevice/CMakeLists.txt32
-rw-r--r--tests/auto/corelib/io/qipaddress/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/io/qlockfile/CMakeLists.txt24
-rw-r--r--tests/auto/corelib/io/qlockfile/qlockfiletesthelper/.prev_CMakeLists.txt11
-rw-r--r--tests/auto/corelib/io/qlockfile/qlockfiletesthelper/CMakeLists.txt12
-rw-r--r--tests/auto/corelib/io/qloggingcategory/CMakeLists.txt16
-rw-r--r--tests/auto/corelib/io/qloggingregistry/CMakeLists.txt32
-rw-r--r--tests/auto/corelib/io/qnodebug/CMakeLists.txt11
-rw-r--r--tests/auto/corelib/io/qprocess-noapplication/CMakeLists.txt11
-rw-r--r--tests/auto/corelib/io/qprocessenvironment/CMakeLists.txt11
-rw-r--r--tests/auto/corelib/io/qsavefile/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/io/qsettings/CMakeLists.txt48
-rw-r--r--tests/auto/corelib/io/qstandardpaths/CMakeLists.txt27
-rw-r--r--tests/auto/corelib/io/qstorageinfo/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/io/qtemporarydir/CMakeLists.txt16
-rw-r--r--tests/auto/corelib/io/qtemporaryfile/CMakeLists.txt39
-rw-r--r--tests/auto/corelib/io/qurl/CMakeLists.txt21
-rw-r--r--tests/auto/corelib/io/qurlinternal/CMakeLists.txt14
-rw-r--r--tests/auto/corelib/io/qurlquery/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/itemmodels/CMakeLists.txt19
-rw-r--r--tests/auto/corelib/itemmodels/qabstractitemmodel/CMakeLists.txt17
-rw-r--r--tests/auto/corelib/itemmodels/qabstractproxymodel/CMakeLists.txt14
-rw-r--r--tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/CMakeLists.txt12
-rw-r--r--tests/auto/corelib/itemmodels/qidentityproxymodel/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/itemmodels/qitemmodel/CMakeLists.txt14
-rw-r--r--tests/auto/corelib/itemmodels/qitemselectionmodel/CMakeLists.txt12
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel_recursive/CMakeLists.txt14
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel_regexp/CMakeLists.txt18
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/CMakeLists.txt18
-rw-r--r--tests/auto/corelib/itemmodels/qstringlistmodel/CMakeLists.txt11
-rw-r--r--tests/auto/corelib/itemmodels/qtransposeproxymodel/CMakeLists.txt12
-rw-r--r--tests/auto/corelib/kernel/.prev_CMakeLists.txt40
-rw-r--r--tests/auto/corelib/kernel/CMakeLists.txt40
-rw-r--r--tests/auto/corelib/kernel/qdeadlinetimer/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/kernel/qelapsedtimer/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/kernel/qeventdispatcher/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/kernel/qeventloop/CMakeLists.txt30
-rw-r--r--tests/auto/corelib/kernel/qmath/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/kernel/qmetaenum/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/kernel/qmetamethod/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/CMakeLists.txt21
-rw-r--r--tests/auto/corelib/kernel/qmetaobjectbuilder/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/kernel/qmetaproperty/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/kernel/qmetatype/CMakeLists.txt41
-rw-r--r--tests/auto/corelib/kernel/qmimedata/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/kernel/qobject/CMakeLists.txt29
-rw-r--r--tests/auto/corelib/kernel/qobject/signalbug/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/kernel/qpointer/CMakeLists.txt21
-rw-r--r--tests/auto/corelib/kernel/qsharedmemory/CMakeLists.txt30
-rw-r--r--tests/auto/corelib/kernel/qsharedmemory/producerconsumer/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/kernel/qsignalblocker/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/kernel/qsignalmapper/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/kernel/qsocketnotifier/CMakeLists.txt36
-rw-r--r--tests/auto/corelib/kernel/qsystemsemaphore/CMakeLists.txt20
-rw-r--r--tests/auto/corelib/kernel/qsystemsemaphore/acquirerelease/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/kernel/qtimer/CMakeLists.txt21
-rw-r--r--tests/auto/corelib/kernel/qtranslator/CMakeLists.txt33
-rw-r--r--tests/auto/corelib/kernel/qvariant/CMakeLists.txt35
-rw-r--r--tests/auto/corelib/kernel/qwineventnotifier/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/mimetypes/CMakeLists.txt14
-rw-r--r--tests/auto/corelib/mimetypes/qmimedatabase/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/.prev_CMakeLists.txt78
-rw-r--r--tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/CMakeLists.txt73
-rw-r--r--tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/.prev_CMakeLists.txt78
-rw-r--r--tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/CMakeLists.txt72
-rw-r--r--tests/auto/corelib/mimetypes/qmimetype/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/serialization/CMakeLists.txt17
-rw-r--r--tests/auto/corelib/serialization/json/CMakeLists.txt35
-rw-r--r--tests/auto/corelib/serialization/qcborstreamreader/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/serialization/qcborstreamwriter/CMakeLists.txt14
-rw-r--r--tests/auto/corelib/serialization/qcborvalue/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/serialization/qcborvalue_json/CMakeLists.txt12
-rw-r--r--tests/auto/corelib/serialization/qdatastream/CMakeLists.txt32
-rw-r--r--tests/auto/corelib/serialization/qdatastream/qdatastream.pro2
-rw-r--r--tests/auto/corelib/serialization/qdatastream_core_pixmap/CMakeLists.txt12
-rw-r--r--tests/auto/corelib/serialization/qtextstream/CMakeLists.txt6
-rw-r--r--tests/auto/corelib/serialization/qtextstream/readAllStdinProcess/CMakeLists.txt12
-rw-r--r--tests/auto/corelib/serialization/qtextstream/readLineStdinProcess/CMakeLists.txt12
-rw-r--r--tests/auto/corelib/serialization/qtextstream/stdinProcess/CMakeLists.txt12
-rw-r--r--tests/auto/corelib/serialization/qtextstream/test/CMakeLists.txt55
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/CMakeLists.txt18
-rw-r--r--tests/auto/corelib/statemachine/CMakeLists.txt2
-rw-r--r--tests/auto/corelib/statemachine/qstate/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/text/CMakeLists.txt22
-rw-r--r--tests/auto/corelib/text/qbytearraylist/CMakeLists.txt11
-rw-r--r--tests/auto/corelib/text/qbytedatabuffer/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/text/qregexp/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/text/qregularexpression/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/text/qstring_no_cast_from_bytearray/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/text/qstringbuilder/qstringbuilder1/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/text/qstringbuilder/qstringbuilder2/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/text/qstringbuilder/qstringbuilder3/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/text/qstringbuilder/qstringbuilder4/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/text/qstringiterator/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/text/qstringlist/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/text/qstringmatcher/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/text/qstringref/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/thread/CMakeLists.txt24
-rw-r--r--tests/auto/corelib/thread/qatomicint/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/CMakeLists.txt18
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/char/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/char16_t/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/char32_t/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/int/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/long/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/qlonglong/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/qptrdiff/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/quintptr/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/qulonglong/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/schar/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/short/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/uchar/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/uint/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/ulong/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/ushort/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/wchar_t/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/thread/qatomicpointer/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/thread/qfuture/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/thread/qfuturesynchronizer/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/thread/qfuturewatcher/CMakeLists.txt14
-rw-r--r--tests/auto/corelib/thread/qmutex/CMakeLists.txt20
-rw-r--r--tests/auto/corelib/thread/qmutexlocker/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/thread/qreadlocker/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/thread/qreadwritelock/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/thread/qresultstore/CMakeLists.txt14
-rw-r--r--tests/auto/corelib/thread/qsemaphore/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/thread/qthread/CMakeLists.txt18
-rw-r--r--tests/auto/corelib/thread/qthreadonce/CMakeLists.txt11
-rw-r--r--tests/auto/corelib/thread/qthreadpool/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/CMakeLists.txt21
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/crashonexit/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/thread/qwaitcondition/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/thread/qwritelocker/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/time/CMakeLists.txt7
-rw-r--r--tests/auto/corelib/time/qcalendar/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/time/qdate/CMakeLists.txt12
-rw-r--r--tests/auto/corelib/time/qdatetime/CMakeLists.txt26
-rw-r--r--tests/auto/corelib/time/qtime/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/time/qtimezone/CMakeLists.txt27
-rw-r--r--tests/auto/corelib/tools/CMakeLists.txt50
-rw-r--r--tests/auto/corelib/tools/qalgorithms/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qarraydata/CMakeLists.txt4
-rw-r--r--tests/auto/corelib/tools/qbitarray/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qcache/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qcommandlineparser/CMakeLists.txt3
-rw-r--r--tests/auto/corelib/tools/qcommandlineparser/testhelper/CMakeLists.txt20
-rw-r--r--tests/auto/corelib/tools/qcontiguouscache/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qeasingcurve/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qexplicitlyshareddatapointer/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qhash/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qhashfunctions/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qlinkedlist/.prev_CMakeLists.txt15
-rw-r--r--tests/auto/corelib/tools/qlinkedlist/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/tools/qlist/CMakeLists.txt13
-rw-r--r--tests/auto/corelib/tools/qmakearray/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qmap/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qmargins/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qmessageauthenticationcode/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qpair/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qpoint/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qpointf/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qqueue/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qrect/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qringbuffer/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qscopedpointer/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qscopedvaluerollback/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qscopeguard/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qset/.prev_CMakeLists.txt15
-rw-r--r--tests/auto/corelib/tools/qset/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/tools/qsize/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qsizef/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qstl/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qtimeline/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/tools/qvarlengtharray/CMakeLists.txt13
-rw-r--r--tests/auto/dbus/CMakeLists.txt29
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/qmyserver/CMakeLists.txt16
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/CMakeLists.txt21
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/qpinger/CMakeLists.txt16
-rw-r--r--tests/auto/dbus/qdbusconnection/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbusconnection_delayed/CMakeLists.txt14
-rw-r--r--tests/auto/dbus/qdbusconnection_no_app/CMakeLists.txt16
-rw-r--r--tests/auto/dbus/qdbusconnection_no_bus/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbusconnection_no_libdbus/CMakeLists.txt15
-rw-r--r--tests/auto/dbus/qdbusconnection_no_libdbus/tst_qdbusconnection_no_libdbus.cpp73
-rw-r--r--tests/auto/dbus/qdbusconnection_spyhook/CMakeLists.txt17
-rw-r--r--tests/auto/dbus/qdbuscontext/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbusinterface/CMakeLists.txt41
-rw-r--r--tests/auto/dbus/qdbusinterface/qmyserver/CMakeLists.txt19
-rw-r--r--tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp2
-rw-r--r--tests/auto/dbus/qdbuslocalcalls/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbusmarshall/CMakeLists.txt4
-rw-r--r--tests/auto/dbus/qdbusmarshall/qdbusmarshall/CMakeLists.txt35
-rw-r--r--tests/auto/dbus/qdbusmarshall/qpong/CMakeLists.txt13
-rw-r--r--tests/auto/dbus/qdbusmetaobject/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbusmetatype/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbuspendingcall/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbuspendingreply/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbusreply/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbusservicewatcher/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbusthreading/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbustype/CMakeLists.txt34
-rw-r--r--tests/auto/dbus/qdbusxmlparser/CMakeLists.txt14
-rw-r--r--tests/auto/gui/.prev_CMakeLists.txt19
-rw-r--r--tests/auto/gui/CMakeLists.txt19
-rw-r--r--tests/auto/gui/image/CMakeLists.txt15
-rw-r--r--tests/auto/gui/image/qimageiohandler/CMakeLists.txt1
-rw-r--r--tests/auto/gui/image/qpicture/CMakeLists.txt1
-rw-r--r--tests/auto/gui/image/qpixmapcache/CMakeLists.txt15
-rw-r--r--tests/auto/gui/itemmodels/CMakeLists.txt4
-rw-r--r--tests/auto/gui/itemmodels/qstandarditem/CMakeLists.txt1
-rw-r--r--tests/auto/gui/kernel/CMakeLists.txt38
-rw-r--r--tests/auto/gui/kernel/qcursor/CMakeLists.txt1
-rw-r--r--tests/auto/gui/kernel/qevent/CMakeLists.txt1
-rw-r--r--tests/auto/gui/kernel/qfileopenevent/CMakeLists.txt2
-rw-r--r--tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/CMakeLists.txt1
-rw-r--r--tests/auto/gui/kernel/qfileopenevent/test/CMakeLists.txt1
-rw-r--r--tests/auto/gui/kernel/qguivariant/CMakeLists.txt2
-rw-r--r--tests/auto/gui/kernel/qguivariant/no_application/CMakeLists.txt1
-rw-r--r--tests/auto/gui/kernel/qmouseevent/CMakeLists.txt1
-rw-r--r--tests/auto/gui/kernel/qpalette/CMakeLists.txt1
-rw-r--r--tests/auto/gui/math3d/CMakeLists.txt3
-rw-r--r--tests/auto/gui/math3d/qmatrixnxn/CMakeLists.txt5
-rw-r--r--tests/auto/gui/math3d/qquaternion/CMakeLists.txt1
-rw-r--r--tests/auto/gui/math3d/qvectornd/CMakeLists.txt1
-rw-r--r--tests/auto/gui/painting/CMakeLists.txt20
-rw-r--r--tests/auto/gui/painting/qpagesize/CMakeLists.txt1
-rw-r--r--tests/auto/gui/painting/qpaintengine/CMakeLists.txt1
-rw-r--r--tests/auto/gui/painting/qpainterpath/CMakeLists.txt1
-rw-r--r--tests/auto/gui/painting/qpainterpathstroker/CMakeLists.txt1
-rw-r--r--tests/auto/gui/painting/qpen/CMakeLists.txt1
-rw-r--r--tests/auto/gui/util/CMakeLists.txt13
-rw-r--r--tests/auto/gui/util/qdoublevalidator/CMakeLists.txt1
-rw-r--r--tests/auto/gui/util/qintvalidator/CMakeLists.txt1
-rw-r--r--tests/auto/gui/util/qregexpvalidator/CMakeLists.txt1
-rw-r--r--tests/auto/gui/util/qregularexpressionvalidator/CMakeLists.txt1
-rw-r--r--tests/auto/network/CMakeLists.txt7
-rw-r--r--tests/auto/network/access/CMakeLists.txt21
-rw-r--r--tests/auto/network/access/hpack/CMakeLists.txt20
-rw-r--r--tests/auto/network/access/hsts/CMakeLists.txt20
-rw-r--r--tests/auto/network/access/http2/CMakeLists.txt25
-rw-r--r--tests/auto/network/access/qabstractnetworkcache/CMakeLists.txt26
-rw-r--r--tests/auto/network/access/qftp/CMakeLists.txt19
-rw-r--r--tests/auto/network/access/qhttpnetworkconnection/CMakeLists.txt20
-rw-r--r--tests/auto/network/access/qhttpnetworkreply/CMakeLists.txt19
-rw-r--r--tests/auto/network/access/qnetworkaccessmanager/CMakeLists.txt16
-rw-r--r--tests/auto/network/access/qnetworkcachemetadata/CMakeLists.txt16
-rw-r--r--tests/auto/network/access/qnetworkcookie/CMakeLists.txt16
-rw-r--r--tests/auto/network/access/qnetworkcookiejar/CMakeLists.txt23
-rw-r--r--tests/auto/network/access/qnetworkdiskcache/CMakeLists.txt16
-rw-r--r--tests/auto/network/access/qnetworkreply/CMakeLists.txt7
-rw-r--r--tests/auto/network/access/qnetworkreply/echo/CMakeLists.txt11
-rw-r--r--tests/auto/network/access/qnetworkreply/test/CMakeLists.txt61
-rw-r--r--tests/auto/network/access/qnetworkreply/test/test.pro2
-rw-r--r--tests/auto/network/access/qnetworkrequest/CMakeLists.txt16
-rw-r--r--tests/auto/network/access/spdy/CMakeLists.txt25
-rw-r--r--tests/auto/network/bearer/CMakeLists.txt6
-rw-r--r--tests/auto/network/bearer/qnetworkconfiguration/CMakeLists.txt17
-rw-r--r--tests/auto/network/bearer/qnetworkconfigurationmanager/CMakeLists.txt17
-rw-r--r--tests/auto/network/bearer/qnetworkconfigurationmanagerqappless/CMakeLists.txt17
-rw-r--r--tests/auto/network/bearer/qnetworksession/CMakeLists.txt7
-rw-r--r--tests/auto/network/bearer/qnetworksession/lackey/CMakeLists.txt13
-rw-r--r--tests/auto/network/bearer/qnetworksession/test/CMakeLists.txt34
-rw-r--r--tests/auto/network/kernel/CMakeLists.txt19
-rw-r--r--tests/auto/network/kernel/qauthenticator/CMakeLists.txt20
-rw-r--r--tests/auto/network/kernel/qdnslookup/CMakeLists.txt16
-rw-r--r--tests/auto/network/kernel/qdnslookup_appless/CMakeLists.txt16
-rw-r--r--tests/auto/network/kernel/qhostaddress/CMakeLists.txt26
-rw-r--r--tests/auto/network/kernel/qhostinfo/CMakeLists.txt30
-rw-r--r--tests/auto/network/kernel/qnetworkaddressentry/CMakeLists.txt16
-rw-r--r--tests/auto/network/kernel/qnetworkdatagram/CMakeLists.txt15
-rw-r--r--tests/auto/network/kernel/qnetworkinterface/CMakeLists.txt19
-rw-r--r--tests/auto/network/kernel/qnetworkproxy/CMakeLists.txt16
-rw-r--r--tests/auto/network/kernel/qnetworkproxyfactory/CMakeLists.txt18
-rw-r--r--tests/auto/network/socket/CMakeLists.txt20
-rw-r--r--tests/auto/network/socket/platformsocketengine/CMakeLists.txt37
-rw-r--r--tests/auto/network/socket/platformsocketengine/platformsocketengine.pri1
-rw-r--r--tests/auto/network/socket/qabstractsocket/CMakeLists.txt16
-rw-r--r--tests/auto/network/socket/qhttpsocketengine/CMakeLists.txt41
-rw-r--r--tests/auto/network/socket/qlocalsocket/CMakeLists.txt4
-rw-r--r--tests/auto/network/socket/qlocalsocket/socketprocess/CMakeLists.txt14
-rw-r--r--tests/auto/network/socket/qlocalsocket/test/CMakeLists.txt32
-rw-r--r--tests/auto/network/socket/qsctpsocket/CMakeLists.txt16
-rw-r--r--tests/auto/network/socket/qsocks5socketengine/CMakeLists.txt41
-rw-r--r--tests/auto/network/socket/qtcpserver/CMakeLists.txt4
-rw-r--r--tests/auto/network/socket/qtcpserver/crashingServer/CMakeLists.txt17
-rw-r--r--tests/auto/network/socket/qtcpserver/test/CMakeLists.txt29
-rw-r--r--tests/auto/network/socket/qtcpserver/test/test.pro6
-rw-r--r--tests/auto/network/socket/qtcpsocket/CMakeLists.txt7
-rw-r--r--tests/auto/network/socket/qtcpsocket/stressTest/CMakeLists.txt19
-rw-r--r--tests/auto/network/socket/qtcpsocket/test/CMakeLists.txt46
-rw-r--r--tests/auto/network/socket/qudpsocket/CMakeLists.txt4
-rw-r--r--tests/auto/network/socket/qudpsocket/clientserver/CMakeLists.txt13
-rw-r--r--tests/auto/network/socket/qudpsocket/test/CMakeLists.txt36
-rw-r--r--tests/auto/network/socket/qudpsocket/udpServer/CMakeLists.txt13
-rw-r--r--tests/auto/network/ssl/CMakeLists.txt36
-rw-r--r--tests/auto/network/ssl/qasn1element/CMakeLists.txt18
-rw-r--r--tests/auto/network/ssl/qdtls/CMakeLists.txt31
-rw-r--r--tests/auto/network/ssl/qdtlscookie/CMakeLists.txt27
-rw-r--r--tests/auto/network/ssl/qocsp/CMakeLists.txt27
-rw-r--r--tests/auto/network/ssl/qpassworddigestor/CMakeLists.txt16
-rw-r--r--tests/auto/network/ssl/qsslcertificate/CMakeLists.txt43
-rw-r--r--tests/auto/network/ssl/qsslcipher/CMakeLists.txt25
-rw-r--r--tests/auto/network/ssl/qssldiffiehellmanparameters/CMakeLists.txt16
-rw-r--r--tests/auto/network/ssl/qsslellipticcurve/CMakeLists.txt16
-rw-r--r--tests/auto/network/ssl/qsslerror/CMakeLists.txt25
-rw-r--r--tests/auto/network/ssl/qsslkey/CMakeLists.txt43
-rw-r--r--tests/auto/network/ssl/qsslsocket/CMakeLists.txt38
-rw-r--r--tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/CMakeLists.txt35
-rw-r--r--tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/CMakeLists.txt34
-rw-r--r--tests/auto/opengl/CMakeLists.txt6
-rw-r--r--tests/auto/opengl/qgl/CMakeLists.txt35
-rw-r--r--tests/auto/opengl/qglbuffer/CMakeLists.txt1
-rw-r--r--tests/auto/opengl/qglfunctions/CMakeLists.txt1
-rw-r--r--tests/auto/opengl/qglthreads/CMakeLists.txt7
-rw-r--r--tests/auto/other/qtokenautomaton/CMakeLists.txt15
-rw-r--r--tests/auto/other/toolsupport/CMakeLists.txt1
-rw-r--r--tests/auto/other/xkbkeyboard/CMakeLists.txt2
-rw-r--r--tests/auto/printsupport/CMakeLists.txt4
-rw-r--r--tests/auto/printsupport/dialogs/CMakeLists.txt3
-rw-r--r--tests/auto/printsupport/dialogs/qabstractprintdialog/CMakeLists.txt13
-rw-r--r--tests/auto/printsupport/kernel/CMakeLists.txt5
-rw-r--r--tests/auto/printsupport/kernel/qprintdevice/CMakeLists.txt14
-rw-r--r--tests/auto/printsupport/kernel/qprinter/CMakeLists.txt13
-rw-r--r--tests/auto/printsupport/kernel/qprinterinfo/CMakeLists.txt14
-rw-r--r--tests/auto/sql/CMakeLists.txt4
-rw-r--r--tests/auto/sql/kernel/CMakeLists.txt9
-rw-r--r--tests/auto/sql/kernel/qsql/CMakeLists.txt6
-rw-r--r--tests/auto/sql/kernel/qsqldatabase/CMakeLists.txt6
-rw-r--r--tests/auto/sql/kernel/qsqldriver/CMakeLists.txt6
-rw-r--r--tests/auto/sql/kernel/qsqlerror/CMakeLists.txt1
-rw-r--r--tests/auto/sql/kernel/qsqlfield/CMakeLists.txt1
-rw-r--r--tests/auto/sql/kernel/qsqlquery/CMakeLists.txt6
-rw-r--r--tests/auto/sql/kernel/qsqlrecord/CMakeLists.txt1
-rw-r--r--tests/auto/sql/kernel/qsqlresult/CMakeLists.txt8
-rw-r--r--tests/auto/sql/kernel/qsqlthread/CMakeLists.txt6
-rw-r--r--tests/auto/sql/models/CMakeLists.txt6
-rw-r--r--tests/auto/sql/models/qsqlquerymodel/CMakeLists.txt7
-rw-r--r--tests/auto/sql/models/qsqlrelationaldelegate/CMakeLists.txt7
-rw-r--r--tests/auto/sql/models/qsqlrelationaltablemodel/CMakeLists.txt6
-rw-r--r--tests/auto/sql/models/qsqltablemodel/CMakeLists.txt6
-rw-r--r--tests/auto/testlib/.prev_CMakeLists.txt8
-rw-r--r--tests/auto/testlib/CMakeLists.txt8
-rw-r--r--tests/auto/testlib/qabstractitemmodeltester/CMakeLists.txt8
-rw-r--r--tests/auto/testlib/qsignalspy/CMakeLists.txt1
-rw-r--r--tests/auto/testlib/selftests/.prev_CMakeLists.txt9
-rw-r--r--tests/auto/testlib/selftests/CMakeLists.txt411
-rw-r--r--tests/auto/testlib/selftests/assert/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/assert/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/badxml/.prev_CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/badxml/CMakeLists.txt26
-rw-r--r--tests/auto/testlib/selftests/benchlibcallgrind/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/benchlibcallgrind/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/benchlibcounting/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/benchlibcounting/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/benchlibeventcounter/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/benchlibeventcounter/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/benchliboptions/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/benchliboptions/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/benchlibtickcounter/.prev_CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/benchlibtickcounter/CMakeLists.txt26
-rw-r--r--tests/auto/testlib/selftests/benchlibwalltime/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/benchlibwalltime/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/blacklisted/.prev_CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/blacklisted/CMakeLists.txt26
-rw-r--r--tests/auto/testlib/selftests/cmptest/.prev_CMakeLists.txt27
-rw-r--r--tests/auto/testlib/selftests/cmptest/CMakeLists.txt29
-rw-r--r--tests/auto/testlib/selftests/commandlinedata/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/commandlinedata/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/counting/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/counting/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/crashes/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/crashes/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/datatable/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/datatable/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/datetime/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/datetime/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/deleteLater/.prev_CMakeLists.txt16
-rw-r--r--tests/auto/testlib/selftests/deleteLater/CMakeLists.txt18
-rw-r--r--tests/auto/testlib/selftests/deleteLater_noApp/.prev_CMakeLists.txt16
-rw-r--r--tests/auto/testlib/selftests/deleteLater_noApp/CMakeLists.txt18
-rw-r--r--tests/auto/testlib/selftests/differentexec/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/differentexec/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/exceptionthrow/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/exceptionthrow/CMakeLists.txt25
-rw-r--r--tests/auto/testlib/selftests/expectfail/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/expectfail/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/failcleanup/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/failcleanup/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/faildatatype/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/faildatatype/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/failfetchtype/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/failfetchtype/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/failinit/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/failinit/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/failinitdata/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/failinitdata/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/fetchbogus/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/fetchbogus/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/findtestdata/.prev_CMakeLists.txt27
-rw-r--r--tests/auto/testlib/selftests/findtestdata/CMakeLists.txt29
-rw-r--r--tests/auto/testlib/selftests/float/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/float/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/globaldata/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/globaldata/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/keyboard/.prev_CMakeLists.txt26
-rw-r--r--tests/auto/testlib/selftests/keyboard/CMakeLists.txt28
-rw-r--r--tests/auto/testlib/selftests/longstring/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/longstring/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/maxwarnings/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/maxwarnings/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/mouse/.prev_CMakeLists.txt26
-rw-r--r--tests/auto/testlib/selftests/mouse/CMakeLists.txt28
-rw-r--r--tests/auto/testlib/selftests/multiexec/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/multiexec/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/pairdiagnostics/.prev_CMakeLists.txt16
-rw-r--r--tests/auto/testlib/selftests/pairdiagnostics/CMakeLists.txt18
-rw-r--r--tests/auto/testlib/selftests/printdatatags/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/printdatatags/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/printdatatagswithglobaltags/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/printdatatagswithglobaltags/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/qexecstringlist/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/qexecstringlist/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/signaldumper/.prev_CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/signaldumper/CMakeLists.txt26
-rw-r--r--tests/auto/testlib/selftests/silent/.prev_CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/silent/CMakeLists.txt26
-rw-r--r--tests/auto/testlib/selftests/singleskip/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/singleskip/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/skip/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/skip/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/skipcleanup/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/skipcleanup/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/skipinit/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/skipinit/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/skipinitdata/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/skipinitdata/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/sleep/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/sleep/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/strcmp/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/strcmp/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/subtest/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/subtest/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/testlib/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/testlib/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/tuplediagnostics/.prev_CMakeLists.txt16
-rw-r--r--tests/auto/testlib/selftests/tuplediagnostics/CMakeLists.txt18
-rw-r--r--tests/auto/testlib/selftests/verbose1/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/verbose1/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/verbose2/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/verbose2/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/verifyexceptionthrown/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/verifyexceptionthrown/CMakeLists.txt25
-rw-r--r--tests/auto/testlib/selftests/warnings/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/warnings/CMakeLists.txt24
-rw-r--r--tests/auto/testlib/selftests/watchdog/.prev_CMakeLists.txt25
-rw-r--r--tests/auto/testlib/selftests/watchdog/CMakeLists.txt27
-rw-r--r--tests/auto/testlib/selftests/xunit/.prev_CMakeLists.txt22
-rw-r--r--tests/auto/testlib/selftests/xunit/CMakeLists.txt24
-rw-r--r--tests/auto/tools/CMakeLists.txt17
-rw-r--r--tests/auto/tools/qdbuscpp2xml/CMakeLists.txt27
-rw-r--r--tests/auto/tools/qdbusxml2cpp/CMakeLists.txt1
-rw-r--r--tests/auto/tools/qmake/CMakeLists.txt31
-rw-r--r--tests/auto/tools/qmakelib/CMakeLists.txt35
-rw-r--r--tests/auto/tools/uic/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/CMakeLists.txt10
-rw-r--r--tests/auto/widgets/dialogs/CMakeLists.txt19
-rw-r--r--tests/auto/widgets/dialogs/qcolordialog/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/dialogs/qdialog/CMakeLists.txt8
-rw-r--r--tests/auto/widgets/dialogs/qerrormessage/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog/CMakeLists.txt9
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog2/CMakeLists.txt10
-rw-r--r--tests/auto/widgets/dialogs/qfilesystemmodel/CMakeLists.txt31
-rw-r--r--tests/auto/widgets/dialogs/qfontdialog/CMakeLists.txt34
-rw-r--r--tests/auto/widgets/dialogs/qinputdialog/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/dialogs/qmessagebox/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/dialogs/qprogressdialog/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/dialogs/qsidebar/CMakeLists.txt5
-rw-r--r--tests/auto/widgets/dialogs/qwizard/CMakeLists.txt30
-rw-r--r--tests/auto/widgets/effects/CMakeLists.txt2
-rw-r--r--tests/auto/widgets/effects/qgraphicseffect/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/effects/qpixmapfilter/CMakeLists.txt5
-rw-r--r--tests/auto/widgets/graphicsview/CMakeLists.txt25
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsanchorlayout/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsanchorlayout1/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicseffectsource/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsgridlayout/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitem/CMakeLists.txt11
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitemanimation/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicslayout/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicslayoutitem/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicslinearlayout/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsobject/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicspixmapitem/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicspolygonitem/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsproxywidget/CMakeLists.txt10
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsscene/CMakeLists.txt15
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicssceneindex/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicstransform/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsview/CMakeLists.txt12
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicswidget/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/itemviews/CMakeLists.txt21
-rw-r--r--tests/auto/widgets/itemviews/qabstractitemview/CMakeLists.txt5
-rw-r--r--tests/auto/widgets/itemviews/qcolumnview/CMakeLists.txt11
-rw-r--r--tests/auto/widgets/itemviews/qdatawidgetmapper/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/itemviews/qdirmodel/CMakeLists.txt19
-rw-r--r--tests/auto/widgets/itemviews/qfileiconprovider/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/itemviews/qheaderview/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/itemviews/qitemdelegate/CMakeLists.txt3
-rw-r--r--tests/auto/widgets/itemviews/qitemeditorfactory/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/itemviews/qitemview/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/itemviews/qlistview/CMakeLists.txt13
-rw-r--r--tests/auto/widgets/itemviews/qlistwidget/CMakeLists.txt8
-rw-r--r--tests/auto/widgets/itemviews/qtableview/CMakeLists.txt7
-rw-r--r--tests/auto/widgets/itemviews/qtablewidget/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/itemviews/qtreeview/CMakeLists.txt11
-rw-r--r--tests/auto/widgets/itemviews/qtreewidget/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/itemviews/qtreewidgetitemiterator/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/kernel/CMakeLists.txt27
-rw-r--r--tests/auto/widgets/kernel/kernel.pro2
-rw-r--r--tests/auto/widgets/kernel/qaction/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/kernel/qactiongroup/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/kernel/qboxlayout/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/kernel/qdesktopwidget/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/kernel/qformlayout/CMakeLists.txt16
-rw-r--r--tests/auto/widgets/kernel/qgesturerecognizer/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/kernel/qgridlayout/CMakeLists.txt24
-rw-r--r--tests/auto/widgets/kernel/qlayout/CMakeLists.txt3
-rw-r--r--tests/auto/widgets/kernel/qshortcut/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/kernel/qsizepolicy/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/kernel/qstackedlayout/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/kernel/qtooltip/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/kernel/qwidget/CMakeLists.txt51
-rw-r--r--tests/auto/widgets/kernel/qwidget_window/CMakeLists.txt7
-rw-r--r--tests/auto/widgets/kernel/qwidgetaction/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/kernel/qwidgetmetatype/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/kernel/qwidgetsvariant/CMakeLists.txt8
-rw-r--r--tests/auto/widgets/kernel/qwindowcontainer/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/styles/CMakeLists.txt12
-rw-r--r--tests/auto/widgets/styles/qmacstyle/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/styles/qstyle/CMakeLists.txt15
-rw-r--r--tests/auto/widgets/styles/qstyleoption/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/styles/qstylesheetstyle/CMakeLists.txt9
-rw-r--r--tests/auto/widgets/util/CMakeLists.txt7
-rw-r--r--tests/auto/widgets/util/qcompleter/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/util/qscroller/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/util/qsystemtrayicon/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/util/qundogroup/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/util/qundostack/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/CMakeLists.txt55
-rw-r--r--tests/auto/widgets/widgets/qabstractbutton/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qabstractscrollarea/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qabstractslider/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qabstractspinbox/CMakeLists.txt7
-rw-r--r--tests/auto/widgets/widgets/qbuttongroup/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qcalendarwidget/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qcheckbox/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qcombobox/CMakeLists.txt8
-rw-r--r--tests/auto/widgets/widgets/qcommandlinkbutton/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qdatetimeedit/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/widgets/qdial/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qdialogbuttonbox/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qdockwidget/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/widgets/qdoublespinbox/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qfocusframe/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qfontcombobox/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qframe/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qgroupbox/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qkeysequenceedit/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qlabel/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/widgets/qlcdnumber/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qlineedit/CMakeLists.txt9
-rw-r--r--tests/auto/widgets/widgets/qmainwindow/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qmdiarea/CMakeLists.txt11
-rw-r--r--tests/auto/widgets/widgets/qmdisubwindow/CMakeLists.txt7
-rw-r--r--tests/auto/widgets/widgets/qmenu/CMakeLists.txt13
-rw-r--r--tests/auto/widgets/widgets/qmenubar/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/widgets/qopenglwidget/CMakeLists.txt6
-rw-r--r--tests/auto/widgets/widgets/qplaintextedit/CMakeLists.txt7
-rw-r--r--tests/auto/widgets/widgets/qprogressbar/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qpushbutton/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qradiobutton/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qscrollarea/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qscrollbar/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qsizegrip/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qslider/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qspinbox/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qsplashscreen/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qsplitter/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qstackedwidget/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qstatusbar/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qtabbar/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qtabwidget/CMakeLists.txt3
-rw-r--r--tests/auto/widgets/widgets/qtextbrowser/CMakeLists.txt24
-rw-r--r--tests/auto/widgets/widgets/qtextedit/CMakeLists.txt32
-rw-r--r--tests/auto/widgets/widgets/qtoolbar/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qtoolbox/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/widgets/qtoolbutton/CMakeLists.txt1
-rw-r--r--tests/auto/xml/CMakeLists.txt4
-rw-r--r--tests/auto/xml/dom/CMakeLists.txt3
-rw-r--r--tests/auto/xml/dom/qdom/CMakeLists.txt21
-rw-r--r--tests/auto/xml/sax/CMakeLists.txt7
-rw-r--r--tests/auto/xml/sax/qxml/CMakeLists.txt16
-rw-r--r--tests/auto/xml/sax/qxmlinputsource/CMakeLists.txt13
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/CMakeLists.txt27
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/parser/CMakeLists.txt19
-rw-r--r--tests/benchmarks/corelib/io/qdir/10000/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/io/qprocess/test/CMakeLists.txt5
-rw-r--r--tests/benchmarks/corelib/kernel/events/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/kernel/qcoreapplication/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/kernel/qmetatype/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/mimetypes/qmimedatabase/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/plugin/quuid/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/thread/qmutex/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/thread/qthreadpool/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/thread/qthreadstorage/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/thread/qwaitcondition/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/tools/containers-associative/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/tools/containers-sequential/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/tools/qalgorithms/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/tools/qchar/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/tools/qdatetime/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/tools/qlist/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/tools/qlocale/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/tools/qstring/CMakeLists.txt1
-rw-r--r--tests/benchmarks/corelib/tools/qtimezone/CMakeLists.txt1
-rw-r--r--tests/benchmarks/gui/image/blendbench/CMakeLists.txt3
-rw-r--r--tests/benchmarks/gui/image/qimagescale/CMakeLists.txt3
-rw-r--r--tests/benchmarks/gui/image/qpixmapcache/CMakeLists.txt3
-rw-r--r--tests/benchmarks/gui/kernel/qguimetatype/CMakeLists.txt3
-rw-r--r--tests/benchmarks/gui/kernel/qguivariant/CMakeLists.txt3
-rw-r--r--tests/benchmarks/gui/math3d/qmatrix4x4/CMakeLists.txt3
-rw-r--r--tests/benchmarks/gui/math3d/qquaternion/CMakeLists.txt3
-rw-r--r--tests/benchmarks/gui/painting/qtransform/CMakeLists.txt3
-rw-r--r--tests/benchmarks/gui/text/qfontmetrics/CMakeLists.txt3
-rw-r--r--tests/manual/CMakeLists.txt92
-rw-r--r--tests/manual/qcursor/childwindow/CMakeLists.txt5
-rw-r--r--tests/manual/qmetatype/CMakeLists.txt5
-rw-r--r--tests/manual/qopenglwindow/multiwindow/CMakeLists.txt3
-rw-r--r--util/cmake/Makefile20
-rw-r--r--util/cmake/Pipfile18
-rw-r--r--util/cmake/README.md54
-rwxr-xr-xutil/cmake/cmakeconversionrate.py141
-rw-r--r--util/cmake/condition_simplifier.py237
-rw-r--r--util/cmake/condition_simplifier_cache.py183
-rwxr-xr-xutil/cmake/configurejson2cmake.py1036
-rwxr-xr-xutil/cmake/generate_module_map.sh38
-rw-r--r--util/cmake/helper.py719
-rw-r--r--util/cmake/json_parser.py101
-rwxr-xr-xutil/cmake/pro2cmake.py3451
-rwxr-xr-xutil/cmake/pro_conversion_rate.py235
-rw-r--r--util/cmake/qmake_parser.py383
-rw-r--r--util/cmake/requirements.txt8
-rwxr-xr-xutil/cmake/run_pro2cmake.py209
-rw-r--r--util/cmake/special_case_helper.py412
-rw-r--r--util/cmake/tests/__init__.py0
-rw-r--r--util/cmake/tests/data/comment_scope.pro6
-rw-r--r--util/cmake/tests/data/complex_assign.pro2
-rw-r--r--util/cmake/tests/data/complex_condition.pro4
-rw-r--r--util/cmake/tests/data/complex_values.pro22
-rw-r--r--util/cmake/tests/data/condition_without_scope.pro2
-rw-r--r--util/cmake/tests/data/contains_scope.pro4
-rw-r--r--util/cmake/tests/data/definetest.pro6
-rw-r--r--util/cmake/tests/data/else.pro6
-rw-r--r--util/cmake/tests/data/else2.pro4
-rw-r--r--util/cmake/tests/data/else3.pro7
-rw-r--r--util/cmake/tests/data/else4.pro6
-rw-r--r--util/cmake/tests/data/else5.pro10
-rw-r--r--util/cmake/tests/data/else6.pro11
-rw-r--r--util/cmake/tests/data/else7.pro2
-rw-r--r--util/cmake/tests/data/else8.pro5
-rw-r--r--util/cmake/tests/data/escaped_value.pro2
-rw-r--r--util/cmake/tests/data/for.pro11
-rw-r--r--util/cmake/tests/data/function_if.pro4
-rw-r--r--util/cmake/tests/data/include.pro3
-rw-r--r--util/cmake/tests/data/lc.pro10
-rw-r--r--util/cmake/tests/data/lc_with_comment.pro22
-rw-r--r--util/cmake/tests/data/load.pro3
-rw-r--r--util/cmake/tests/data/multi_condition_divided_by_lc.pro3
-rw-r--r--util/cmake/tests/data/multiline_assign.pro4
-rw-r--r--util/cmake/tests/data/nested_function_calls.pro2
-rw-r--r--util/cmake/tests/data/quoted.pro5
-rw-r--r--util/cmake/tests/data/single_line_for.pro4
-rw-r--r--util/cmake/tests/data/sql.pro3
-rw-r--r--util/cmake/tests/data/standardpaths.pro17
-rw-r--r--util/cmake/tests/data/unset.pro2
-rw-r--r--util/cmake/tests/data/value_function.pro2
-rwxr-xr-xutil/cmake/tests/test_lc_fixup.py44
-rwxr-xr-xutil/cmake/tests/test_logic_mapping.py186
-rwxr-xr-xutil/cmake/tests/test_operations.py57
-rwxr-xr-xutil/cmake/tests/test_parsing.py352
-rwxr-xr-xutil/cmake/tests/test_scope_handling.py346
1373 files changed, 56218 insertions, 620 deletions
diff --git a/.gitignore b/.gitignore
index e4079c6b4d..95a6964dd7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,6 +36,8 @@
qt*-config.h
qt*-config_p.h
qt*-config.pri
+*.pyc
+.mypy_cache
/include/
@@ -56,11 +58,12 @@ qt*-config.pri
/src/angle/src/QtANGLE/libANGLE/
/src/angle/src/libGLESv2/libANGLE/
-/examples/*/*/*
-!/examples/*/*/*[.]*
-!/examples/*/*/README
-!/examples/*/doc/*
-!/examples/*/doc/*/*
+# FIXME: Ignore these again?
+# /examples/*/*/*
+# !/examples/*/*/*[.]*
+# !/examples/*/*/README
+# !/examples/*/doc/*
+# !/examples/*/doc/*/*
/translations/*.qm
/translations/*_en.ts
@@ -321,3 +324,6 @@ wrapper.bat
# Generated by qt.prf
*_plugin_import.cpp
+
+# Typical cmake build directories
+/build*
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000..190a39a859
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,75 @@
+cmake_minimum_required(VERSION 3.15.0)
+
+# Run auto detection routines
+include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtAutoDetect.cmake)
+
+project(QtBase
+ VERSION 6.0.0
+ DESCRIPTION "Qt Base Libraries"
+ HOMEPAGE_URL "https://qt.io/"
+ LANGUAGES CXX C ASM
+)
+
+## Add some paths to check for cmake modules:
+list(PREPEND CMAKE_MODULE_PATH
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake"
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/3rdparty/extra-cmake-modules/find-modules"
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/3rdparty/kwin"
+)
+
+## Find the build internals package.
+set(QT_BUILD_INTERNALS_SKIP_CMAKE_MODULE_PATH_ADDITION TRUE)
+list(PREPEND CMAKE_PREFIX_PATH
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake"
+)
+find_package(QtBuildInternals CMAKE_FIND_ROOT_PATH_BOTH)
+unset(QT_BUILD_INTERNALS_SKIP_CMAKE_MODULE_PATH_ADDITION)
+qt_build_repo_begin()
+
+## QtBase specific configure tests:
+include(QtBaseConfigureTests)
+
+## Build System tests:
+include(QtBaseCMakeTesting)
+
+## Targets for global features, etc.:
+include(QtBaseGlobalTargets)
+
+## Should this Qt be static or dynamically linked?
+option(BUILD_SHARED_LIBS "Build Qt statically or dynamically" ON)
+set(QT_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
+
+## Should this Qt be built with Werror?
+option(WARNINGS_ARE_ERRORS "Build Qt with warnings as errors" ${FEATURE_developer_build})
+
+## Should Qt be built using PCH?
+option(BUILD_WITH_PCH "Build Qt using precompiled headers?" ON)
+
+## Decide whether tools will be built.
+qt_check_if_tools_will_be_built()
+
+## Visit all the directories:
+add_subdirectory(src)
+
+if (BUILD_TESTING)
+ add_subdirectory(tests)
+endif()
+
+if (QT_WILL_BUILD_TOOLS)
+ add_subdirectory(qmake)
+endif()
+
+# As long as we use the mkspecs (for qplatformdefs.h), we need to always
+# install it, especially when cross-compiling.
+set(mkspecs_install_dir "${INSTALL_DATADIR}")
+qt_path_join(mkspecs_install_dir ${QT_INSTALL_DIR} ${mkspecs_install_dir})
+
+qt_copy_or_install(DIRECTORY "${PROJECT_SOURCE_DIR}/mkspecs"
+ DESTINATION ${mkspecs_install_dir})
+
+
+qt_build_repo_end()
+
+if(BUILD_EXAMPLES)
+ add_subdirectory(examples)
+endif()
diff --git a/bin/qt-cmake.bat.in b/bin/qt-cmake.bat.in
new file mode 100644
index 0000000000..a26e153068
--- /dev/null
+++ b/bin/qt-cmake.bat.in
@@ -0,0 +1 @@
+@CMAKE_COMMAND@ -DCMAKE_TOOLCHAIN_FILE=@__GlobalConfig_install_dir_absolute@/qt.toolchain.cmake %*
diff --git a/bin/qt-cmake.in b/bin/qt-cmake.in
new file mode 100755
index 0000000000..1797d2ded5
--- /dev/null
+++ b/bin/qt-cmake.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec @CMAKE_COMMAND@ -DCMAKE_TOOLCHAIN_FILE=@__GlobalConfig_install_dir_absolute@/qt.toolchain.cmake $*
diff --git a/cmake/3rdparty/extra-cmake-modules/COPYING-CMAKE-SCRIPTS b/cmake/3rdparty/extra-cmake-modules/COPYING-CMAKE-SCRIPTS
new file mode 100644
index 0000000000..4b417765f3
--- /dev/null
+++ b/cmake/3rdparty/extra-cmake-modules/COPYING-CMAKE-SCRIPTS
@@ -0,0 +1,22 @@
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/cmake/3rdparty/extra-cmake-modules/find-modules/ECMFindModuleHelpersStub.cmake b/cmake/3rdparty/extra-cmake-modules/find-modules/ECMFindModuleHelpersStub.cmake
new file mode 100644
index 0000000000..bb8c9a62fc
--- /dev/null
+++ b/cmake/3rdparty/extra-cmake-modules/find-modules/ECMFindModuleHelpersStub.cmake
@@ -0,0 +1 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../modules/ECMFindModuleHelpers.cmake)
diff --git a/cmake/3rdparty/extra-cmake-modules/find-modules/FindEGL.cmake b/cmake/3rdparty/extra-cmake-modules/find-modules/FindEGL.cmake
new file mode 100644
index 0000000000..48e5172877
--- /dev/null
+++ b/cmake/3rdparty/extra-cmake-modules/find-modules/FindEGL.cmake
@@ -0,0 +1,172 @@
+#.rst:
+# FindEGL
+# -------
+#
+# Try to find EGL.
+#
+# This will define the following variables:
+#
+# ``EGL_FOUND``
+# True if (the requested version of) EGL is available
+# ``EGL_VERSION``
+# The version of EGL; note that this is the API version defined in the
+# headers, rather than the version of the implementation (eg: Mesa)
+# ``EGL_LIBRARIES``
+# This can be passed to target_link_libraries() instead of the ``EGL::EGL``
+# target
+# ``EGL_INCLUDE_DIRS``
+# This should be passed to target_include_directories() if the target is not
+# used for linking
+# ``EGL_DEFINITIONS``
+# This should be passed to target_compile_options() if the target is not
+# used for linking
+#
+# If ``EGL_FOUND`` is TRUE, it will also define the following imported target:
+#
+# ``EGL::EGL``
+# The EGL library
+#
+# In general we recommend using the imported target, as it is easier to use.
+# Bear in mind, however, that if the target is in the link interface of an
+# exported library, it must be made available by the package config file.
+#
+# Since pre-1.0.0.
+
+#=============================================================================
+# Copyright 2014 Alex Merry <alex.merry@kde.org>
+# Copyright 2014 Martin Gräßlin <mgraesslin@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
+include(CheckCXXSourceCompiles)
+include(CMakePushCheckState)
+
+ecm_find_package_version_check(EGL)
+
+# Use pkg-config to get the directories and then use these values
+# in the FIND_PATH() and FIND_LIBRARY() calls
+find_package(PkgConfig)
+pkg_check_modules(PKG_EGL QUIET egl)
+
+set(EGL_DEFINITIONS ${PKG_EGL_CFLAGS_OTHER})
+
+find_path(EGL_INCLUDE_DIR
+ NAMES
+ EGL/egl.h
+ HINTS
+ ${PKG_EGL_INCLUDE_DIRS}
+)
+find_library(EGL_LIBRARY
+ NAMES
+ EGL
+ HINTS
+ ${PKG_EGL_LIBRARY_DIRS}
+)
+
+# NB: We do *not* use the version information from pkg-config, as that
+# is the implementation version (eg: the Mesa version)
+if(EGL_INCLUDE_DIR)
+ # egl.h has defines of the form EGL_VERSION_x_y for each supported
+ # version; so the header for EGL 1.1 will define EGL_VERSION_1_0 and
+ # EGL_VERSION_1_1. Finding the highest supported version involves
+ # finding all these defines and selecting the highest numbered.
+ file(READ "${EGL_INCLUDE_DIR}/EGL/egl.h" _EGL_header_contents)
+ string(REGEX MATCHALL
+ "[ \t]EGL_VERSION_[0-9_]+"
+ _EGL_version_lines
+ "${_EGL_header_contents}"
+ )
+ unset(_EGL_header_contents)
+ foreach(_EGL_version_line ${_EGL_version_lines})
+ string(REGEX REPLACE
+ "[ \t]EGL_VERSION_([0-9_]+)"
+ "\\1"
+ _version_candidate
+ "${_EGL_version_line}"
+ )
+ string(REPLACE "_" "." _version_candidate "${_version_candidate}")
+ if(NOT DEFINED EGL_VERSION OR EGL_VERSION VERSION_LESS _version_candidate)
+ set(EGL_VERSION "${_version_candidate}")
+ endif()
+ endforeach()
+ unset(_EGL_version_lines)
+endif()
+
+cmake_push_check_state(RESET)
+list(APPEND CMAKE_REQUIRED_LIBRARIES "${EGL_LIBRARY}")
+list(APPEND CMAKE_REQUIRED_INCLUDES "${EGL_INCLUDE_DIR}")
+
+check_cxx_source_compiles("
+#include <EGL/egl.h>
+
+int main(int argc, char *argv[]) {
+ EGLint x = 0; EGLDisplay dpy = 0; EGLContext ctx = 0;
+ eglDestroyContext(dpy, ctx);
+}" HAVE_EGL)
+
+cmake_pop_check_state()
+
+set(required_vars EGL_INCLUDE_DIR HAVE_EGL)
+if(NOT EMSCRIPTEN)
+ list(APPEND required_vars EGL_LIBRARY)
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(EGL
+ FOUND_VAR
+ EGL_FOUND
+ REQUIRED_VARS
+ ${required_vars}
+ VERSION_VAR
+ EGL_VERSION
+)
+
+if(EGL_FOUND AND NOT TARGET EGL::EGL)
+ if (EMSCRIPTEN)
+ add_library(EGL::EGL INTERFACE IMPORTED)
+ # Nothing further to be done, system include paths have headers and linkage is implicit.
+ else()
+ add_library(EGL::EGL UNKNOWN IMPORTED)
+ set_target_properties(EGL::EGL PROPERTIES
+ IMPORTED_LOCATION "${EGL_LIBRARY}"
+ INTERFACE_COMPILE_OPTIONS "${EGL_DEFINITIONS}"
+ INTERFACE_INCLUDE_DIRECTORIES "${EGL_INCLUDE_DIR}"
+ )
+ endif()
+endif()
+
+mark_as_advanced(EGL_LIBRARY EGL_INCLUDE_DIR HAVE_EGL)
+
+# compatibility variables
+set(EGL_LIBRARIES ${EGL_LIBRARY})
+set(EGL_INCLUDE_DIRS ${EGL_INCLUDE_DIR})
+set(EGL_VERSION_STRING ${EGL_VERSION})
+
+include(FeatureSummary)
+set_package_properties(EGL PROPERTIES
+ URL "https://www.khronos.org/egl/"
+ DESCRIPTION "A platform-agnostic mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG."
+)
diff --git a/cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake b/cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake
new file mode 100644
index 0000000000..993535123a
--- /dev/null
+++ b/cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake
@@ -0,0 +1,101 @@
+#.rst:
+# FindGLIB2
+# ---------
+#
+# Try to locate the GLib2 library.
+# If found, this will define the following variables:
+#
+# ``GLIB2_FOUND``
+# True if the GLib2 library is available
+# ``GLIB2_INCLUDE_DIRS``
+# The GLib2 include directories
+# ``GLIB2_LIBRARIES``
+# The GLib2 libraries for linking
+# ``GLIB2_INCLUDE_DIR``
+# Deprecated, use ``GLIB2_INCLUDE_DIRS``
+# ``GLIB2_LIBRARY``
+# Deprecated, use ``GLIB2_LIBRARIES``
+#
+# If ``GLIB2_FOUND`` is TRUE, it will also define the following
+# imported target:
+#
+# ``GLIB2::GLIB2``
+# The GLIB2 library
+#
+# Since 5.41.0.
+
+#=============================================================================
+# Copyright (c) 2008 Laurent Montel, <montel@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+find_package(PkgConfig)
+pkg_check_modules(PC_GLIB2 QUIET glib-2.0)
+
+find_path(GLIB2_INCLUDE_DIRS
+ NAMES glib.h
+ HINTS ${PC_GLIB2_INCLUDEDIR}
+ PATH_SUFFIXES glib-2.0)
+
+find_library(GLIB2_LIBRARIES
+ NAMES glib-2.0
+ HINTS ${PC_GLIB2_LIBDIR}
+)
+
+# search the glibconfig.h include dir under the same root where the library is found
+get_filename_component(glib2LibDir "${GLIB2_LIBRARIES}" PATH)
+
+find_path(GLIB2_INTERNAL_INCLUDE_DIR glibconfig.h
+ PATH_SUFFIXES glib-2.0/include
+ HINTS ${PC_GLIB2_INCLUDEDIR} "${glib2LibDir}" ${CMAKE_SYSTEM_LIBRARY_PATH})
+
+# not sure if this include dir is optional or required
+# for now it is optional
+if(GLIB2_INTERNAL_INCLUDE_DIR)
+ list(APPEND GLIB2_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
+endif()
+
+# Deprecated synonyms
+set(GLIB2_INCLUDE_DIR "${GLIB2_INCLUDE_DIRS}")
+set(GLIB2_LIBRARY "${GLIB2_LIBRARIES}")
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GLIB2 DEFAULT_MSG GLIB2_LIBRARIES GLIB2_INCLUDE_DIRS)
+
+if(GLIB2_FOUND AND NOT TARGET GLIB2::GLIB2)
+ add_library(GLIB2::GLIB2 UNKNOWN IMPORTED)
+ set_target_properties(GLIB2::GLIB2 PROPERTIES
+ IMPORTED_LOCATION "${GLIB2_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GLIB2_INCLUDE_DIRS}")
+endif()
+
+mark_as_advanced(GLIB2_INCLUDE_DIRS GLIB2_INCLUDE_DIR
+ GLIB2_LIBRARIES GLIB2_LIBRARY)
+
+include(FeatureSummary)
+set_package_properties(GLIB2 PROPERTIES
+ URL "https://wiki.gnome.org/Projects/GLib"
+ DESCRIPTION "Event loop and utility library")
+
diff --git a/cmake/3rdparty/extra-cmake-modules/find-modules/FindWayland.cmake b/cmake/3rdparty/extra-cmake-modules/find-modules/FindWayland.cmake
new file mode 100644
index 0000000000..233cc88d02
--- /dev/null
+++ b/cmake/3rdparty/extra-cmake-modules/find-modules/FindWayland.cmake
@@ -0,0 +1,143 @@
+#.rst:
+# FindWayland
+# -----------
+#
+# Try to find Wayland.
+#
+# This is a component-based find module, which makes use of the COMPONENTS
+# and OPTIONAL_COMPONENTS arguments to find_module. The following components
+# are available::
+#
+# Client Server Cursor Egl
+#
+# If no components are specified, this module will act as though all components
+# were passed to OPTIONAL_COMPONENTS.
+#
+# This module will define the following variables, independently of the
+# components searched for or found:
+#
+# ``Wayland_FOUND``
+# TRUE if (the requested version of) Wayland is available
+# ``Wayland_VERSION``
+# Found Wayland version
+# ``Wayland_TARGETS``
+# A list of all targets imported by this module (note that there may be more
+# than the components that were requested)
+# ``Wayland_LIBRARIES``
+# This can be passed to target_link_libraries() instead of the imported
+# targets
+# ``Wayland_INCLUDE_DIRS``
+# This should be passed to target_include_directories() if the targets are
+# not used for linking
+# ``Wayland_DEFINITIONS``
+# This should be passed to target_compile_options() if the targets are not
+# used for linking
+#
+# For each searched-for components, ``Wayland_<component>_FOUND`` will be set to
+# TRUE if the corresponding Wayland library was found, and FALSE otherwise. If
+# ``Wayland_<component>_FOUND`` is TRUE, the imported target
+# ``Wayland::<component>`` will be defined. This module will also attempt to
+# determine ``Wayland_*_VERSION`` variables for each imported target, although
+# ``Wayland_VERSION`` should normally be sufficient.
+#
+# In general we recommend using the imported targets, as they are easier to use
+# and provide more control. Bear in mind, however, that if any target is in the
+# link interface of an exported library, it must be made available by the
+# package config file.
+#
+# Since pre-1.0.0.
+
+#=============================================================================
+# Copyright 2014 Alex Merry <alex.merry@kde.org>
+# Copyright 2014 Martin Gräßlin <mgraesslin@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
+
+ecm_find_package_version_check(Wayland)
+
+set(Wayland_known_components
+ Client
+ Server
+ Cursor
+ Egl
+)
+foreach(_comp ${Wayland_known_components})
+ string(TOLOWER "${_comp}" _lc_comp)
+ set(Wayland_${_comp}_component_deps)
+ set(Wayland_${_comp}_pkg_config "wayland-${_lc_comp}")
+ set(Wayland_${_comp}_lib "wayland-${_lc_comp}")
+ set(Wayland_${_comp}_header "wayland-${_lc_comp}.h")
+endforeach()
+set(Wayland_Egl_component_deps Client)
+
+ecm_find_package_parse_components(Wayland
+ RESULT_VAR Wayland_components
+ KNOWN_COMPONENTS ${Wayland_known_components}
+)
+ecm_find_package_handle_library_components(Wayland
+ COMPONENTS ${Wayland_components}
+)
+
+# If pkg-config didn't provide us with version information,
+# try to extract it from wayland-version.h
+# (Note that the version from wayland-egl.pc will probably be
+# the Mesa version, rather than the Wayland version, but that
+# version will be ignored as we always find wayland-client.pc
+# first).
+if(NOT Wayland_VERSION)
+ find_file(Wayland_VERSION_HEADER
+ NAMES wayland-version.h
+ HINTS ${Wayland_INCLUDE_DIRS}
+ )
+ mark_as_advanced(Wayland_VERSION_HEADER)
+ if(Wayland_VERSION_HEADER)
+ file(READ ${Wayland_VERSION_HEADER} _wayland_version_header_contents)
+ string(REGEX REPLACE
+ "^.*[ \t]+WAYLAND_VERSION[ \t]+\"([0-9.]*)\".*$"
+ "\\1"
+ Wayland_VERSION
+ "${_wayland_version_header_contents}"
+ )
+ unset(_wayland_version_header_contents)
+ endif()
+endif()
+
+find_package_handle_standard_args(Wayland
+ FOUND_VAR
+ Wayland_FOUND
+ REQUIRED_VARS
+ Wayland_LIBRARIES
+ VERSION_VAR
+ Wayland_VERSION
+ HANDLE_COMPONENTS
+)
+
+include(FeatureSummary)
+set_package_properties(Wayland PROPERTIES
+ URL "http://wayland.freedesktop.org"
+ DESCRIPTION "C library implementation of the Wayland protocol: a protocol for a compositor to talk to its clients"
+)
diff --git a/cmake/3rdparty/extra-cmake-modules/find-modules/FindWaylandScanner.cmake b/cmake/3rdparty/extra-cmake-modules/find-modules/FindWaylandScanner.cmake
new file mode 100644
index 0000000000..ed9c4c4c9a
--- /dev/null
+++ b/cmake/3rdparty/extra-cmake-modules/find-modules/FindWaylandScanner.cmake
@@ -0,0 +1,167 @@
+#.rst:
+# FindWaylandScanner
+# ------------------
+#
+# Try to find wayland-scanner.
+#
+# If the wayland-scanner executable is not in your PATH, you can provide
+# an alternative name or full path location with the ``WaylandScanner_EXECUTABLE``
+# variable.
+#
+# This will define the following variables:
+#
+# ``WaylandScanner_FOUND``
+# True if wayland-scanner is available.
+#
+# ``WaylandScanner_EXECUTABLE``
+# The wayland-scanner executable.
+#
+# If ``WaylandScanner_FOUND`` is TRUE, it will also define the following imported
+# target:
+#
+# ``Wayland::Scanner``
+# The wayland-scanner executable.
+#
+# This module provides the following functions to generate C protocol
+# implementations:
+#
+# - ``ecm_add_wayland_client_protocol``
+# - ``ecm_add_wayland_server_protocol``
+#
+# ::
+#
+# ecm_add_wayland_client_protocol(<source_files_var>
+# PROTOCOL <xmlfile>
+# BASENAME <basename>)
+#
+# Generate Wayland client protocol files from ``<xmlfile>`` XML
+# definition for the ``<basename>`` interface and append those files
+# to ``<source_files_var>``.
+#
+# ::
+#
+# ecm_add_wayland_server_protocol(<source_files_var>
+# PROTOCOL <xmlfile>
+# BASENAME <basename>)
+#
+# Generate Wayland server protocol files from ``<xmlfile>`` XML
+# definition for the ``<basename>`` interface and append those files
+# to ``<source_files_var>``.
+#
+# Since 1.4.0.
+
+#=============================================================================
+# Copyright 2012-2014 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
+
+ecm_find_package_version_check(WaylandScanner)
+
+# Find wayland-scanner
+find_program(WaylandScanner_EXECUTABLE NAMES wayland-scanner)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(WaylandScanner
+ FOUND_VAR
+ WaylandScanner_FOUND
+ REQUIRED_VARS
+ WaylandScanner_EXECUTABLE
+)
+
+mark_as_advanced(WaylandScanner_EXECUTABLE)
+
+if(NOT TARGET Wayland::Scanner AND WaylandScanner_FOUND)
+ add_executable(Wayland::Scanner IMPORTED)
+ set_target_properties(Wayland::Scanner PROPERTIES
+ IMPORTED_LOCATION "${WaylandScanner_EXECUTABLE}"
+ )
+endif()
+
+include(FeatureSummary)
+set_package_properties(WaylandScanner PROPERTIES
+ URL "https://wayland.freedesktop.org/"
+ DESCRIPTION "Executable that converts XML protocol files to C code"
+)
+
+
+include(CMakeParseArguments)
+
+function(ecm_add_wayland_client_protocol out_var)
+ # Parse arguments
+ set(oneValueArgs PROTOCOL BASENAME)
+ cmake_parse_arguments(ARGS "" "${oneValueArgs}" "" ${ARGN})
+
+ if(ARGS_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "Unknown keywords given to ecm_add_wayland_client_protocol(): \"${ARGS_UNPARSED_ARGUMENTS}\"")
+ endif()
+
+ get_filename_component(_infile ${ARGS_PROTOCOL} ABSOLUTE)
+ set(_client_header "${CMAKE_CURRENT_BINARY_DIR}/wayland-${ARGS_BASENAME}-client-protocol.h")
+ set(_code "${CMAKE_CURRENT_BINARY_DIR}/wayland-${ARGS_BASENAME}-protocol.c")
+
+ set_source_files_properties(${_client_header} GENERATED)
+ set_source_files_properties(${_code} GENERATED)
+ set_property(SOURCE ${_client_header} PROPERTY SKIP_AUTOMOC ON)
+
+ add_custom_command(OUTPUT "${_client_header}"
+ COMMAND ${WaylandScanner_EXECUTABLE} client-header ${_infile} ${_client_header}
+ DEPENDS ${_infile} VERBATIM)
+
+ add_custom_command(OUTPUT "${_code}"
+ COMMAND ${WaylandScanner_EXECUTABLE} code ${_infile} ${_code}
+ DEPENDS ${_infile} ${_client_header} VERBATIM)
+
+ list(APPEND ${out_var} "${_client_header}" "${_code}")
+ set(${out_var} ${${out_var}} PARENT_SCOPE)
+endfunction()
+
+
+function(ecm_add_wayland_server_protocol out_var)
+ # Parse arguments
+ set(oneValueArgs PROTOCOL BASENAME)
+ cmake_parse_arguments(ARGS "" "${oneValueArgs}" "" ${ARGN})
+
+ if(ARGS_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "Unknown keywords given to ecm_add_wayland_server_protocol(): \"${ARGS_UNPARSED_ARGUMENTS}\"")
+ endif()
+
+ ecm_add_wayland_client_protocol(${out_var}
+ PROTOCOL ${ARGS_PROTOCOL}
+ BASENAME ${ARGS_BASENAME})
+
+ get_filename_component(_infile ${ARGS_PROTOCOL} ABSOLUTE)
+ set(_server_header "${CMAKE_CURRENT_BINARY_DIR}/wayland-${ARGS_BASENAME}-server-protocol.h")
+ set_property(SOURCE ${_server_header} PROPERTY SKIP_AUTOMOC ON)
+ set_source_files_properties(${_server_header} GENERATED)
+
+ add_custom_command(OUTPUT "${_server_header}"
+ COMMAND ${WaylandScanner_EXECUTABLE} server-header ${_infile} ${_server_header}
+ DEPENDS ${_infile} VERBATIM)
+
+ list(APPEND ${out_var} "${_server_header}")
+ set(${out_var} ${${out_var}} PARENT_SCOPE)
+endfunction()
diff --git a/cmake/3rdparty/extra-cmake-modules/find-modules/FindX11_XCB.cmake b/cmake/3rdparty/extra-cmake-modules/find-modules/FindX11_XCB.cmake
new file mode 100644
index 0000000000..dd55fd7b30
--- /dev/null
+++ b/cmake/3rdparty/extra-cmake-modules/find-modules/FindX11_XCB.cmake
@@ -0,0 +1,118 @@
+#.rst:
+# FindX11_XCB
+# -----------
+#
+# Try to find the X11 XCB compatibility library.
+#
+# This will define the following variables:
+#
+# ``X11_XCB_FOUND``
+# True if (the requested version of) libX11-xcb is available
+# ``X11_XCB_VERSION``
+# The version of libX11-xcb (this is not guaranteed to be set even when
+# X11_XCB_FOUND is true)
+# ``X11_XCB_LIBRARIES``
+# This can be passed to target_link_libraries() instead of the ``EGL::EGL``
+# target
+# ``X11_XCB_INCLUDE_DIR``
+# This should be passed to target_include_directories() if the target is not
+# used for linking
+# ``X11_XCB_DEFINITIONS``
+# This should be passed to target_compile_options() if the target is not
+# used for linking
+#
+# If ``X11_XCB_FOUND`` is TRUE, it will also define the following imported
+# target:
+#
+# ``X11::XCB``
+# The X11 XCB compatibility library
+#
+# In general we recommend using the imported target, as it is easier to use.
+# Bear in mind, however, that if the target is in the link interface of an
+# exported library, it must be made available by the package config file.
+#
+# Since pre-1.0.0.
+
+#=============================================================================
+# Copyright 2014 Alex Merry <alex.merry@kde.org>
+# Copyright 2011 Fredrik Höglund <fredrik@kde.org>
+# Copyright 2008 Helio Chissini de Castro <helio@kde.org>
+# Copyright 2007 Matthias Kretz <kretz@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
+
+ecm_find_package_version_check(X11_XCB)
+
+# use pkg-config to get the directories and then use these values
+# in the FIND_PATH() and FIND_LIBRARY() calls
+find_package(PkgConfig)
+pkg_check_modules(PKG_X11_XCB QUIET x11-xcb)
+
+set(X11_XCB_DEFINITIONS ${PKG_X11_XCB_CFLAGS_OTHER})
+set(X11_XCB_VERSION ${PKG_X11_XCB_VERSION})
+
+find_path(X11_XCB_INCLUDE_DIR
+ NAMES X11/Xlib-xcb.h
+ HINTS ${PKG_X11_XCB_INCLUDE_DIRS}
+)
+find_library(X11_XCB_LIBRARY
+ NAMES X11-xcb
+ HINTS ${PKG_X11_XCB_LIBRARY_DIRS}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(X11_XCB
+ FOUND_VAR
+ X11_XCB_FOUND
+ REQUIRED_VARS
+ X11_XCB_LIBRARY
+ X11_XCB_INCLUDE_DIR
+ VERSION_VAR
+ X11_XCB_VERSION
+)
+
+if(X11_XCB_FOUND AND NOT TARGET X11::XCB)
+ add_library(X11::XCB UNKNOWN IMPORTED)
+ set_target_properties(X11::XCB PROPERTIES
+ IMPORTED_LOCATION "${X11_XCB_LIBRARY}"
+ INTERFACE_COMPILE_OPTIONS "${X11_XCB_DEFINITIONS}"
+ INTERFACE_INCLUDE_DIRECTORIES "${X11_XCB_INCLUDE_DIR}"
+ )
+endif()
+
+mark_as_advanced(X11_XCB_INCLUDE_DIR X11_XCB_LIBRARY)
+
+# compatibility variables
+set(X11_XCB_LIBRARIES ${X11_XCB_LIBRARY})
+set(X11_XCB_INCLUDE_DIRS ${X11_XCB_INCLUDE_DIR})
+set(X11_XCB_VERSION_STRING ${X11_XCB_VERSION})
+
+include(FeatureSummary)
+set_package_properties(X11_XCB PROPERTIES
+ URL "http://xorg.freedesktop.org/"
+ DESCRIPTION "A compatibility library for code that translates Xlib API calls into XCB calls"
+)
diff --git a/cmake/3rdparty/extra-cmake-modules/find-modules/FindXCB.cmake b/cmake/3rdparty/extra-cmake-modules/find-modules/FindXCB.cmake
new file mode 100644
index 0000000000..d530d2d7f4
--- /dev/null
+++ b/cmake/3rdparty/extra-cmake-modules/find-modules/FindXCB.cmake
@@ -0,0 +1,201 @@
+#.rst:
+# FindXCB
+# -------
+#
+# Try to find XCB.
+#
+# This is a component-based find module, which makes use of the COMPONENTS and
+# OPTIONAL_COMPONENTS arguments to find_module. The following components are
+# available::
+#
+# XCB
+# ATOM AUX COMPOSITE CURSOR DAMAGE
+# DPMS DRI2 DRI3 EVENT EWMH
+# GLX ICCCM IMAGE KEYSYMS PRESENT
+# RANDR RECORD RENDER RENDERUTIL RES
+# SCREENSAVER SHAPE SHM SYNC UTIL
+# XEVIE XF86DRI XFIXES XINERAMA XINPUT
+# XKB XPRINT XTEST XV XVMC
+#
+# If no components are specified, this module will act as though all components
+# except XINPUT (which is considered unstable) were passed to
+# OPTIONAL_COMPONENTS.
+#
+# This module will define the following variables, independently of the
+# components searched for or found:
+#
+# ``XCB_FOUND``
+# True if (the requestion version of) xcb is available
+# ``XCB_VERSION``
+# Found xcb version
+# ``XCB_TARGETS``
+# A list of all targets imported by this module (note that there may be more
+# than the components that were requested)
+# ``XCB_LIBRARIES``
+# This can be passed to target_link_libraries() instead of the imported
+# targets
+# ``XCB_INCLUDE_DIRS``
+# This should be passed to target_include_directories() if the targets are
+# not used for linking
+# ``XCB_DEFINITIONS``
+# This should be passed to target_compile_options() if the targets are not
+# used for linking
+#
+# For each searched-for components, ``XCB_<component>_FOUND`` will be set to
+# true if the corresponding xcb library was found, and false otherwise. If
+# ``XCB_<component>_FOUND`` is true, the imported target ``XCB::<component>``
+# will be defined. This module will also attempt to determine
+# ``XCB_*_VERSION`` variables for each imported target, although
+# ``XCB_VERSION`` should normally be sufficient.
+#
+# In general we recommend using the imported targets, as they are easier to use
+# and provide more control. Bear in mind, however, that if any target is in the
+# link interface of an exported library, it must be made available by the
+# package config file.
+#
+# Since pre-1.0.0.
+
+#=============================================================================
+# Copyright 2011 Fredrik Höglund <fredrik@kde.org>
+# Copyright 2013 Martin Gräßlin <mgraesslin@kde.org>
+# Copyright 2014-2015 Alex Merry <alex.merry@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
+
+ecm_find_package_version_check(XCB)
+
+# Note that this list needs to be ordered such that any component
+# appears after its dependencies
+set(XCB_known_components
+ XCB
+ RENDER
+ SHAPE
+ XFIXES
+ SHM
+ ATOM
+ AUX
+ COMPOSITE
+ CURSOR
+ DAMAGE
+ DPMS
+ DRI2
+ DRI3
+ EVENT
+ EWMH
+ GLX
+ ICCCM
+ IMAGE
+ KEYSYMS
+ PRESENT
+ RANDR
+ RECORD
+ RENDERUTIL
+ RES
+ SCREENSAVER
+ SYNC
+ UTIL
+ XEVIE
+ XF86DRI
+ XINERAMA
+ XINPUT
+ XKB
+ XPRINT
+ XTEST
+ XV
+ XVMC
+)
+
+# XINPUT is unstable; do not include it by default
+set(XCB_default_components ${XCB_known_components})
+list(REMOVE_ITEM XCB_default_components "XINPUT")
+
+# default component info: xcb components have fairly predictable
+# header files, library names and pkg-config names
+foreach(_comp ${XCB_known_components})
+ string(TOLOWER "${_comp}" _lc_comp)
+ set(XCB_${_comp}_component_deps XCB)
+ set(XCB_${_comp}_pkg_config "xcb-${_lc_comp}")
+ set(XCB_${_comp}_lib "xcb-${_lc_comp}")
+ set(XCB_${_comp}_header "xcb/${_lc_comp}.h")
+endforeach()
+# exceptions
+set(XCB_XCB_component_deps)
+set(XCB_COMPOSITE_component_deps XCB XFIXES)
+set(XCB_DAMAGE_component_deps XCB XFIXES)
+set(XCB_IMAGE_component_deps XCB SHM)
+set(XCB_RENDERUTIL_component_deps XCB RENDER)
+set(XCB_XFIXES_component_deps XCB RENDER SHAPE)
+set(XCB_XVMC_component_deps XCB XV)
+set(XCB_XV_component_deps XCB SHM)
+set(XCB_XCB_pkg_config "xcb")
+set(XCB_XCB_lib "xcb")
+set(XCB_ATOM_header "xcb/xcb_atom.h")
+set(XCB_ATOM_lib "xcb-util")
+set(XCB_AUX_header "xcb/xcb_aux.h")
+set(XCB_AUX_lib "xcb-util")
+set(XCB_CURSOR_header "xcb/xcb_cursor.h")
+set(XCB_EVENT_header "xcb/xcb_event.h")
+set(XCB_EVENT_lib "xcb-util")
+set(XCB_EWMH_header "xcb/xcb_ewmh.h")
+set(XCB_ICCCM_header "xcb/xcb_icccm.h")
+set(XCB_IMAGE_header "xcb/xcb_image.h")
+set(XCB_KEYSYMS_header "xcb/xcb_keysyms.h")
+set(XCB_PIXEL_header "xcb/xcb_pixel.h")
+set(XCB_RENDERUTIL_header "xcb/xcb_renderutil.h")
+set(XCB_RENDERUTIL_lib "xcb-render-util")
+set(XCB_UTIL_header "xcb/xcb_util.h")
+
+ecm_find_package_parse_components(XCB
+ RESULT_VAR XCB_components
+ KNOWN_COMPONENTS ${XCB_known_components}
+ DEFAULT_COMPONENTS ${XCB_default_components}
+)
+
+list(FIND XCB_components "XINPUT" _XCB_XINPUT_index)
+if (NOT _XCB_XINPUT_index EQUAL -1)
+ message(AUTHOR_WARNING "XINPUT from XCB was requested: this is EXPERIMENTAL and is likely to unavailable on many systems!")
+endif()
+
+ecm_find_package_handle_library_components(XCB
+ COMPONENTS ${XCB_components}
+)
+
+find_package_handle_standard_args(XCB
+ FOUND_VAR
+ XCB_FOUND
+ REQUIRED_VARS
+ XCB_LIBRARIES
+ VERSION_VAR
+ XCB_VERSION
+ HANDLE_COMPONENTS
+)
+
+include(FeatureSummary)
+set_package_properties(XCB PROPERTIES
+ URL "http://xcb.freedesktop.org"
+ DESCRIPTION "X protocol C-language Binding"
+)
diff --git a/cmake/3rdparty/extra-cmake-modules/modules/ECMEnableSanitizers.cmake b/cmake/3rdparty/extra-cmake-modules/modules/ECMEnableSanitizers.cmake
new file mode 100644
index 0000000000..06cc0b66d8
--- /dev/null
+++ b/cmake/3rdparty/extra-cmake-modules/modules/ECMEnableSanitizers.cmake
@@ -0,0 +1,173 @@
+#.rst:
+# ECMEnableSanitizers
+# -------------------
+#
+# Enable compiler sanitizer flags.
+#
+# The following sanitizers are supported:
+#
+# - Address Sanitizer
+# - Memory Sanitizer
+# - Thread Sanitizer
+# - Leak Sanitizer
+# - Undefined Behaviour Sanitizer
+#
+# All of them are implemented in Clang, depending on your version, and
+# there is an work in progress in GCC, where some of them are currently
+# implemented.
+#
+# This module will check your current compiler version to see if it
+# supports the sanitizers that you want to enable
+#
+# Usage
+# =====
+#
+# Simply add::
+#
+# include(ECMEnableSanitizers)
+#
+# to your ``CMakeLists.txt``. Note that this module is included in
+# KDECompilerSettings, so projects using that module do not need to also
+# include this one.
+#
+# The sanitizers are not enabled by default. Instead, you must set
+# ``ECM_ENABLE_SANITIZERS`` (either in your ``CMakeLists.txt`` or on the
+# command line) to a semicolon-separated list of sanitizers you wish to enable.
+# The options are:
+#
+# - address
+# - memory
+# - thread
+# - leak
+# - undefined
+#
+# The sanitizers "address", "memory" and "thread" are mutually exclusive. You
+# cannot enable two of them in the same build.
+#
+# "leak" requires the "address" sanitizer.
+#
+# .. note::
+#
+# To reduce the overhead induced by the instrumentation of the sanitizers, it
+# is advised to enable compiler optimizations (``-O1`` or higher).
+#
+# Example
+# =======
+#
+# This is an example of usage::
+#
+# mkdir build
+# cd build
+# cmake -DECM_ENABLE_SANITIZERS='address;leak;undefined' ..
+#
+# .. note::
+#
+# Most of the sanitizers will require Clang. To enable it, use::
+#
+# -DCMAKE_CXX_COMPILER=clang++
+#
+# Since 1.3.0.
+
+#=============================================================================
+# Copyright 2014 Mathieu Tarral <mathieu.tarral@gmail.com>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# MACRO check_compiler_version
+#-----------------------------
+macro (check_compiler_version gcc_required_version clang_required_version)
+ if (
+ (
+ CMAKE_CXX_COMPILER_ID MATCHES "GNU"
+ AND
+ CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${gcc_required_version}
+ )
+ OR
+ (
+ CMAKE_CXX_COMPILER_ID MATCHES "Clang"
+ AND
+ CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${clang_required_version}
+ )
+ )
+ # error !
+ message(FATAL_ERROR "You ask to enable the sanitizer ${CUR_SANITIZER},
+ but your compiler ${CMAKE_CXX_COMPILER_ID} version ${CMAKE_CXX_COMPILER_VERSION}
+ does not support it !
+ You should use at least GCC ${gcc_required_version} or Clang ${clang_required_version}
+ (99.99 means not implemented yet)")
+ endif ()
+endmacro ()
+
+# MACRO check_compiler_support
+#------------------------------
+macro (enable_sanitizer_flags sanitize_option)
+ if (${sanitize_option} MATCHES "address")
+ check_compiler_version("4.8" "3.1")
+ set(XSAN_COMPILE_FLAGS "-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls")
+ set(XSAN_LINKER_FLAGS "asan")
+ elseif (${sanitize_option} MATCHES "thread")
+ check_compiler_version("4.8" "3.1")
+ set(XSAN_COMPILE_FLAGS "-fsanitize=thread")
+ set(XSAN_LINKER_FLAGS "tsan")
+ elseif (${sanitize_option} MATCHES "memory")
+ check_compiler_version("99.99" "3.1")
+ set(XSAN_COMPILE_FLAGS "-fsanitize=memory")
+ elseif (${sanitize_option} MATCHES "leak")
+ check_compiler_version("4.9" "3.4")
+ set(XSAN_COMPILE_FLAGS "-fsanitize=leak")
+ set(XSAN_LINKER_FLAGS "lsan")
+ elseif (${sanitize_option} MATCHES "undefined")
+ check_compiler_version("4.9" "3.1")
+ set(XSAN_COMPILE_FLAGS "-fsanitize=undefined -fno-omit-frame-pointer -fno-optimize-sibling-calls")
+ else ()
+ message(FATAL_ERROR "Compiler sanitizer option \"${sanitize_option}\" not supported.")
+ endif ()
+endmacro ()
+
+if (ECM_ENABLE_SANITIZERS)
+ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ # for each element of the ECM_ENABLE_SANITIZERS list
+ foreach ( CUR_SANITIZER ${ECM_ENABLE_SANITIZERS} )
+ # lowercase filter
+ string(TOLOWER ${CUR_SANITIZER} CUR_SANITIZER)
+ # check option and enable appropriate flags
+ enable_sanitizer_flags ( ${CUR_SANITIZER} )
+ # TODO: GCC will not link pthread library if enabled ASan
+ if(CMAKE_C_COMPILER_ID MATCHES "Clang")
+ set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${XSAN_COMPILE_FLAGS}" )
+ endif()
+ set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${XSAN_COMPILE_FLAGS}" )
+ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ link_libraries(${XSAN_LINKER_FLAGS})
+ endif()
+ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ string(REPLACE "-Wl,--no-undefined" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
+ string(REPLACE "-Wl,--no-undefined" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}")
+ endif ()
+ endforeach()
+ else()
+ message(STATUS "Tried to enable sanitizers (-DECM_ENABLE_SANITIZERS=${ECM_ENABLE_SANITIZERS}), \
+but compiler (${CMAKE_CXX_COMPILER_ID}) does not have sanitizer support")
+ endif()
+endif()
diff --git a/cmake/3rdparty/extra-cmake-modules/modules/ECMFindModuleHelpers.cmake b/cmake/3rdparty/extra-cmake-modules/modules/ECMFindModuleHelpers.cmake
new file mode 100644
index 0000000000..f2e32f959e
--- /dev/null
+++ b/cmake/3rdparty/extra-cmake-modules/modules/ECMFindModuleHelpers.cmake
@@ -0,0 +1,297 @@
+#.rst:
+# ECMFindModuleHelpers
+# --------------------
+#
+# Helper macros for find modules: ecm_find_package_version_check(),
+# ecm_find_package_parse_components() and
+# ecm_find_package_handle_library_components().
+#
+# ::
+#
+# ecm_find_package_version_check(<name>)
+#
+# Prints warnings if the CMake version or the project's required CMake version
+# is older than that required by extra-cmake-modules.
+#
+# ::
+#
+# ecm_find_package_parse_components(<name>
+# RESULT_VAR <variable>
+# KNOWN_COMPONENTS <component1> [<component2> [...]]
+# [SKIP_DEPENDENCY_HANDLING])
+#
+# This macro will populate <variable> with a list of components found in
+# <name>_FIND_COMPONENTS, after checking that all those components are in the
+# list of KNOWN_COMPONENTS; if there are any unknown components, it will print
+# an error or warning (depending on the value of <name>_FIND_REQUIRED) and call
+# return().
+#
+# The order of components in <variable> is guaranteed to match the order they
+# are listed in the KNOWN_COMPONENTS argument.
+#
+# If SKIP_DEPENDENCY_HANDLING is not set, for each component the variable
+# <name>_<component>_component_deps will be checked for dependent components.
+# If <component> is listed in <name>_FIND_COMPONENTS, then all its (transitive)
+# dependencies will also be added to <variable>.
+#
+# ::
+#
+# ecm_find_package_handle_library_components(<name>
+# COMPONENTS <component> [<component> [...]]
+# [SKIP_DEPENDENCY_HANDLING])
+# [SKIP_PKG_CONFIG])
+#
+# Creates an imported library target for each component. The operation of this
+# macro depends on the presence of a number of CMake variables.
+#
+# The <name>_<component>_lib variable should contain the name of this library,
+# and <name>_<component>_header variable should contain the name of a header
+# file associated with it (whatever relative path is normally passed to
+# '#include'). <name>_<component>_header_subdir variable can be used to specify
+# which subdirectory of the include path the headers will be found in.
+# ecm_find_package_components() will then search for the library
+# and include directory (creating appropriate cache variables) and create an
+# imported library target named <name>::<component>.
+#
+# Additional variables can be used to provide additional information:
+#
+# If SKIP_PKG_CONFIG, the <name>_<component>_pkg_config variable is set, and
+# pkg-config is found, the pkg-config module given by
+# <name>_<component>_pkg_config will be searched for and used to help locate the
+# library and header file. It will also be used to set
+# <name>_<component>_VERSION.
+#
+# Note that if version information is found via pkg-config,
+# <name>_<component>_FIND_VERSION can be set to require a particular version
+# for each component.
+#
+# If SKIP_DEPENDENCY_HANDLING is not set, the INTERFACE_LINK_LIBRARIES property
+# of the imported target for <component> will be set to contain the imported
+# targets for the components listed in <name>_<component>_component_deps.
+# <component>_FOUND will also be set to false if any of the compoments in
+# <name>_<component>_component_deps are not found. This requires the components
+# in <name>_<component>_component_deps to be listed before <component> in the
+# COMPONENTS argument.
+#
+# The following variables will be set:
+#
+# ``<name>_TARGETS``
+# the imported targets
+# ``<name>_LIBRARIES``
+# the found libraries
+# ``<name>_INCLUDE_DIRS``
+# the combined required include directories for the components
+# ``<name>_DEFINITIONS``
+# the "other" CFLAGS provided by pkg-config, if any
+# ``<name>_VERSION``
+# the value of ``<name>_<component>_VERSION`` for the first component that
+# has this variable set (note that components are searched for in the order
+# they are passed to the macro), although if it is already set, it will not
+# be altered
+#
+# Note that these variables are never cleared, so if
+# ecm_find_package_handle_library_components() is called multiple times with
+# different components (typically because of multiple find_package() calls) then
+# ``<name>_TARGETS``, for example, will contain all the targets found in any
+# call (although no duplicates).
+#
+# Since pre-1.0.0.
+
+#=============================================================================
+# Copyright 2014 Alex Merry <alex.merry@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+include(CMakeParseArguments)
+
+macro(ecm_find_package_version_check module_name)
+ if(CMAKE_VERSION VERSION_LESS 2.8.12)
+ message(FATAL_ERROR "CMake 2.8.12 is required by Find${module_name}.cmake")
+ endif()
+ if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
+ message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use Find${module_name}.cmake")
+ endif()
+endmacro()
+
+macro(ecm_find_package_parse_components module_name)
+ set(ecm_fppc_options SKIP_DEPENDENCY_HANDLING)
+ set(ecm_fppc_oneValueArgs RESULT_VAR)
+ set(ecm_fppc_multiValueArgs KNOWN_COMPONENTS DEFAULT_COMPONENTS)
+ cmake_parse_arguments(ECM_FPPC "${ecm_fppc_options}" "${ecm_fppc_oneValueArgs}" "${ecm_fppc_multiValueArgs}" ${ARGN})
+
+ if(ECM_FPPC_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "Unexpected arguments to ecm_find_package_parse_components: ${ECM_FPPC_UNPARSED_ARGUMENTS}")
+ endif()
+ if(NOT ECM_FPPC_RESULT_VAR)
+ message(FATAL_ERROR "Missing RESULT_VAR argument to ecm_find_package_parse_components")
+ endif()
+ if(NOT ECM_FPPC_KNOWN_COMPONENTS)
+ message(FATAL_ERROR "Missing KNOWN_COMPONENTS argument to ecm_find_package_parse_components")
+ endif()
+ if(NOT ECM_FPPC_DEFAULT_COMPONENTS)
+ set(ECM_FPPC_DEFAULT_COMPONENTS ${ECM_FPPC_KNOWN_COMPONENTS})
+ endif()
+
+ if(${module_name}_FIND_COMPONENTS)
+ set(ecm_fppc_requestedComps ${${module_name}_FIND_COMPONENTS})
+
+ if(NOT ECM_FPPC_SKIP_DEPENDENCY_HANDLING)
+ # Make sure deps are included
+ foreach(ecm_fppc_comp ${ecm_fppc_requestedComps})
+ foreach(ecm_fppc_dep_comp ${${module_name}_${ecm_fppc_comp}_component_deps})
+ list(FIND ecm_fppc_requestedComps "${ecm_fppc_dep_comp}" ecm_fppc_index)
+ if("${ecm_fppc_index}" STREQUAL "-1")
+ if(NOT ${module_name}_FIND_QUIETLY)
+ message(STATUS "${module_name}: ${ecm_fppc_comp} requires ${${module_name}_${ecm_fppc_comp}_component_deps}")
+ endif()
+ list(APPEND ecm_fppc_requestedComps "${ecm_fppc_dep_comp}")
+ endif()
+ endforeach()
+ endforeach()
+ else()
+ message(STATUS "Skipping dependency handling for ${module_name}")
+ endif()
+ list(REMOVE_DUPLICATES ecm_fppc_requestedComps)
+
+ # This makes sure components are listed in the same order as
+ # KNOWN_COMPONENTS (potentially important for inter-dependencies)
+ set(${ECM_FPPC_RESULT_VAR})
+ foreach(ecm_fppc_comp ${ECM_FPPC_KNOWN_COMPONENTS})
+ list(FIND ecm_fppc_requestedComps "${ecm_fppc_comp}" ecm_fppc_index)
+ if(NOT "${ecm_fppc_index}" STREQUAL "-1")
+ list(APPEND ${ECM_FPPC_RESULT_VAR} "${ecm_fppc_comp}")
+ list(REMOVE_AT ecm_fppc_requestedComps ${ecm_fppc_index})
+ endif()
+ endforeach()
+ # if there are any left, they are unknown components
+ if(ecm_fppc_requestedComps)
+ set(ecm_fppc_msgType STATUS)
+ if(${module_name}_FIND_REQUIRED)
+ set(ecm_fppc_msgType FATAL_ERROR)
+ endif()
+ if(NOT ${module_name}_FIND_QUIETLY)
+ message(${ecm_fppc_msgType} "${module_name}: requested unknown components ${ecm_fppc_requestedComps}")
+ endif()
+ return()
+ endif()
+ else()
+ set(${ECM_FPPC_RESULT_VAR} ${ECM_FPPC_DEFAULT_COMPONENTS})
+ endif()
+endmacro()
+
+macro(ecm_find_package_handle_library_components module_name)
+ set(ecm_fpwc_options SKIP_PKG_CONFIG SKIP_DEPENDENCY_HANDLING)
+ set(ecm_fpwc_oneValueArgs)
+ set(ecm_fpwc_multiValueArgs COMPONENTS)
+ cmake_parse_arguments(ECM_FPWC "${ecm_fpwc_options}" "${ecm_fpwc_oneValueArgs}" "${ecm_fpwc_multiValueArgs}" ${ARGN})
+
+ if(ECM_FPWC_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "Unexpected arguments to ecm_find_package_handle_components: ${ECM_FPWC_UNPARSED_ARGUMENTS}")
+ endif()
+ if(NOT ECM_FPWC_COMPONENTS)
+ message(FATAL_ERROR "Missing COMPONENTS argument to ecm_find_package_handle_components")
+ endif()
+
+ include(FindPackageHandleStandardArgs)
+ find_package(PkgConfig)
+ foreach(ecm_fpwc_comp ${ECM_FPWC_COMPONENTS})
+ set(ecm_fpwc_dep_vars)
+ set(ecm_fpwc_dep_targets)
+ if(NOT SKIP_DEPENDENCY_HANDLING)
+ foreach(ecm_fpwc_dep ${${module_name}_${ecm_fpwc_comp}_component_deps})
+ list(APPEND ecm_fpwc_dep_vars "${module_name}_${ecm_fpwc_dep}_FOUND")
+ list(APPEND ecm_fpwc_dep_targets "${module_name}::${ecm_fpwc_dep}")
+ endforeach()
+ endif()
+
+ if(NOT ECM_FPWC_SKIP_PKG_CONFIG AND ${module_name}_${ecm_fpwc_comp}_pkg_config)
+ pkg_check_modules(PKG_${module_name}_${ecm_fpwc_comp} QUIET
+ ${${module_name}_${ecm_fpwc_comp}_pkg_config})
+ endif()
+
+ find_path(${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR
+ NAMES ${${module_name}_${ecm_fpwc_comp}_header}
+ HINTS ${PKG_${module_name}_${ecm_fpwc_comp}_INCLUDE_DIRS}
+ PATH_SUFFIXES ${${module_name}_${ecm_fpwc_comp}_header_subdir}
+ )
+ find_library(${module_name}_${ecm_fpwc_comp}_LIBRARY
+ NAMES ${${module_name}_${ecm_fpwc_comp}_lib}
+ HINTS ${PKG_${module_name}_${ecm_fpwc_comp}_LIBRARY_DIRS}
+ )
+
+ set(${module_name}_${ecm_fpwc_comp}_VERSION "${PKG_${module_name}_${ecm_fpwc_comp}_VERSION}")
+ if(NOT ${module_name}_VERSION)
+ set(${module_name}_VERSION ${${module_name}_${ecm_fpwc_comp}_VERSION})
+ endif()
+
+ find_package_handle_standard_args(${module_name}_${ecm_fpwc_comp}
+ FOUND_VAR
+ ${module_name}_${ecm_fpwc_comp}_FOUND
+ REQUIRED_VARS
+ ${module_name}_${ecm_fpwc_comp}_LIBRARY
+ ${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR
+ ${ecm_fpwc_dep_vars}
+ VERSION_VAR
+ ${module_name}_${ecm_fpwc_comp}_VERSION
+ )
+
+ mark_as_advanced(
+ ${module_name}_${ecm_fpwc_comp}_LIBRARY
+ ${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR
+ )
+
+ if(${module_name}_${ecm_fpwc_comp}_FOUND)
+ list(APPEND ${module_name}_LIBRARIES
+ "${${module_name}_${ecm_fpwc_comp}_LIBRARY}")
+ list(APPEND ${module_name}_INCLUDE_DIRS
+ "${${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR}")
+ set(${module_name}_DEFINITIONS
+ ${${module_name}_DEFINITIONS}
+ ${PKG_${module_name}_${ecm_fpwc_comp}_DEFINITIONS})
+ if(NOT TARGET ${module_name}::${ecm_fpwc_comp})
+ add_library(${module_name}::${ecm_fpwc_comp} UNKNOWN IMPORTED)
+ set_target_properties(${module_name}::${ecm_fpwc_comp} PROPERTIES
+ IMPORTED_LOCATION "${${module_name}_${ecm_fpwc_comp}_LIBRARY}"
+ INTERFACE_COMPILE_OPTIONS "${PKG_${module_name}_${ecm_fpwc_comp}_DEFINITIONS}"
+ INTERFACE_INCLUDE_DIRECTORIES "${${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR}"
+ INTERFACE_LINK_LIBRARIES "${ecm_fpwc_dep_targets}"
+ )
+ endif()
+ list(APPEND ${module_name}_TARGETS
+ "${module_name}::${ecm_fpwc_comp}")
+ endif()
+ endforeach()
+ if(${module_name}_LIBRARIES)
+ list(REMOVE_DUPLICATES ${module_name}_LIBRARIES)
+ endif()
+ if(${module_name}_INCLUDE_DIRS)
+ list(REMOVE_DUPLICATES ${module_name}_INCLUDE_DIRS)
+ endif()
+ if(${module_name}_DEFINITIONS)
+ list(REMOVE_DUPLICATES ${module_name}_DEFINITIONS)
+ endif()
+ if(${module_name}_TARGETS)
+ list(REMOVE_DUPLICATES ${module_name}_TARGETS)
+ endif()
+endmacro()
diff --git a/cmake/3rdparty/extra-cmake-modules/qt_attribution.json b/cmake/3rdparty/extra-cmake-modules/qt_attribution.json
new file mode 100644
index 0000000000..cebebf82eb
--- /dev/null
+++ b/cmake/3rdparty/extra-cmake-modules/qt_attribution.json
@@ -0,0 +1,15 @@
+{
+ "Id": "extra-cmake-modules",
+ "Name": "extra-cmake-modules",
+ "QDocModule": "qtcore",
+ "QtUsage": "Used as part of the build system.",
+
+ "Description": "Additional CMake modules.",
+ "Homepage": "https://api.kde.org/ecm/",
+ "Version": "5.50.0",
+
+ "License": "BSD-3-Clause",
+ "LicenseId": "BSD 3-Clause License",
+ "LicenseFile": "COPYING-CMAKE-SCRIPTS",
+ "Copyright": "Copyright © 2011-2018 The KDE community"
+}
diff --git a/cmake/3rdparty/kwin/COPYING-CMAKE-SCRIPTS b/cmake/3rdparty/kwin/COPYING-CMAKE-SCRIPTS
new file mode 100644
index 0000000000..4b417765f3
--- /dev/null
+++ b/cmake/3rdparty/kwin/COPYING-CMAKE-SCRIPTS
@@ -0,0 +1,22 @@
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/cmake/3rdparty/kwin/FindLibdrm.cmake b/cmake/3rdparty/kwin/FindLibdrm.cmake
new file mode 100644
index 0000000000..9936e07eee
--- /dev/null
+++ b/cmake/3rdparty/kwin/FindLibdrm.cmake
@@ -0,0 +1,126 @@
+#.rst:
+# FindLibdrm
+# -------
+#
+# Try to find libdrm on a Unix system.
+#
+# This will define the following variables:
+#
+# ``Libdrm_FOUND``
+# True if (the requested version of) libdrm is available
+# ``Libdrm_VERSION``
+# The version of libdrm
+# ``Libdrm_LIBRARIES``
+# This can be passed to target_link_libraries() instead of the ``Libdrm::Libdrm``
+# target
+# ``Libdrm_INCLUDE_DIRS``
+# This should be passed to target_include_directories() if the target is not
+# used for linking
+# ``Libdrm_DEFINITIONS``
+# This should be passed to target_compile_options() if the target is not
+# used for linking
+#
+# If ``Libdrm_FOUND`` is TRUE, it will also define the following imported target:
+#
+# ``Libdrm::Libdrm``
+# The libdrm library
+#
+# In general we recommend using the imported target, as it is easier to use.
+# Bear in mind, however, that if the target is in the link interface of an
+# exported library, it must be made available by the package config file.
+
+#=============================================================================
+# Copyright 2014 Alex Merry <alex.merry@kde.org>
+# Copyright 2014 Martin Gräßlin <mgraesslin@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+ message(FATAL_ERROR "CMake 2.8.12 is required by FindLibdrm.cmake")
+endif()
+if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
+ message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use FindLibdrm.cmake")
+endif()
+
+if(NOT WIN32)
+ # Use pkg-config to get the directories and then use these values
+ # in the FIND_PATH() and FIND_LIBRARY() calls
+ find_package(PkgConfig)
+ pkg_check_modules(PKG_Libdrm QUIET libdrm)
+
+ set(Libdrm_DEFINITIONS ${PKG_Libdrm_CFLAGS_OTHER})
+ set(Libdrm_VERSION ${PKG_Libdrm_VERSION})
+
+ find_path(Libdrm_INCLUDE_DIR
+ NAMES
+ xf86drm.h
+ HINTS
+ ${PKG_Libdrm_INCLUDE_DIRS}
+ )
+ find_library(Libdrm_LIBRARY
+ NAMES
+ drm
+ HINTS
+ ${PKG_Libdrm_LIBRARY_DIRS}
+ )
+
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(Libdrm
+ FOUND_VAR
+ Libdrm_FOUND
+ REQUIRED_VARS
+ Libdrm_LIBRARY
+ Libdrm_INCLUDE_DIR
+ VERSION_VAR
+ Libdrm_VERSION
+ )
+
+ if(Libdrm_FOUND AND NOT TARGET Libdrm::Libdrm)
+ add_library(Libdrm::Libdrm UNKNOWN IMPORTED)
+ set_target_properties(Libdrm::Libdrm PROPERTIES
+ IMPORTED_LOCATION "${Libdrm_LIBRARY}"
+ INTERFACE_COMPILE_OPTIONS "${Libdrm_DEFINITIONS}"
+ INTERFACE_INCLUDE_DIRECTORIES "${Libdrm_INCLUDE_DIR}"
+ INTERFACE_INCLUDE_DIRECTORIES "${Libdrm_INCLUDE_DIR}/libdrm"
+ )
+ endif()
+
+ mark_as_advanced(Libdrm_LIBRARY Libdrm_INCLUDE_DIR)
+
+ # compatibility variables
+ set(Libdrm_LIBRARIES ${Libdrm_LIBRARY})
+ set(Libdrm_INCLUDE_DIRS ${Libdrm_INCLUDE_DIR} "${Libdrm_INCLUDE_DIR}/libdrm")
+ set(Libdrm_VERSION_STRING ${Libdrm_VERSION})
+
+else()
+ message(STATUS "FindLibdrm.cmake cannot find libdrm on Windows systems.")
+ set(Libdrm_FOUND FALSE)
+endif()
+
+include(FeatureSummary)
+set_package_properties(Libdrm PROPERTIES
+ URL "https://wiki.freedesktop.org/dri/"
+ DESCRIPTION "Userspace interface to kernel DRM services."
+)
diff --git a/cmake/3rdparty/kwin/FindLibinput.cmake b/cmake/3rdparty/kwin/FindLibinput.cmake
new file mode 100644
index 0000000000..b856e0bbcb
--- /dev/null
+++ b/cmake/3rdparty/kwin/FindLibinput.cmake
@@ -0,0 +1,125 @@
+#.rst:
+# FindLibinput
+# -------
+#
+# Try to find libinput on a Unix system.
+#
+# This will define the following variables:
+#
+# ``Libinput_FOUND``
+# True if (the requested version of) libinput is available
+# ``Libinput_VERSION``
+# The version of libinput
+# ``Libinput_LIBRARIES``
+# This can be passed to target_link_libraries() instead of the ``Libinput::Libinput``
+# target
+# ``Libinput_INCLUDE_DIRS``
+# This should be passed to target_include_directories() if the target is not
+# used for linking
+# ``Libinput_DEFINITIONS``
+# This should be passed to target_compile_options() if the target is not
+# used for linking
+#
+# If ``Libinput_FOUND`` is TRUE, it will also define the following imported target:
+#
+# ``Libinput::Libinput``
+# The libinput library
+#
+# In general we recommend using the imported target, as it is easier to use.
+# Bear in mind, however, that if the target is in the link interface of an
+# exported library, it must be made available by the package config file.
+
+#=============================================================================
+# Copyright 2014 Alex Merry <alex.merry@kde.org>
+# Copyright 2014 Martin Gräßlin <mgraesslin@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+ message(FATAL_ERROR "CMake 2.8.12 is required by FindLibinput.cmake")
+endif()
+if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
+ message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use FindLibinput.cmake")
+endif()
+
+if(NOT WIN32)
+ # Use pkg-config to get the directories and then use these values
+ # in the FIND_PATH() and FIND_LIBRARY() calls
+ find_package(PkgConfig)
+ pkg_check_modules(PKG_Libinput QUIET libinput)
+
+ set(Libinput_DEFINITIONS ${PKG_Libinput_CFLAGS_OTHER})
+ set(Libinput_VERSION ${PKG_Libinput_VERSION})
+
+ find_path(Libinput_INCLUDE_DIR
+ NAMES
+ libinput.h
+ HINTS
+ ${PKG_Libinput_INCLUDE_DIRS}
+ )
+ find_library(Libinput_LIBRARY
+ NAMES
+ input
+ HINTS
+ ${PKG_Libinput_LIBRARY_DIRS}
+ )
+
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(Libinput
+ FOUND_VAR
+ Libinput_FOUND
+ REQUIRED_VARS
+ Libinput_LIBRARY
+ Libinput_INCLUDE_DIR
+ VERSION_VAR
+ Libinput_VERSION
+ )
+
+ if(Libinput_FOUND AND NOT TARGET Libinput::Libinput)
+ add_library(Libinput::Libinput UNKNOWN IMPORTED)
+ set_target_properties(Libinput::Libinput PROPERTIES
+ IMPORTED_LOCATION "${Libinput_LIBRARY}"
+ INTERFACE_COMPILE_OPTIONS "${Libinput_DEFINITIONS}"
+ INTERFACE_INCLUDE_DIRECTORIES "${Libinput_INCLUDE_DIR}"
+ )
+ endif()
+
+ mark_as_advanced(Libinput_LIBRARY Libinput_INCLUDE_DIR)
+
+ # compatibility variables
+ set(Libinput_LIBRARIES ${Libinput_LIBRARY})
+ set(Libinput_INCLUDE_DIRS ${Libinput_INCLUDE_DIR})
+ set(Libinput_VERSION_STRING ${Libinput_VERSION})
+
+else()
+ message(STATUS "FindLibinput.cmake cannot find libinput on Windows systems.")
+ set(Libinput_FOUND FALSE)
+endif()
+
+include(FeatureSummary)
+set_package_properties(Libinput PROPERTIES
+ URL "http://www.freedesktop.org/wiki/Software/libinput/"
+ DESCRIPTION "Library to handle input devices in Wayland compositors and to provide a generic X.Org input driver."
+)
diff --git a/cmake/3rdparty/kwin/FindXKB.cmake b/cmake/3rdparty/kwin/FindXKB.cmake
new file mode 100644
index 0000000000..0d599df0fd
--- /dev/null
+++ b/cmake/3rdparty/kwin/FindXKB.cmake
@@ -0,0 +1,101 @@
+# Try to find xkbcommon on a Unix system
+#
+# This will define:
+#
+# XKB_FOUND - True if XKB is available
+# XKB_LIBRARIES - Link these to use XKB
+# XKB_INCLUDE_DIRS - Include directory for XKB
+# XKB_DEFINITIONS - Compiler flags for using XKB
+#
+# Additionally, the following imported targets will be defined:
+#
+# XKB::XKB
+#
+# Copyright (c) 2014 Martin Gräßlin <mgraesslin@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+ message(FATAL_ERROR "CMake 2.8.12 is required by FindXKB.cmake")
+endif()
+if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
+ message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use FindXKB.cmake")
+endif()
+
+if(NOT WIN32)
+ # Use pkg-config to get the directories and then use these values
+ # in the FIND_PATH() and FIND_LIBRARY() calls
+ find_package(PkgConfig)
+ pkg_check_modules(PKG_XKB QUIET xkbcommon)
+
+ set(XKB_DEFINITIONS ${PKG_XKB_CFLAGS_OTHER})
+
+ find_path(XKB_INCLUDE_DIR
+ NAMES
+ xkbcommon/xkbcommon.h
+ HINTS
+ ${PKG_XKB_INCLUDE_DIRS}
+ )
+ find_library(XKB_LIBRARY
+ NAMES
+ xkbcommon
+ HINTS
+ ${PKG_XKB_LIBRARY_DIRS}
+ )
+
+ set(XKB_LIBRARIES ${XKB_LIBRARY})
+ set(XKB_INCLUDE_DIRS ${XKB_INCLUDE_DIR})
+ set(XKB_VERSION ${PKG_XKB_VERSION})
+
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(XKB
+ FOUND_VAR
+ XKB_FOUND
+ REQUIRED_VARS
+ XKB_LIBRARY
+ XKB_INCLUDE_DIR
+ VERSION_VAR
+ XKB_VERSION
+ )
+
+ if(XKB_FOUND AND NOT TARGET XKB::XKB)
+ add_library(XKB::XKB UNKNOWN IMPORTED)
+ set_target_properties(XKB::XKB PROPERTIES
+ IMPORTED_LOCATION "${XKB_LIBRARY}"
+ INTERFACE_COMPILE_OPTIONS "${XKB_DEFINITIONS}"
+ INTERFACE_INCLUDE_DIRECTORIES "${XKB_INCLUDE_DIR}"
+ )
+ endif()
+
+else()
+ message(STATUS "FindXKB.cmake cannot find XKB on Windows systems.")
+ set(XKB_FOUND FALSE)
+endif()
+
+include(FeatureSummary)
+set_package_properties(XKB PROPERTIES
+ URL "http://xkbcommon.org"
+ DESCRIPTION "XKB API common to servers and clients."
+)
diff --git a/cmake/3rdparty/kwin/Findgbm.cmake b/cmake/3rdparty/kwin/Findgbm.cmake
new file mode 100644
index 0000000000..6dfc895daa
--- /dev/null
+++ b/cmake/3rdparty/kwin/Findgbm.cmake
@@ -0,0 +1,125 @@
+#.rst:
+# Findgbm
+# -------
+#
+# Try to find gbm on a Unix system.
+#
+# This will define the following variables:
+#
+# ``gbm_FOUND``
+# True if (the requested version of) gbm is available
+# ``gbm_VERSION``
+# The version of gbm
+# ``gbm_LIBRARIES``
+# This can be passed to target_link_libraries() instead of the ``gbm::gbm``
+# target
+# ``gbm_INCLUDE_DIRS``
+# This should be passed to target_include_directories() if the target is not
+# used for linking
+# ``gbm_DEFINITIONS``
+# This should be passed to target_compile_options() if the target is not
+# used for linking
+#
+# If ``gbm_FOUND`` is TRUE, it will also define the following imported target:
+#
+# ``gbm::gbm``
+# The gbm library
+#
+# In general we recommend using the imported target, as it is easier to use.
+# Bear in mind, however, that if the target is in the link interface of an
+# exported library, it must be made available by the package config file.
+
+#=============================================================================
+# Copyright 2014 Alex Merry <alex.merry@kde.org>
+# Copyright 2014 Martin Gräßlin <mgraesslin@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+ message(FATAL_ERROR "CMake 2.8.12 is required by Findgbm.cmake")
+endif()
+if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
+ message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use Findgbm.cmake")
+endif()
+
+if(NOT WIN32)
+ # Use pkg-config to get the directories and then use these values
+ # in the FIND_PATH() and FIND_LIBRARY() calls
+ find_package(PkgConfig)
+ pkg_check_modules(PKG_gbm QUIET gbm)
+
+ set(gbm_DEFINITIONS ${PKG_gbm_CFLAGS_OTHER})
+ set(gbm_VERSION ${PKG_gbm_VERSION})
+
+ find_path(gbm_INCLUDE_DIR
+ NAMES
+ gbm.h
+ HINTS
+ ${PKG_gbm_INCLUDE_DIRS}
+ )
+ find_library(gbm_LIBRARY
+ NAMES
+ gbm
+ HINTS
+ ${PKG_gbm_LIBRARY_DIRS}
+ )
+
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(gbm
+ FOUND_VAR
+ gbm_FOUND
+ REQUIRED_VARS
+ gbm_LIBRARY
+ gbm_INCLUDE_DIR
+ VERSION_VAR
+ gbm_VERSION
+ )
+
+ if(gbm_FOUND AND NOT TARGET gbm::gbm)
+ add_library(gbm::gbm UNKNOWN IMPORTED)
+ set_target_properties(gbm::gbm PROPERTIES
+ IMPORTED_LOCATION "${gbm_LIBRARY}"
+ INTERFACE_COMPILE_OPTIONS "${gbm_DEFINITIONS}"
+ INTERFACE_INCLUDE_DIRECTORIES "${gbm_INCLUDE_DIR}"
+ )
+ endif()
+
+ mark_as_advanced(gbm_LIBRARY gbm_INCLUDE_DIR)
+
+ # compatibility variables
+ set(gbm_LIBRARIES ${gbm_LIBRARY})
+ set(gbm_INCLUDE_DIRS ${gbm_INCLUDE_DIR})
+ set(gbm_VERSION_STRING ${gbm_VERSION})
+
+else()
+ message(STATUS "Findgbm.cmake cannot find gbm on Windows systems.")
+ set(gbm_FOUND FALSE)
+endif()
+
+include(FeatureSummary)
+set_package_properties(gbm PROPERTIES
+ URL "http://www.mesa3d.org"
+ DESCRIPTION "Mesa gbm library."
+)
diff --git a/cmake/3rdparty/kwin/qt_attribution.json b/cmake/3rdparty/kwin/qt_attribution.json
new file mode 100644
index 0000000000..5c22641132
--- /dev/null
+++ b/cmake/3rdparty/kwin/qt_attribution.json
@@ -0,0 +1,17 @@
+{
+ "Id": "kwin",
+ "Name": "KWin",
+ "QDocModule": "qtcore",
+ "QtUsage": "Used as part of the build system.",
+
+ "Description": "Additional CMake modules for graphics system dependencies.",
+ "Homepage": "https://www.kde.org/",
+ "Version": "5.13.4",
+
+ "License": "BSD-3-Clause",
+ "LicenseId": "BSD 3-Clause License",
+ "LicenseFile": "COPYING-CMAKE-SCRIPTS",
+ "Copyright": "Copyright 2014 Alex Merry <alex.merry@kde.org>
+Copyright 2014 Martin Gräßlin <mgraesslin@kde.org>,
+Copyright (c) 2006,2007 Laurent Montel, <montel@kde.org>"
+}
diff --git a/cmake/3rdpartyConfig.cmake.in b/cmake/3rdpartyConfig.cmake.in
new file mode 100644
index 0000000000..fe15a1efc6
--- /dev/null
+++ b/cmake/3rdpartyConfig.cmake.in
@@ -0,0 +1,13 @@
+@PACKAGE_INIT@
+
+get_filename_component(_import_prefix "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_import_prefix "${_import_prefix}" REALPATH)
+
+set(old_CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}")
+set(CMAKE_MODULE_PATH "${_import_prefix}" ${CMAKE_MODULE_PATH} )
+
+@3RDPARTY_ADDITIONAL_SETUP_CODE@
+
+set(CMAKE_MODULE_PATH "${old_CMAKE_MODULE_PATH}")
+
+include("${CMAKE_CURRENT_LIST_DIR}/@target@Targets.cmake")
diff --git a/cmake/FindATSPI2.cmake b/cmake/FindATSPI2.cmake
new file mode 100644
index 0000000000..ca0045635b
--- /dev/null
+++ b/cmake/FindATSPI2.cmake
@@ -0,0 +1,7 @@
+include(FindPkgConfig)
+
+pkg_check_modules(ATSPI2 atspi-2 IMPORTED_TARGET)
+
+if (NOT TARGET PkgConfig::ATSPI2)
+ set(ATSPI2_FOUND 0)
+endif()
diff --git a/cmake/FindAtomic.cmake b/cmake/FindAtomic.cmake
new file mode 100644
index 0000000000..91cee62046
--- /dev/null
+++ b/cmake/FindAtomic.cmake
@@ -0,0 +1,44 @@
+# We can't create the same interface imported target multiple times, CMake will complain if we do
+# that. This can happen if the find_package call is done in multiple different subdirectories.
+if(TARGET Atomic)
+ set(Atomic_FOUND ON)
+ return()
+endif()
+
+include(CheckCXXSourceCompiles)
+
+set (atomic_test_sources "#include <atomic>
+#include <cstdint>
+
+void test(volatile std::atomic<std::int64_t> &a)
+{
+ std::int64_t v = a.load(std::memory_order_acquire);
+ while (!a.compare_exchange_strong(v, v + 1,
+ std::memory_order_acq_rel,
+ std::memory_order_acquire)) {
+ v = a.exchange(v - 1);
+ }
+ a.store(v + 1, std::memory_order_release);
+}
+
+int main(int, char **)
+{
+ void *ptr = (void*)0xffffffc0; // any random pointer
+ test(*reinterpret_cast<std::atomic<std::int64_t> *>(ptr));
+ return 0;
+}")
+
+check_cxx_source_compiles("${atomic_test_sources}" HAVE_STDATOMIC)
+if(NOT HAVE_STDATOMIC)
+ set(_req_libraries "${CMAKE_REQUIRE_LIBRARIES}")
+ set(CMAKE_REQUIRE_LIBRARIES "atomic")
+ check_cxx_source_compiles("${atomic_test_sources}" HAVE_STDATOMIC_WITH_LIB)
+ set(CMAKE_REQUIRE_LIBRARIES "${_req_libraries}")
+endif()
+
+add_library(Atomic INTERFACE IMPORTED)
+if(HAVE_STDATOMIC_WITH_LIB)
+ target_link_libraries(Atomic INTERFACE atomic)
+endif()
+
+set(Atomic_FOUND 1)
diff --git a/cmake/FindCups.cmake b/cmake/FindCups.cmake
new file mode 100644
index 0000000000..7a78100aae
--- /dev/null
+++ b/cmake/FindCups.cmake
@@ -0,0 +1,98 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindCups
+--------
+
+Find the CUPS printing system.
+
+Set CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE to TRUE if you need a version which
+features this function (i.e. at least 1.1.19)
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+This module defines :prop_tgt:`IMPORTED` target ``Cups::Cups``, if Cups has
+been found.
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``CUPS_FOUND``
+ true if CUPS headers and libraries were found
+``CUPS_INCLUDE_DIRS``
+ the directory containing the Cups headers
+``CUPS_LIBRARIES``
+ the libraries to link against to use CUPS.
+``CUPS_VERSION_STRING``
+ the version of CUPS found (since CMake 2.8.8)
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``CUPS_INCLUDE_DIR``
+ the directory containing the Cups headers
+#]=======================================================================]
+
+find_path(CUPS_INCLUDE_DIR cups/cups.h )
+
+find_library(CUPS_LIBRARIES NAMES cups )
+
+if (CUPS_INCLUDE_DIR AND CUPS_LIBRARIES AND CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE)
+ include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
+ include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
+ cmake_push_check_state()
+ set(CMAKE_REQUIRED_QUIET ${Cups_FIND_QUIETLY})
+
+ # ippDeleteAttribute is new in cups-1.1.19 (and used by kdeprint)
+ CHECK_LIBRARY_EXISTS(cups ippDeleteAttribute "" CUPS_HAS_IPP_DELETE_ATTRIBUTE)
+ cmake_pop_check_state()
+endif ()
+
+if (CUPS_INCLUDE_DIR AND EXISTS "${CUPS_INCLUDE_DIR}/cups/cups.h")
+ file(STRINGS "${CUPS_INCLUDE_DIR}/cups/cups.h" cups_version_str
+ REGEX "^#[\t ]*define[\t ]+CUPS_VERSION_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$")
+
+ unset(CUPS_VERSION_STRING)
+ foreach(VPART MAJOR MINOR PATCH)
+ foreach(VLINE ${cups_version_str})
+ if(VLINE MATCHES "^#[\t ]*define[\t ]+CUPS_VERSION_${VPART}[\t ]+([0-9]+)$")
+ set(CUPS_VERSION_PART "${CMAKE_MATCH_1}")
+ if(CUPS_VERSION_STRING)
+ string(APPEND CUPS_VERSION_STRING ".${CUPS_VERSION_PART}")
+ else()
+ set(CUPS_VERSION_STRING "${CUPS_VERSION_PART}")
+ endif()
+ endif()
+ endforeach()
+ endforeach()
+endif ()
+
+include(FindPackageHandleStandardArgs)
+
+if (CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE)
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cups
+ REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR CUPS_HAS_IPP_DELETE_ATTRIBUTE
+ VERSION_VAR CUPS_VERSION_STRING)
+else ()
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cups
+ REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR
+ VERSION_VAR CUPS_VERSION_STRING)
+endif ()
+
+mark_as_advanced(CUPS_INCLUDE_DIR CUPS_LIBRARIES)
+
+if (CUPS_FOUND)
+ set(CUPS_INCLUDE_DIRS "${CUPS_INCLUDE_DIR}")
+ if (NOT TARGET Cups::Cups)
+ add_library(Cups::Cups INTERFACE IMPORTED)
+ set_target_properties(Cups::Cups PROPERTIES
+ INTERFACE_LINK_LIBRARIES "${CUPS_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${CUPS_INCLUDE_DIR}")
+ endif ()
+endif ()
diff --git a/cmake/FindDB2.cmake b/cmake/FindDB2.cmake
new file mode 100644
index 0000000000..59eadab7d5
--- /dev/null
+++ b/cmake/FindDB2.cmake
@@ -0,0 +1,59 @@
+#.rst:
+# FindDB2
+# ---------
+#
+# Try to locate the db2 client library.
+# If found, this will define the following variables:
+#
+# ``DB2_FOUND``
+# True if the db2 library is available
+# ``DB2_INCLUDE_DIRS``
+# The db2 include directories
+# ``DB2_LIBRARIES``
+# The db2 libraries for linking
+#
+# If ``DB2_FOUND`` is TRUE, it will also define the following
+# imported target:
+#
+# ``DB2::DB2``
+# The db2 client library
+
+if (NOT DEFINED DB2_INCLUDE_DIR)
+ find_path(DB2_INCLUDE_DIRS
+ NAMES sqlcli1.h
+ HINTS ENV DB2_HOME
+ PATH_SUFFIXES include)
+else()
+ find_path(DB2_INCLUDE_DIRS
+ NAMES sqlcli1.h
+ HINTS ${DB2_INCLUDE_DIR})
+endif()
+
+if (NOT DEFINED DB2_LIBRARY_DIR)
+ find_library(DB2_LIBRARIES
+ NAMES db2
+ HINTS ENV DB2LIB)
+else()
+ find_library(DB2_LIBRARIES
+ NAMES db2
+ HINTS ${DB2_LIBRARY_DIR})
+endif()
+
+if (NOT DB2_INCLUDE_DIRS STREQUAL "DB2_INCLUDE_DIRS-NOTFOUND" AND NOT DB2_LIBRARIES STREQUAL "DB2_LIBRARIES-NOTFOUND")
+ set(DB2_FOUND ON)
+endif()
+
+if(DB2_FOUND AND NOT TARGET DB2::DB2)
+ add_library(DB2::DB2 UNKNOWN IMPORTED)
+ set_target_properties(DB2::DB2 PROPERTIES
+ IMPORTED_LOCATION "${DB2_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${DB2_INCLUDE_DIRS}")
+endif()
+
+mark_as_advanced(DB2_INCLUDE_DIRS DB2_LIBRARIES)
+
+include(FeatureSummary)
+set_package_properties(DB2 PROPERTIES
+ URL "https://www.ibm.com"
+ DESCRIPTION "IBM DB2 client library")
+
diff --git a/cmake/FindDirectFB.cmake b/cmake/FindDirectFB.cmake
new file mode 100644
index 0000000000..4446018587
--- /dev/null
+++ b/cmake/FindDirectFB.cmake
@@ -0,0 +1,7 @@
+find_package(PkgConfig)
+
+pkg_check_modules(DirectFB directfb IMPORTED_TARGET)
+
+if (NOT TARGET PkgConfig::DirectFB)
+ set(DirectFB_FOUND 0)
+endif()
diff --git a/cmake/FindGLESv2.cmake b/cmake/FindGLESv2.cmake
new file mode 100644
index 0000000000..02df910285
--- /dev/null
+++ b/cmake/FindGLESv2.cmake
@@ -0,0 +1,51 @@
+include(CheckCXXSourceCompiles)
+
+# No library linkage is necessary to use GLESv2 with Emscripten. The headers are also
+# system headers, so we don't need to search for them.
+if(EMSCRIPTEN)
+ set(HAVE_GLESv2 ON)
+else()
+ find_library(GLESv2_LIBRARY NAMES GLESv2)
+ find_path(GLESv2_INCLUDE_DIR NAMES "GLES2/gl2.h" DOC "The OpenGLES 2 include path")
+ set(_libraries "${CMAKE_REQUIRED_LIBRARIES}")
+ list(APPEND CMAKE_REQUIRED_LIBRARIES "${GLESv2_LIBRARY}")
+ set(_includes "${CMAKE_REQUIRED_INCLUDES}")
+ list(APPEND CMAKE_REQUIRED_INCLUDES "${GLESv2_INCLUDE_DIR}")
+
+ check_cxx_source_compiles("
+#ifdef __APPLE__
+# include <OpenGLES/ES2/gl.h>
+#else
+# define GL_GLEXT_PROTOTYPES
+# include <GLES2/gl2.h>
+#endif
+
+int main(int argc, char *argv[]) {
+ glUniform1f(1, GLfloat(1.0));
+ glClear(GL_COLOR_BUFFER_BIT);
+}" HAVE_GLESv2)
+
+ set(CMAKE_REQUIRED_LIBRARY "${_libraries}")
+ unset(_libraries)
+ set(CMAKE_REQUIRED_INCLUDES "${_includes}")
+ unset(_includes)
+ set(package_args GLESv2_INCLUDE_DIR GLESv2_LIBRARY HAVE_GLESv2)
+endif()
+
+list(APPEND package_args HAVE_GLESv2)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GLESv2 DEFAULT_MSG ${package_args})
+
+mark_as_advanced(${package_args})
+
+if(GLESv2_FOUND AND NOT TARGET GLESv2::GLESv2)
+ if(EMSCRIPTEN)
+ add_library(GLESv2::GLESv2 INTERFACE IMPORTED)
+ else()
+ add_library(GLESv2::GLESv2 UNKNOWN IMPORTED)
+ set_target_properties(GLESv2::GLESv2 PROPERTIES
+ IMPORTED_LOCATION "${GLESv2_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GLESv2_INCLUDE_DIR}")
+ endif()
+endif()
diff --git a/cmake/FindGTK3.cmake b/cmake/FindGTK3.cmake
new file mode 100644
index 0000000000..9423eb4b9b
--- /dev/null
+++ b/cmake/FindGTK3.cmake
@@ -0,0 +1,7 @@
+include(FindPkgConfig)
+
+pkg_check_modules(GTK3 "gtk+-3.0 >= 3.6" IMPORTED_TARGET)
+
+if (NOT TARGET PkgConfig::GTK3)
+ set(GTK3_FOUND 0)
+endif()
diff --git a/cmake/FindLibproxy.cmake b/cmake/FindLibproxy.cmake
new file mode 100644
index 0000000000..95d86d1617
--- /dev/null
+++ b/cmake/FindLibproxy.cmake
@@ -0,0 +1,7 @@
+find_package(PkgConfig)
+
+pkg_check_modules(Libproxy libproxy-1.0 IMPORTED_TARGET)
+
+if (NOT TARGET PkgConfig::Libproxy)
+ set(Libproxy_FOUND 0)
+endif()
diff --git a/cmake/FindLibsystemd.cmake b/cmake/FindLibsystemd.cmake
new file mode 100644
index 0000000000..9b480700f9
--- /dev/null
+++ b/cmake/FindLibsystemd.cmake
@@ -0,0 +1,7 @@
+find_package(PkgConfig)
+
+pkg_check_modules(Libsystemd libsystemd IMPORTED_TARGET)
+
+if (NOT TARGET PkgConfig::Libsystemd)
+ set(Libsystemd_FOUND 0)
+endif()
diff --git a/cmake/FindLibudev.cmake b/cmake/FindLibudev.cmake
new file mode 100644
index 0000000000..637c7c6d88
--- /dev/null
+++ b/cmake/FindLibudev.cmake
@@ -0,0 +1,7 @@
+find_package(PkgConfig)
+
+pkg_check_modules(Libudev libudev IMPORTED_TARGET)
+
+if (NOT TARGET PkgConfig::Libudev)
+ set(Libudev_FOUND 0)
+endif()
diff --git a/cmake/FindMtdev.cmake b/cmake/FindMtdev.cmake
new file mode 100644
index 0000000000..c852a77c1c
--- /dev/null
+++ b/cmake/FindMtdev.cmake
@@ -0,0 +1,7 @@
+find_package(PkgConfig)
+
+pkg_check_modules(Mtdev mtdev IMPORTED_TARGET)
+
+if (NOT TARGET PkgConfig::MtDev)
+ set(Mtdev_FOUND 0)
+endif()
diff --git a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake
new file mode 100644
index 0000000000..0cc5cb6368
--- /dev/null
+++ b/cmake/FindMySQL.cmake
@@ -0,0 +1,50 @@
+#.rst:
+# FindMySQL
+# ---------
+#
+# Try to locate the mysql client library.
+# If found, this will define the following variables:
+#
+# ``MySQL_FOUND``
+# True if the mysql library is available
+# ``MySQL_INCLUDE_DIRS``
+# The mysql include directories
+# ``MySQL_LIBRARIES``
+# The mysql libraries for linking
+#
+# If ``MySQL_FOUND`` is TRUE, it will also define the following
+# imported target:
+#
+# ``MySQL::MySQL``
+# The mysql client library
+
+find_package(PkgConfig)
+pkg_check_modules(PC_MySQL QUIET mysqlclient)
+
+find_path(MySQL_INCLUDE_DIRS
+ NAMES mysql.h
+ HINTS ${PC_MySQL_INCLUDEDIR}
+ PATH_SUFFIXES mysql)
+
+find_library(MySQL_LIBRARIES
+ NAMES mysqlclient
+ HINTS ${PC_MySQL_LIBDIR}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(MySQL DEFAULT_MSG MySQL_LIBRARIES MySQL_INCLUDE_DIRS)
+
+if(MySQL_FOUND AND NOT TARGET MySQL::MySQL)
+ add_library(MySQL::MySQL UNKNOWN IMPORTED)
+ set_target_properties(MySQL::MySQL PROPERTIES
+ IMPORTED_LOCATION "${MySQL_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${MySQL_INCLUDE_DIRS}")
+endif()
+
+mark_as_advanced(MySQL_INCLUDE_DIRS MySQL_LIBRARIES)
+
+include(FeatureSummary)
+set_package_properties(MySQL PROPERTIES
+ URL "https://www.mysql.com"
+ DESCRIPTION "MySQL client library")
+
diff --git a/cmake/FindOracle.cmake b/cmake/FindOracle.cmake
new file mode 100644
index 0000000000..58e787e362
--- /dev/null
+++ b/cmake/FindOracle.cmake
@@ -0,0 +1,48 @@
+#.rst:
+# FindOracle
+# ---------
+#
+# Try to locate the oracle client library.
+# If found, this will define the following variables:
+#
+# ``Oracle_FOUND``
+# True if the oracle library is available
+# ``Oracle_INCLUDE_DIRS``
+# The oracle include directories
+# ``Oracle_LIBRARIES``
+# The oracle libraries for linking
+#
+# If ``Oracle_FOUND`` is TRUE, it will also define the following
+# imported target:
+#
+# ``Oracle::Oracle``
+# The oracle instant client library
+
+find_path(Oracle_INCLUDE_DIRS
+ NAMES oci.h
+ HINTS ${Oracle_INCLUDE_DIR})
+
+set(ORACLE_OCI_NAMES clntsh ociei oraociei12)
+
+find_library(Oracle_LIBRARIES
+ NAMES NAMES ${ORACLE_OCI_NAMES}
+ HINTS ${Oracle_LIBRARY_DIR})
+
+if (NOT Oracle_INCLUDE_DIRS STREQUAL "Oracle_INCLUDE_DIRS-NOTFOUND" AND NOT Oracle_LIBRARIES STREQUAL "Oracle_LIBRARIES-NOTFOUND")
+ set(Oracle_FOUND ON)
+endif()
+
+if(Oracle_FOUND AND NOT TARGET Oracle::OCI)
+ add_library(Oracle::OCI UNKNOWN IMPORTED)
+ set_target_properties(Oracle::OCI PROPERTIES
+ IMPORTED_LOCATION "${Oracle_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${Oracle_INCLUDE_DIRS}")
+endif()
+
+mark_as_advanced(Oracle_INCLUDE_DIRS Oracle_LIBRARIES)
+
+include(FeatureSummary)
+set_package_properties(Oracle PROPERTIES
+ URL "https://www.oracle.com"
+ DESCRIPTION "Oracle client library")
+
diff --git a/cmake/FindPPS.cmake b/cmake/FindPPS.cmake
new file mode 100644
index 0000000000..c3360fa82c
--- /dev/null
+++ b/cmake/FindPPS.cmake
@@ -0,0 +1,19 @@
+# Find the PPS library
+
+# Will make the target PPS::PPS available when found.
+
+find_library(PPS_LIBRARY NAMES "pps")
+find_path(PPS_INCLUDE_DIR NAMES "sys/pps.h" DOC "The PPS Include path")
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(PPS DEFAULT_MSG PPS_INCLUDE_DIR PPS_LIBRARY)
+
+mark_as_advanced(PPS_INCLUDE_DIR PPS_LIBRARY)
+
+if(PPS_FOUND)
+ add_library(__PPS INTERFACE IMPORTED)
+ target_link_libraries(__PPS INTERFACE ${PPS_LIBRARY})
+ target_include_directories(__PPS INTERFACE ${PPS_INCLUDE_DIR})
+
+ add_library(PPS::PPS ALIAS __PPS)
+endif()
diff --git a/cmake/FindSlog2.cmake b/cmake/FindSlog2.cmake
new file mode 100644
index 0000000000..dfb6635a39
--- /dev/null
+++ b/cmake/FindSlog2.cmake
@@ -0,0 +1,19 @@
+# Find the Slog2 library
+
+# Will make the target Slog2::Slog2 available when found.
+
+find_library(Slog2_LIBRARY NAMES "slog2")
+find_path(Slog2_INCLUDE_DIR NAMES "sys/slog2.h" DOC "The Slog2 Include path")
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Slog2 DEFAULT_MSG Slog2_INCLUDE_DIR Slog2_LIBRARY)
+
+mark_as_advanced(Slog2_INCLUDE_DIR Slog2_LIBRARY)
+
+if(Slog2_FOUND)
+ add_library(__Slog2 INTERFACE IMPORTED)
+ target_link_libraries(__Slog2 INTERFACE ${Slog2_LIBRARY})
+ target_include_directories(__Slog2 INTERFACE ${Slog2_INCLUDE_DIR})
+
+ add_library(Slog2::Slog2 ALIAS __Slog2)
+endif()
diff --git a/cmake/FindTslib.cmake b/cmake/FindTslib.cmake
new file mode 100644
index 0000000000..3c50116d0a
--- /dev/null
+++ b/cmake/FindTslib.cmake
@@ -0,0 +1,7 @@
+find_package(PkgConfig)
+
+pkg_check_modules(Tslib tslib IMPORTED_TARGET)
+
+if (NOT TARGET PkgConfig::Tslib)
+ set(Tslib_FOUND 0)
+endif()
diff --git a/cmake/FindWrapDBus1.cmake b/cmake/FindWrapDBus1.cmake
new file mode 100644
index 0000000000..c2668d6cc8
--- /dev/null
+++ b/cmake/FindWrapDBus1.cmake
@@ -0,0 +1,35 @@
+# DBus1 is buggy and breaks PKG_CONFIG environment.
+# Work around that:-/
+# See https://gitlab.freedesktop.org/dbus/dbus/issues/267 for more information
+
+if(DEFINED ENV{PKG_CONFIG_DIR})
+ set(__qt_dbus_pcd "$ENV{PKG_CONFIG_DIR}")
+endif()
+if(DEFINED ENV{PKG_CONFIG_PATH})
+ set(__qt_dbus_pcp "$ENV{PKG_CONFIG_PATH}")
+endif()
+if(DEFINED ENV{PKG_CONFIG_LIBDIR})
+ set(__qt_dbus_pcl "$ENV{PKG_CONFIG_LIBDIR}")
+endif()
+
+find_package(DBus1)
+
+if(DEFINED __qt_dbus_pcd)
+ set(ENV{PKG_CONFIG_DIR} "${__qt_dbus_pcd}")
+else()
+ unset(ENV{PKG_CONFIG_DIR})
+endif()
+if(DEFINED __qt_dbus_pcp)
+ set(ENV{PKG_CONFIG_PATH} "${__qt_dbus_pcp}")
+else()
+ unset(ENV{PKG_CONFIG_PATH})
+endif()
+if(DEFINED __qt_dbus_pcl)
+ set(ENV{PKG_CONFIG_LIBDIR} "${__qt_dbus_pcl}")
+else()
+ unset(ENV{PKG_CONFIG_LIBDIR})
+endif()
+
+if(DBus1_FOUND)
+ set(WrapDBus1_FOUND 1)
+endif()
diff --git a/cmake/FindWrapDoubleConversion.cmake b/cmake/FindWrapDoubleConversion.cmake
new file mode 100644
index 0000000000..9c804a3eec
--- /dev/null
+++ b/cmake/FindWrapDoubleConversion.cmake
@@ -0,0 +1,61 @@
+# We can't create the same interface imported target multiple times, CMake will complain if we do
+# that. This can happen if the find_package call is done in multiple different subdirectories.
+if(TARGET WrapDoubleConversion::WrapDoubleConversion)
+ set(WrapDoubleConversion_FOUND ON)
+ return()
+endif()
+
+add_library(WrapDoubleConversion::WrapDoubleConversion INTERFACE IMPORTED)
+
+find_package(double-conversion)
+if (double-conversion_FOUND)
+ include(FeatureSummary)
+ set_package_properties(double-conversion PROPERTIES TYPE REQUIRED)
+ target_link_libraries(WrapDoubleConversion::WrapDoubleConversion
+ INTERFACE double-conversion::double-conversion)
+ set(WrapDoubleConversion_FOUND 1)
+ return()
+endif()
+
+include(CheckCXXSourceCompiles)
+
+check_cxx_source_compiles("
+#include <stdio.h>
+#include <locale.h>
+
+int main(int argc, char *argv[]) {
+ _locale_t invalidLocale = NULL;
+ double a = 3.14;
+ const char *format = \"invalid format\";
+ _sscanf_l(argv[0], invalidLocale, format, &a, &argc);
+ _snprintf_l(argv[0], 1, invalidLocale, format, a);
+}" HAVE__SPRINTF_L)
+
+check_cxx_source_compiles("
+#include <stdio.h>
+#include <xlocale.h>
+
+int main(int argc, char *argv[]) {
+ locale_t invalidLocale = NULL;
+ double a = 3.14;
+ const char *format = \"invalid format\";
+ snprintf_l(argv[0], 1, invalidLocale, format, a);
+ sscanf_l(argv[0], invalidLocale, format, &a, &argc);
+ return 0;
+}" HAVE_SPRINTF_L)
+
+# In a static build, we need to find the package to bring the target into scope.
+find_package(QtDoubleConversion QUIET)
+
+if (HAVE__SPRINTF_L OR HAVE_SPRINTF_L)
+ target_compile_definitions(WrapDoubleConversion::WrapDoubleConversion
+ INTERFACE QT_NO_DOUBLECONVERSION)
+ set(WrapDoubleConversion_FOUND 1)
+elseif(TARGET QtDoubleConversion)
+ # If a Config package wasn't found, and the C++ library doesn't contain the necessary functions,
+ # use the library bundled with Qt.
+ target_link_libraries(WrapDoubleConversion::WrapDoubleConversion INTERFACE QtDoubleConversion)
+ set(WrapDoubleConversion_FOUND 1)
+else()
+ set(WrapDoubleConversion_FOUND 0)
+endif()
diff --git a/cmake/FindWrapFreetype.cmake b/cmake/FindWrapFreetype.cmake
new file mode 100644
index 0000000000..ec7d2a8d24
--- /dev/null
+++ b/cmake/FindWrapFreetype.cmake
@@ -0,0 +1,33 @@
+# We can't create the same interface imported target multiple times, CMake will complain if we do
+# that. This can happen if the find_package call is done in multiple different subdirectories.
+if(TARGET WrapFreetype::WrapFreetype)
+ set(WrapFreetype_FOUND ON)
+ return()
+endif()
+
+set(WrapFreetype_FOUND OFF)
+
+# Hunter has the package named freetype, but exports the Freetype::Freetype target as upstream
+# First try the CONFIG package, and afterwards the MODULE if not found
+
+find_package(Freetype CONFIG NAMES Freetype freetype QUIET)
+if(NOT Freetype_FOUND)
+ find_package(Freetype MODULE)
+endif()
+
+if(Freetype_FOUND)
+ # vcpkg defines a lower case target name, while upstream Find module defines a prefixed
+ # upper case name.
+ set(potential_target_names Freetype::Freetype freetype)
+ foreach(target_name ${potential_target_names})
+ if(TARGET ${target_name})
+ set(WrapFreetype_FOUND ON)
+ set(final_target_name ${target_name})
+
+ add_library(WrapFreetype::WrapFreetype INTERFACE IMPORTED)
+ target_link_libraries(WrapFreetype::WrapFreetype INTERFACE ${final_target_name})
+
+ break()
+ endif()
+ endforeach()
+endif()
diff --git a/cmake/FindWrapPCRE2.cmake b/cmake/FindWrapPCRE2.cmake
new file mode 100644
index 0000000000..b69c5078a5
--- /dev/null
+++ b/cmake/FindWrapPCRE2.cmake
@@ -0,0 +1,20 @@
+include_guard(GLOBAL) # pragma once equivalent
+
+find_package(PCRE2 CONFIG QUIET)
+
+if(PCRE2_FOUND AND TARGET PCRE2::pcre2-16)
+ # Hunter case.
+ add_library(WrapPCRE2::WrapPCRE2 INTERFACE IMPORTED)
+ target_link_libraries(WrapPCRE2::WrapPCRE2 INTERFACE PCRE2::pcre2-16)
+ set(WrapPCRE2_FOUND TRUE)
+else()
+ find_library(PCRE2_LIBRARIES NAMES pcre2-16)
+ find_path(PCRE2_INCLUDE_DIRS pcre2.h)
+
+ if (PCRE2_LIBRARIES AND PCRE2_INCLUDE_DIRS)
+ add_library(WrapPCRE2::WrapPCRE2 INTERFACE IMPORTED)
+ target_link_libraries(WrapPCRE2::WrapPCRE2 INTERFACE ${PCRE2_LIBRARIES})
+ target_include_directories(WrapPCRE2::WrapPCRE2 INTERFACE ${PCRE2_INCLUDE_DIRS})
+ set(WrapPCRE2_FOUND TRUE)
+ endif()
+endif()
diff --git a/cmake/FindWrapRt.cmake b/cmake/FindWrapRt.cmake
new file mode 100644
index 0000000000..d14b922062
--- /dev/null
+++ b/cmake/FindWrapRt.cmake
@@ -0,0 +1,34 @@
+# We can't create the same interface imported target multiple times, CMake will complain if we do
+# that. This can happen if the find_package call is done in multiple different subdirectories.
+if(TARGET WrapRt)
+ set(WrapRt_FOUND ON)
+ return()
+endif()
+
+include(CheckCXXSourceCompiles)
+include(CMakePushCheckState)
+
+find_library(LIBRT rt)
+
+cmake_push_check_state()
+if(LIBRT_FOUND)
+ list(APPEND CMAKE_REQUIRED_LIBRARIES "${LIBRT}")
+endif()
+
+check_cxx_source_compiles("
+#include <unistd.h>
+#include <time.h>
+
+int main(int argc, char *argv[]) {
+ timespec ts; clock_gettime(CLOCK_REALTIME, &ts);
+}" HAVE_GETTIME)
+
+cmake_pop_check_state()
+
+add_library(WrapRt INTERFACE IMPORTED)
+if (LIBRT_FOUND)
+ target_link_libraries(WrapRt INTERFACE "${LIBRT}")
+endif()
+
+set(WrapRt_FOUND "${HAVE_GETTIME}")
+
diff --git a/cmake/FindXKB_COMMON_X11.cmake b/cmake/FindXKB_COMMON_X11.cmake
new file mode 100644
index 0000000000..61b4ba82e7
--- /dev/null
+++ b/cmake/FindXKB_COMMON_X11.cmake
@@ -0,0 +1,7 @@
+include(FindPkgConfig)
+
+pkg_check_modules(XKB_COMMON_X11 "xkbcommon-x11>=0.4.1" IMPORTED_TARGET)
+
+if (NOT TARGET PkgConfig::XKB_COMMON_X11)
+ set(XKB_COMMON_X11_FOUND 0)
+endif()
diff --git a/cmake/FindXRender.cmake b/cmake/FindXRender.cmake
new file mode 100644
index 0000000000..246a47e18c
--- /dev/null
+++ b/cmake/FindXRender.cmake
@@ -0,0 +1,11 @@
+include(FindPkgConfig)
+
+if(NOT TARGET PkgConfig::XRender)
+ pkg_check_modules(XRender xrender IMPORTED_TARGET)
+
+ if (NOT TARGET PkgConfig::XRender)
+ set(XRender_FOUND 0)
+ endif()
+else()
+ set(XRender_FOUND 1)
+endif()
diff --git a/cmake/FindZSTD.cmake b/cmake/FindZSTD.cmake
new file mode 100644
index 0000000000..90d667dc29
--- /dev/null
+++ b/cmake/FindZSTD.cmake
@@ -0,0 +1,50 @@
+#.rst:
+# FindZstd
+# ---------
+#
+# Try to locate the Zstd library.
+# If found, this will define the following variables:
+#
+# ``ZSTD_FOUND``
+# True if the zstd library is available
+# ``ZSTD_INCLUDE_DIRS``
+# The zstd include directories
+# ``ZSTD_LIBRARIES``
+# The zstd libraries for linking
+#
+# If ``ZSTD_FOUND`` is TRUE, it will also define the following
+# imported target:
+#
+# ``ZSTD::ZSTD``
+# The zstd library
+
+find_package(PkgConfig)
+pkg_check_modules(PC_ZSTD QUIET libzstd)
+
+find_path(ZSTD_INCLUDE_DIRS
+ NAMES zstd.h
+ HINTS ${PC_ZSTD_INCLUDEDIR}
+ PATH_SUFFIXES zstd)
+
+find_library(ZSTD_LIBRARIES
+ NAMES zstd zstd_static
+ HINTS ${PC_ZSTD_LIBDIR}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(ZSTD DEFAULT_MSG ZSTD_LIBRARIES ZSTD_INCLUDE_DIRS)
+
+if(ZSTD_FOUND AND NOT TARGET ZSTD::ZSTD)
+ add_library(ZSTD::ZSTD UNKNOWN IMPORTED)
+ set_target_properties(ZSTD::ZSTD PROPERTIES
+ IMPORTED_LOCATION "${ZSTD_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${ZSTD_INCLUDE_DIRS}")
+endif()
+
+mark_as_advanced(ZSTD_INCLUDE_DIRS ZSTD_LIBRARIES)
+
+include(FeatureSummary)
+set_package_properties(ZSTD PROPERTIES
+ URL "https://github.com/facebook/zstd"
+ DESCRIPTION "ZSTD compression library")
+
diff --git a/cmake/Finddouble-conversion.cmake b/cmake/Finddouble-conversion.cmake
new file mode 100644
index 0000000000..43d2076289
--- /dev/null
+++ b/cmake/Finddouble-conversion.cmake
@@ -0,0 +1,32 @@
+# Fallback find module for double-conversion
+# if double-conversion is built with CMake it'll install a config module, which we prefer
+# if it's built with Scons (their default), we search ourselves
+
+find_package(double-conversion CONFIG)
+if (double-conversion_FOUND)
+ if(TARGET double-conversion::double-conversion)
+ return()
+ endif()
+endif()
+
+find_path(DOUBLE_CONVERSION_INCLUDE_DIR
+ NAMES
+ double-conversion.h
+ PATH_SUFFIXES
+ double-conversion
+)
+find_library(DOUBLE_CONVERSION_LIBRARY NAMES double-conversion)
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+ double-conversion DEFAULT_MSG
+ DOUBLE_CONVERSION_LIBRARY DOUBLE_CONVERSION_INCLUDE_DIR)
+
+if(double-conversion_FOUND AND NOT TARGET double-conversion::double-conversion)
+ add_library(double-conversion::double-conversion UNKNOWN IMPORTED)
+ set_target_properties(double-conversion::double-conversion PROPERTIES
+ IMPORTED_LOCATION "${DOUBLE_CONVERSION_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${DOUBLE_CONVERSION_INCLUDE_DIR}")
+endif()
+
+mark_as_advanced(DOUBLE_CONVERSION_INCLUDE_DIR DOUBLE_CONVERSION_LIBRARY)
diff --git a/cmake/QtAutoDetect.cmake b/cmake/QtAutoDetect.cmake
new file mode 100644
index 0000000000..a1e66ffcbe
--- /dev/null
+++ b/cmake/QtAutoDetect.cmake
@@ -0,0 +1,57 @@
+#
+# Collection of auto dection routines to improve the user eperience when
+# building Qt from source.
+#
+
+function(qt_auto_detect_android)
+ if(DEFINED CMAKE_TOOLCHAIN_FILE AND NOT DEFINED QT_AUTODETECT_ANDROID)
+
+ file(READ ${CMAKE_TOOLCHAIN_FILE} toolchain_file_content OFFSET 0 LIMIT 80)
+ string(FIND ${toolchain_file_content} "The Android Open Source Project" find_result REVERSE)
+ if (NOT ${find_result} EQUAL -1)
+ set(android_detected TRUE)
+ else()
+ set(android_detected FALSE)
+ endif()
+
+ if(android_detected)
+ message(STATUS "Android toolchain file detected, checking configuration defaults...")
+ if(NOT DEFINED ANDROID_NATIVE_API_LEVEL)
+ message(STATUS "ANDROID_NATIVE_API_LEVEL was not specified, using API level 21 as default")
+ set(ANDROID_NATIVE_API_LEVEL 21 CACHE STRING "")
+ endif()
+ if(NOT DEFINED ANDROID_STL)
+ set(ANDROID_STL "c++_shared" CACHE STRING "")
+ endif()
+ endif()
+ set(QT_AUTODETECT_ANDROID ${android_detected} CACHE STRING "")
+ elseif (QT_AUTODETECT_ANDROID)
+ message(STATUS "Android toolchain file detected")
+ endif()
+endfunction()
+
+function(qt_auto_detect_vpckg)
+ if(DEFINED ENV{VCPKG_ROOT})
+ set(vcpkg_toolchain_file "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")
+ get_filename_component(vcpkg_toolchain_file "${vcpkg_toolchain_file}" ABSOLUTE)
+
+ if(DEFINED CMAKE_TOOLCHAIN_FILE)
+ get_filename_component(supplied_toolchain_file "${CMAKE_TOOLCHAIN_FILE}" ABSOLUTE)
+ if(NOT supplied_toolchain_file STREQUAL vcpkg_toolchain_file)
+ set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE}" CACHE STRING "")
+ endif()
+ unset(supplied_toolchain_file)
+ endif()
+ set(CMAKE_TOOLCHAIN_FILE "${vcpkg_toolchain_file}" CACHE STRING "" FORCE)
+ message(STATUS "Using vcpkg from $ENV{VCPKG_ROOT}")
+ if(DEFINED ENV{VCPKG_DEFAULT_TRIPLET} AND NOT DEFINED VCPKG_TARGET_TRIPLET)
+ set(VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET}" CACHE STRING "")
+ message(STATUS "Using vcpkg triplet ${VCPKG_TARGET_TRIPLET}")
+ endif()
+ unset(vcpkg_toolchain_file)
+ endif()
+endfunction()
+
+
+qt_auto_detect_android()
+qt_auto_detect_vpckg()
diff --git a/cmake/QtBaseCMakeTesting.cmake b/cmake/QtBaseCMakeTesting.cmake
new file mode 100644
index 0000000000..662ac8f498
--- /dev/null
+++ b/cmake/QtBaseCMakeTesting.cmake
@@ -0,0 +1,9 @@
+## Test the cmake build system:
+option(BUILD_CMAKE_TESTING "Build tests for the Qt build system" OFF)
+mark_as_advanced(BUILD_CMAKE_TESTING)
+
+if(BUILD_CMAKE_TESTING)
+ add_subdirectory("${PROJECT_SOURCE_DIR}/cmake/tests")
+endif()
+
+
diff --git a/cmake/QtBaseConfigureTests.cmake b/cmake/QtBaseConfigureTests.cmake
new file mode 100644
index 0000000000..34e4e6e6f1
--- /dev/null
+++ b/cmake/QtBaseConfigureTests.cmake
@@ -0,0 +1,165 @@
+include(CheckCXXSourceCompiles)
+function(run_config_test_architecture)
+ set(qt_base_configure_tests_vars_to_export)
+ # Test architecture
+ set(_arch_file "${CMAKE_CURRENT_BINARY_DIR}/architecture_test")
+ set(saved_executable_suffix "${CMAKE_EXECUTABLE_SUFFIX}")
+
+ # With emscripten the application entry point is a .js file (to be run with node for example), but the
+ # real "data" is in the .wasm file, so that's where we need to look for the ABI, etc. information.
+ if (EMSCRIPTEN)
+ set(CMAKE_EXECUTABLE_SUFFIX ".wasm")
+ endif()
+
+ try_compile(_arch_result "${CMAKE_CURRENT_BINARY_DIR}"
+ "${CMAKE_CURRENT_SOURCE_DIR}/config.tests/arch/arch.cpp"
+ COPY_FILE "${_arch_file}")
+
+ set(CMAKE_EXECUTABLE_SUFFIX "${saved_executable_suffix}")
+
+ if (NOT _arch_result)
+ message(FATAL_ERROR "Failed to compile architecture detection file.")
+ endif()
+
+ file(STRINGS "${_arch_file}" _arch_lines LENGTH_MINIMUM 16 LENGTH_MAXIMUM 1024 ENCODING UTF-8)
+
+ foreach (_line ${_arch_lines})
+ string(LENGTH "${_line}" lineLength)
+ string(FIND "${_line}" "==Qt=magic=Qt== Architecture:" _pos)
+ if (_pos GREATER -1)
+ math(EXPR _pos "${_pos}+29")
+ string(SUBSTRING "${_line}" ${_pos} -1 _architecture)
+ endif()
+ string(FIND "${_line}" "==Qt=magic=Qt== Sub-architecture:" _pos)
+ if (_pos GREATER -1 AND ${lineLength} GREATER 33)
+ math(EXPR _pos "${_pos}+34")
+ string(SUBSTRING "${_line}" ${_pos} -1 _sub_architecture)
+ string(REPLACE " " ";" _sub_architecture "${_sub_architecture}")
+ endif()
+ string(FIND "${_line}" "==Qt=magic=Qt== Build-ABI:" _pos)
+ if (_pos GREATER -1)
+ math(EXPR _pos "${_pos}+26")
+ string(SUBSTRING "${_line}" ${_pos} -1 _build_abi)
+ endif()
+ endforeach()
+
+ if (NOT _architecture OR NOT _build_abi)
+ message(FATAL_ERROR "Failed to extract architecture data from file.")
+ endif()
+
+ set(TEST_architecture 1 CACHE INTERNAL "Ran the architecture test")
+ set(TEST_architecture_arch "${_architecture}" CACHE INTERNAL "Target machine architecture")
+ list(APPEND qt_base_configure_tests_vars_to_export TEST_architecture_arch)
+ set(TEST_subarch 1 CACHE INTERNAL "Ran machine subArchitecture test")
+ foreach(it ${_sub_architecture})
+ # Equivalent to qmake's QT_CPU_FEATURES.$arch.
+ set(TEST_arch_${TEST_architecture_arch}_subarch_${it} 1 CACHE INTERNAL "Target sub architecture result")
+ list(APPEND qt_base_configure_tests_vars_to_export TEST_arch_${TEST_architecture_arch}_subarch_${it})
+ endforeach()
+ set(TEST_buildAbi "${_build_abi}" CACHE INTERNAL "Target machine buildAbi")
+ list(APPEND qt_base_configure_tests_vars_to_export TEST_buildAbi)
+ set(qt_base_configure_tests_vars_to_export ${qt_base_configure_tests_vars_to_export} CACHE INTERNAL "Test variables that should be exported")
+endfunction()
+
+
+function(run_config_test_posix_iconv)
+ set(source "#include <iconv.h>
+
+int main(int, char **)
+{
+ iconv_t x = iconv_open(\"\", \"\");
+
+ char *inp;
+ char *outp;
+ size_t inbytes, outbytes;
+ iconv(x, &inp, &inbytes, &outp, &outbytes);
+
+ iconv_close(x);
+
+ return 0;
+}")
+ check_cxx_source_compiles("${source}" HAVE_POSIX_ICONV)
+
+ if(NOT HAVE_POSIX_ICONV)
+ set(_req_libraries "${CMAKE_REQUIRE_LIBRARIES}")
+ set(CMAKE_REQUIRE_LIBRARIES "iconv")
+ check_cxx_source_compiles("${source}" HAVE_POSIX_ICONV)
+ set(CMAKE_REQUIRE_LIBRARIES "${_req_libraries}")
+ if(HAVE_POSIX_ICONV)
+ set(TEST_iconv_needlib 1 CACHE INTERNAL "Need to link against libiconv")
+ endif()
+ endif()
+
+ set(TEST_posix_iconv "${HAVE_POSIX_ICONV}" CACHE INTERNAL "POSIX iconv")
+endfunction()
+
+
+function(run_config_test_sun_iconv)
+ set(source "#include <iconv.h>
+
+int main(int, char **)
+{
+ iconv_t x = iconv_open(\"\", \"\");
+
+ const char *inp;
+ char *outp;
+ size_t inbytes, outbytes;
+ iconv(x, &inp, &inbytes, &outp, &outbytes);
+
+ iconv_close(x);
+
+ return 0;
+}")
+ if(DARWIN)
+ # as per !config.darwin in configure.json
+ set(HAVE_SUN_ICONV OFF)
+ else()
+ check_cxx_source_compiles("${source}" HAVE_SUN_ICONV)
+ endif()
+
+ set(TEST_sun_iconv "${HAVE_SUN_ICONV}" CACHE INTERNAL "SUN libiconv")
+endfunction()
+
+function(run_linker_version_script_support)
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/version_flag.map" "VERS_1 { global: sym; };
+VERS_2 { global: sym; }
+VERS_1;
+")
+ if(DEFINED CMAKE_REQUIRED_FLAGS)
+ set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS})
+ else()
+ set(CMAKE_REQUIRED_FLAGS "")
+ endif()
+ set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "-Wl,--version-script=\"${CMAKE_CURRENT_BINARY_DIR}/version_flag.map\"")
+ check_cxx_source_compiles("int main(void){return 0;}" HAVE_LD_VERSION_SCRIPT)
+ if(DEFINED CMAKE_REQUIRED_FLAGS_SAVE)
+ set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE})
+ endif()
+ file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
+
+ # For some reason the linker command line written by the XCode generator, which is
+ # subsequently executed by xcodebuild, ignores the linker flag, and thus the test
+ # seemingly succeeds. Explicitly disable the version script test on darwin platforms.
+ if(APPLE)
+ set(HAVE_LD_VERSION_SCRIPT OFF)
+ endif()
+
+ set(TEST_ld_version_script "${HAVE_LD_VERSION_SCRIPT}" CACHE INTERNAL "linker version script support")
+endfunction()
+
+function(run_config_tests)
+ run_config_test_posix_iconv()
+
+ add_library(Iconv INTERFACE)
+ if(TEST_iconv_needlib)
+ target_link_libraries(Iconv PUBLIC iconv)
+ endif()
+
+ if(NOT TEST_posix_iconv)
+ run_config_test_sun_iconv()
+ endif()
+ run_config_test_architecture()
+ run_linker_version_script_support()
+endfunction()
+
+run_config_tests()
diff --git a/cmake/QtBaseGlobalTargets.cmake b/cmake/QtBaseGlobalTargets.cmake
new file mode 100644
index 0000000000..df3ceb88c0
--- /dev/null
+++ b/cmake/QtBaseGlobalTargets.cmake
@@ -0,0 +1,241 @@
+## QtPlatform Target:
+add_library(Platform INTERFACE)
+add_library(Qt::Platform ALIAS Platform)
+target_include_directories(Platform
+ INTERFACE
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/${QT_PLATFORM_DEFINITION_DIR}>
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
+ $<INSTALL_INTERFACE:${INSTALL_DATADIR}/${QT_PLATFORM_DEFINITION_DIR}>
+ $<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}>
+ )
+target_compile_definitions(Platform INTERFACE ${QT_PLATFORM_DEFINITIONS})
+
+# When building on android we need to link against the logging library
+# in order to satisfy linker dependencies. Both of these libraries are part of
+# the NDK.
+if (ANDROID)
+ target_link_libraries(Platform INTERFACE log)
+endif()
+
+set(__GlobalConfig_path_suffix "${INSTALL_CMAKE_NAMESPACE}")
+qt_path_join(__GlobalConfig_build_dir ${QT_CONFIG_BUILD_DIR} ${__GlobalConfig_path_suffix})
+qt_path_join(__GlobalConfig_install_dir ${QT_CONFIG_INSTALL_DIR} ${__GlobalConfig_path_suffix})
+set(__GlobalConfig_install_dir_absolute "${__GlobalConfig_install_dir}")
+if(QT_WILL_INSTALL)
+ # Need to prepend the install prefix when doing prefix builds, because the config install dir
+ # is relative then.
+ qt_path_join(__GlobalConfig_install_dir_absolute
+ ${CMAKE_INSTALL_PREFIX} ${__GlobalConfig_install_dir_absolute})
+endif()
+
+# Generate and install Qt6 config file.
+configure_package_config_file(
+ "${PROJECT_SOURCE_DIR}/cmake/QtConfig.cmake.in"
+ "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}Config.cmake"
+ INSTALL_DESTINATION "${__GlobalConfig_install_dir}"
+)
+
+write_basic_package_version_file(
+ ${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigVersion.cmake
+ VERSION ${PROJECT_VERSION}
+ COMPATIBILITY AnyNewerVersion
+)
+
+# Generate and install Qt6Tools config file.
+configure_package_config_file(
+ "${PROJECT_SOURCE_DIR}/cmake/QtToolsConfig.cmake.in"
+ "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ToolsConfig.cmake"
+ INSTALL_DESTINATION "${__GlobalConfig_install_dir}"
+)
+write_basic_package_version_file(
+ ${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ToolsConfigVersion.cmake
+ VERSION ${PROJECT_VERSION}
+ COMPATIBILITY AnyNewerVersion
+)
+
+qt_install(FILES
+ "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}Config.cmake"
+ "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigVersion.cmake"
+ DESTINATION "${__GlobalConfig_install_dir}"
+ COMPONENT Devel
+)
+
+qt_install(FILES
+ "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ToolsConfig.cmake"
+ "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ToolsConfigVersion.cmake"
+ DESTINATION "${__GlobalConfig_install_dir}Tools"
+ COMPONENT Devel
+)
+
+# Generate toolchain file for convenience
+if(QT_HOST_PATH)
+ get_filename_component(init_qt_host_path "${QT_HOST_PATH}" ABSOLUTE)
+ set(init_qt_host_path "set(QT_HOST_PATH \"${init_qt_host_path}\" CACHE PATH \"\" FORCE)")
+endif()
+
+if(CMAKE_TOOLCHAIN_FILE)
+ set(init_original_toolchain_file "set(qt_chainload_toolchain_file \"${CMAKE_TOOLCHAIN_FILE}\")")
+endif()
+
+if(VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
+ list(APPEND init_vcpkg "set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE \"${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}\")")
+endif()
+
+if(VCPKG_TARGET_TRIPLET)
+ list(APPEND init_vcpkg "set(VCPKG_TARGET_TRIPLET \"${VCPKG_TARGET_TRIPLET}\" CACHE STRING \"\")")
+endif()
+
+# On Windows compilers aren't easily mixed. Avoid that qtbase is built using cl.exe for example and then for another
+# build gcc is picked up from %PATH%. The same goes when using a custom compiler on other platforms, such as ICC.
+list(APPEND init_platform "set(CMAKE_CXX_COMPILER \"${CMAKE_CXX_COMPILER}\" CACHE STRING \"\")")
+list(APPEND init_platform "set(CMAKE_C_COMPILER \"${CMAKE_C_COMPILER}\" CACHE STRING \"\")")
+
+if(APPLE)
+ if(CMAKE_OSX_SYSROOT)
+ list(APPEND init_platform "set(CMAKE_OSX_SYSROOT \"${CMAKE_OSX_SYSROOT}\" CACHE PATH \"\")")
+ endif()
+ if(CMAKE_OSX_DEPLOYMENT_TARGET)
+ list(APPEND init_platform "set(CMAKE_OSX_DEPLOYMENT_TARGET \"${CMAKE_OSX_DEPLOYMENT_TARGET}\" CACHE STRING \"\")")
+ endif()
+elseif(ANDROID)
+ list(APPEND init_platform "set(ANDROID_NATIVE_API_LEVEL \"${ANDROID_NATIVE_API_LEVEL}\" CACHE STRING \"\")")
+ list(APPEND init_platform "set(ANDROID_STL \"${ANDROID_STL}\" CACHE STRING \"\")")
+ list(APPEND init_platform "set(ANDROID_ABI \"${ANDROID_ABI}\" CACHE STRING \"\")")
+ list(APPEND init_platform "if (NOT DEFINED ANDROID_SDK_ROOT)")
+ list(APPEND init_platform " set(ANDROID_SDK_ROOT \"${ANDROID_SDK_ROOT}\" CACHE STRING \"\")")
+ list(APPEND init_platform "endif()")
+endif()
+
+string(REPLACE ";" "\n" init_vcpkg "${init_vcpkg}")
+string(REPLACE ";" "\n" init_platform "${init_platform}")
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/qt.toolchain.cmake.in" "${__GlobalConfig_build_dir}/qt.toolchain.cmake" @ONLY)
+qt_install(FILES "${__GlobalConfig_build_dir}/qt.toolchain.cmake" DESTINATION "${__GlobalConfig_install_dir}" COMPONENT Devel)
+
+# Also provide a convenience cmake wrapper
+if(UNIX)
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bin/qt-cmake.in" "${QT_BUILD_DIR}/${INSTALL_BINDIR}/qt-cmake" @ONLY)
+ qt_install(PROGRAMS "${QT_BUILD_DIR}/bin/qt-cmake" DESTINATION "${INSTALL_BINDIR}")
+else()
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bin/qt-cmake.bat.in" "${QT_BUILD_DIR}/${INSTALL_BINDIR}/qt-cmake.bat" @ONLY)
+ qt_install(PROGRAMS "${QT_BUILD_DIR}/bin/qt-cmake.bat" DESTINATION "${INSTALL_BINDIR}")
+endif()
+
+## Library to hold global features:
+## These features are stored and accessed via Qt::GlobalConfig, but the
+## files always lived in Qt::Core, so we keep it that way
+add_library(GlobalConfig INTERFACE)
+target_include_directories(GlobalConfig INTERFACE
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include/QtCore>
+ $<INSTALL_INTERFACE:include>
+ $<INSTALL_INTERFACE:include/QtCore>
+)
+qt_feature_module_begin(NO_MODULE
+ PUBLIC_FILE src/corelib/global/qconfig.h
+ PRIVATE_FILE src/corelib/global/qconfig_p.h
+)
+include("${CMAKE_CURRENT_SOURCE_DIR}/configure.cmake")
+qt_feature_module_end(GlobalConfig OUT_VAR_PREFIX "__GlobalConfig_")
+
+qt_generate_global_config_pri_file()
+
+add_library(Qt::GlobalConfig ALIAS GlobalConfig)
+
+add_library(GlobalConfigPrivate INTERFACE)
+target_link_libraries(GlobalConfigPrivate INTERFACE GlobalConfig)
+target_include_directories(GlobalConfigPrivate INTERFACE
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include/QtCore/${PROJECT_VERSION}>
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include/QtCore/${PROJECT_VERSION}/QtCore>
+ $<INSTALL_INTERFACE:include/QtCore/${PROJECT_VERSION}>
+ $<INSTALL_INTERFACE:include/QtCore/${PROJECT_VERSION}/QtCore>
+)
+add_library(Qt::GlobalConfigPrivate ALIAS GlobalConfigPrivate)
+
+# defines PlatformCommonInternal PlatformModuleInternal PlatformPluginInternal PlatformToolInternal
+include(QtInternalTargets)
+
+set(__export_targets Platform
+ GlobalConfig
+ GlobalConfigPrivate
+ PlatformCommonInternal
+ PlatformModuleInternal
+ PlatformPluginInternal
+ PlatformToolInternal)
+set(__export_name "${INSTALL_CMAKE_NAMESPACE}Targets")
+qt_install(TARGETS ${__export_targets} EXPORT "${__export_name}")
+qt_install(EXPORT ${__export_name}
+ NAMESPACE ${QT_CMAKE_EXPORT_NAMESPACE}::
+ DESTINATION "${__GlobalConfig_install_dir}")
+
+qt_internal_export_modern_cmake_config_targets_file(TARGETS ${__export_targets}
+ EXPORT_NAME_PREFIX ${INSTALL_CMAKE_NAMESPACE}
+ CONFIG_INSTALL_DIR
+ ${__GlobalConfig_install_dir})
+
+## Install some QtBase specific CMake files:
+qt_copy_or_install(FILES
+ cmake/QtBuild.cmake
+ cmake/QtCompilerFlags.cmake
+ cmake/QtCompilerOptimization.cmake
+ cmake/QtFeature.cmake
+ cmake/QtPlatformSupport.cmake
+ cmake/QtPlatformAndroid.cmake
+ cmake/QtPostProcess.cmake
+ cmake/QtSetup.cmake
+ cmake/QtModuleConfig.cmake.in
+ cmake/QtModuleDependencies.cmake.in
+ cmake/QtModuleToolsDependencies.cmake.in
+ cmake/QtModuleToolsConfig.cmake.in
+ cmake/QtPlugins.cmake.in
+ cmake/QtPluginConfig.cmake.in
+ cmake/QtPluginDependencies.cmake.in
+ DESTINATION "${__GlobalConfig_install_dir}"
+)
+if(QT_WILL_INSTALL)
+ # NOTE: QtFeature.cmake is included by the Qt module config files unconditionally
+ # In a prefix build, QtFeature.cmake is not copied to the build dir by default
+ # Thus do it explicitly in that case so we can use the module config files in the examples
+ file(COPY cmake/QtFeature.cmake DESTINATION "${__GlobalConfig_install_dir}")
+endif()
+
+
+# TODO: Check whether this is the right place to install these
+qt_copy_or_install(DIRECTORY cmake/3rdparty DESTINATION "${__GlobalConfig_install_dir}")
+
+# Install our custom Find modules, which will be used by the find_dependency() calls
+# inside the generated ModuleDependencies cmake files.
+qt_copy_or_install(DIRECTORY cmake/
+ DESTINATION "${__GlobalConfig_install_dir}"
+ FILES_MATCHING PATTERN "Find*.cmake"
+ PATTERN "tests" EXCLUDE
+ PATTERN "3rdparty" EXCLUDE
+)
+
+# Configure and install the QtBuildInternals package.
+set(__build_internals_path_suffix "${INSTALL_CMAKE_NAMESPACE}BuildInternals")
+qt_path_join(__build_internals_build_dir ${QT_CONFIG_BUILD_DIR} ${__build_internals_path_suffix})
+qt_path_join(__build_internals_install_dir ${QT_CONFIG_INSTALL_DIR}
+ ${__build_internals_path_suffix})
+configure_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake"
+ "${__build_internals_build_dir}/${INSTALL_CMAKE_NAMESPACE}BuildInternalsConfig.cmake"
+ @ONLY
+ )
+
+qt_install(FILES
+ "${__build_internals_build_dir}/${INSTALL_CMAKE_NAMESPACE}BuildInternalsConfig.cmake"
+ "${__build_internals_build_dir}/QtBuildInternalsExtra.cmake"
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtBuildInternals/QtBuildInternalsAndroid.cmake"
+ DESTINATION "${__build_internals_install_dir}"
+ COMPONENT Devel
+)
+
+# Generate the new resource API
+set(QT_CORE_RESOURCE_GENERATED_FILE_NAME "${INSTALL_CMAKE_NAMESPACE}CoreResource.cmake" CACHE INTERNAL "")
+set(QT_CORE_RESOURCE_GENERATED_FILE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${QT_CORE_RESOURCE_GENERATED_FILE_NAME}" CACHE INTERNAL "")
+configure_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtResource.cmake.in"
+ "${QT_CORE_RESOURCE_GENERATED_FILE_PATH}"
+ @ONLY
+)
+include(${QT_CORE_RESOURCE_GENERATED_FILE_PATH})
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
new file mode 100644
index 0000000000..14ca81bfc7
--- /dev/null
+++ b/cmake/QtBuild.cmake
@@ -0,0 +1,3267 @@
+include(CMakePackageConfigHelpers)
+
+# Install locations:
+set(INSTALL_BINDIR "bin" CACHE PATH "Executables [PREFIX/bin]")
+set(INSTALL_INCLUDEDIR "include" CACHE PATH "Header files [PREFIX/include]")
+set(INSTALL_LIBDIR "lib" CACHE PATH "Libraries [PREFIX/lib]")
+set(INSTALL_ARCHDATADIR "." CACHE PATH "Arch-dependent data [PREFIX]")
+set(INSTALL_PLUGINSDIR "${INSTALL_ARCHDATADIR}/plugins" CACHE PATH
+ "Plugins [ARCHDATADIR/plugins]")
+
+set(INSTALL_TARGETS_DEFAULT_ARGS
+ RUNTIME DESTINATION "${INSTALL_BINDIR}"
+ LIBRARY DESTINATION "${INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${INSTALL_LIBDIR}" COMPONENT Devel
+ INCLUDES DESTINATION "${INSTALL_INCLUDEDIR}"
+)
+
+if (WIN32)
+ set(_default_libexec "${INSTALL_ARCHDATADIR}/bin")
+else()
+ set(_default_libexec "${INSTALL_ARCHDATADIR}/libexec")
+endif()
+
+set(INSTALL_LIBEXECDIR "${_default_libexec}" CACHE PATH
+ "Helper programs [ARCHDATADIR/bin on Windows, ARCHDATADIR/libexec otherwise]")
+set(INSTALL_IMPORTDIR "${INSTALL_ARCHDATADIR}/imports" CACHE PATH
+ "QML1 imports [ARCHDATADIR/imports]")
+set(INSTALL_QMLDIR "${INSTALL_ARCHDATADIR}/qml" CACHE PATH
+ "QML2 imports [ARCHDATADIR/qml]")
+set(INSTALL_DATADIR "." CACHE PATH "Arch-independent data [PREFIX]")
+set(INSTALL_DOCDIR "${INSTALL_DATADIR}/doc" CACHE PATH "Documentation [DATADIR/doc]")
+set(INSTALL_TRANSLATIONSDIR "${INSTALL_DATADIR}/translations" CACHE PATH
+ "Translations [DATADIR/translations]")
+set(INSTALL_SYSCONFDIR "etc/xdg" CACHE PATH
+ "Settings used by Qt programs [PREFIX/etc/xdg]")
+set(INSTALL_EXAMPLESDIR "examples" CACHE PATH "Examples [PREFIX/examples]")
+set(INSTALL_TESTSDIR "tests" CACHE PATH "Tests [PREFIX/tests]")
+
+# The variables might have already been set in QtBuildInternalsExtra.cmake if the file is included
+# while building a new module and not QtBase. In that case, stop overriding the value.
+if(NOT INSTALL_CMAKE_NAMESPACE)
+ set(INSTALL_CMAKE_NAMESPACE "Qt${PROJECT_VERSION_MAJOR}"
+ CACHE STRING "CMake namespace [Qt${PROJECT_VERSION_MAJOR}]")
+endif()
+if(NOT QT_CMAKE_EXPORT_NAMESPACE)
+ set(QT_CMAKE_EXPORT_NAMESPACE "Qt${PROJECT_VERSION_MAJOR}"
+ CACHE STRING "CMake namespace used when exporting targets [Qt${PROJECT_VERSION_MAJOR}]")
+endif()
+
+set(QT_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}")
+
+# the default RPATH to be used when installing, but only if it's not a system directory
+LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
+IF("${isSystemDir}" STREQUAL "-1")
+ SET(_default_install_rpath "${CMAKE_INSTALL_PREFIX}/lib")
+ENDIF("${isSystemDir}" STREQUAL "-1")
+
+# Default rpath settings: Use rpath for build tree as well as a full path for the installed binaries.
+# For origin builds, one needs to override CMAKE_INSTALL_RPATH for example with $ORIGIN/../lib
+SET(CMAKE_INSTALL_RPATH "${_default_install_rpath}" CACHE PATH "RPATH for installed binaries")
+
+# add the automatically determined parts of the RPATH
+# which point to directories outside the build tree to the install RPATH
+SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+function(qt_setup_tool_path_command)
+ if(NOT WIN32)
+ return()
+ endif()
+ set(bindir "${CMAKE_INSTALL_PREFIX}/${INSTALL_BINDIR}")
+ file(TO_NATIVE_PATH "${bindir}" bindir)
+ list(APPEND command COMMAND)
+ list(APPEND command set PATH=${bindir}$<SEMICOLON>%PATH%)
+ set(QT_TOOL_PATH_SETUP_COMMAND "${command}" CACHE INTERNAL "internal command prefix for tool invocations" FORCE)
+endfunction()
+qt_setup_tool_path_command()
+
+# Platform define path, etc.
+set(QT_QMAKE_TARGET_MKSPEC "")
+if(WIN32)
+ set(QT_DEFAULT_PLATFORM_DEFINITIONS UNICODE _UNICODE WIN32 _ENABLE_EXTENDED_ALIGNED_STORAGE)
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ list(APPEND QT_DEFAULT_PLATFORM_DEFINITIONS WIN64 _WIN64)
+ endif()
+ if(MSVC)
+ set(QT_QMAKE_TARGET_MKSPEC win32-msvc)
+ elseif(CLANG)
+ set(QT_QMAKE_TARGET_MKSPEC win32-clang)
+ elseif(MINGW)
+ set(QT_QMAKE_TARGET_MKSPEC win32-g++)
+ list(APPEND QT_DEFAULT_PLATFORM_DEFINITIONS _WIN32_WINNT=0x0601)
+ endif()
+elseif(LINUX)
+ if(GCC)
+ set(QT_QMAKE_TARGET_MKSPEC linux-g++)
+ elseif(CLANG)
+ set(QT_QMAKE_TARGET_MKSPEC linux-clang)
+ elseif(ICC)
+ set(QT_QMAKE_TARGET_MKSPEC linux-icc-64)
+ endif()
+elseif(ANDROID)
+ if(GCC)
+ set(QT_QMAKE_TARGET_MKSPEC android-g++)
+ elseif(CLANG)
+ set(QT_QMAKE_TARGET_MKSPEC android-clang)
+ endif()
+elseif(APPLE)
+ set(QT_QMAKE_TARGET_MKSPEC macx-clang)
+elseif(EMSCRIPTEN)
+ set(QT_QMAKE_TARGET_MKSPEC wasm-emscripten)
+endif()
+
+# TODO: Fixme to be correct.
+set(QT_QMAKE_HOST_MKSPEC "${QT_QMAKE_TARGET_MKSPEC}")
+
+if(QT_QMAKE_TARGET_MKSPEC)
+ set(QT_DEFAULT_PLATFORM_DEFINITION_DIR mkspecs/${QT_QMAKE_TARGET_MKSPEC})
+endif()
+
+if(NOT DEFINED QT_DEFAULT_PLATFORM_DEFINITIONS)
+ set(QT_DEFAULT_PLATFORM_DEFINITIONS "")
+endif()
+
+set(QT_PLATFORM_DEFINITIONS ${QT_DEFAULT_PLATFORM_DEFINITIONS}
+ CACHE STRING "Qt platform specific pre-processor defines")
+set(QT_PLATFORM_DEFINITION_DIR ${QT_DEFAULT_PLATFORM_DEFINITION_DIR}
+ CACHE PATH "Path to directory that contains qplatformdefs.h")
+set(QT_NAMESPACE "" CACHE STRING "Qt Namespace")
+if(QT_NAMESPACE STREQUAL "")
+ set(QT_HAS_NAMESPACE OFF)
+else()
+ set(QT_HAS_NAMESPACE ON)
+endif()
+
+
+function(qt_internal_clear_qt_repo_known_modules)
+ set(QT_REPO_KNOWN_MODULES "" CACHE INTERNAL "Known current repo Qt modules" FORCE)
+endfunction()
+
+function(qt_internal_add_qt_repo_known_module)
+ set(QT_REPO_KNOWN_MODULES ${QT_REPO_KNOWN_MODULES} ${ARGN}
+ CACHE INTERNAL "Known current repo Qt modules" FORCE)
+endfunction()
+
+function(qt_internal_get_qt_repo_known_modules out_var)
+ set("${out_var}" "${QT_REPO_KNOWN_MODULES}" PARENT_SCOPE)
+endfunction()
+
+# Gets the list of all known Qt modules both found and that were built as part of the
+# current project.
+function(qt_internal_get_qt_all_known_modules out_var)
+ qt_internal_get_qt_repo_known_modules(repo_known_modules)
+ set(known_modules ${QT_ALL_MODULES_FOUND_VIA_FIND_PACKAGE} ${repo_known_modules})
+ list(REMOVE_DUPLICATES known_modules)
+ set("${out_var}" "${known_modules}" PARENT_SCOPE)
+endfunction()
+
+macro(qt_internal_set_qt_known_plugins)
+ set(QT_KNOWN_PLUGINS ${ARGN} CACHE INTERNAL "Known Qt plugins" FORCE)
+endmacro()
+
+### Global plug-in types handling ###
+# QT_REPO_KNOWN_PLUGIN_TYPES and QT_ALL_PLUGIN_TYPES_FOUND_VIA_FIND_PACKAGE
+# hold a list of plug-in types (e.G. "imageformats;bearer")
+function(qt_internal_clear_qt_repo_known_plugin_types)
+ set(QT_REPO_KNOWN_PLUGIN_TYPES "" CACHE INTERNAL "Known current repo Qt plug-in types" FORCE)
+endfunction()
+
+function(qt_internal_add_qt_repo_known_plugin_types)
+ set(QT_REPO_KNOWN_PLUGIN_TYPES ${QT_REPO_KNOWN_PLUGIN_TYPES} ${ARGN}
+ CACHE INTERNAL "Known current repo Qt plug-in types" FORCE)
+endfunction()
+
+function(qt_internal_get_qt_repo_known_plugin_types out_var)
+ set("${out_var}" "${QT_REPO_KNOWN_PLUGIN_TYPES}" PARENT_SCOPE)
+endfunction()
+
+function(qt_internal_get_qt_all_known_plugin_types out_var)
+ qt_internal_get_qt_repo_known_plugin_types(repo_known_plugin_types)
+ set(known ${QT_ALL_PLUGIN_TYPES_FOUND_VIA_FIND_PACKAGE} ${repo_known_plugin_types})
+ list(REMOVE_DUPLICATES known)
+ set("${out_var}" "${known}" PARENT_SCOPE)
+endfunction()
+
+# Reset:
+qt_internal_clear_qt_repo_known_modules()
+qt_internal_clear_qt_repo_known_plugin_types()
+qt_internal_set_qt_known_plugins("")
+
+set(QT_KNOWN_MODULES_WITH_TOOLS "" CACHE INTERNAL "Known Qt modules with tools" FORCE)
+macro(qt_internal_append_known_modules_with_tools module)
+ if(NOT ${module} IN_LIST QT_KNOWN_MODULES_WITH_TOOLS)
+ set(QT_KNOWN_MODULES_WITH_TOOLS "${QT_KNOWN_MODULES_WITH_TOOLS};${module}"
+ CACHE INTERNAL "Known Qt modules with tools" FORCE)
+ endif()
+endmacro()
+
+macro(qt_internal_append_known_module_tool module tool)
+ if(NOT ${tool} IN_LIST QT_KNOWN_MODULE_${module}_TOOLS)
+ list(APPEND QT_KNOWN_MODULE_${module}_TOOLS "${tool}")
+ set(QT_KNOWN_MODULE_${module}_TOOLS "${QT_KNOWN_MODULE_${module}_TOOLS}"
+ CACHE INTERNAL "Known Qt module ${module} tools" FORCE)
+ endif()
+endmacro()
+
+# Reset syncqt cache variable, to make sure it gets recomputed on reconfiguration, otherwise
+# it might not get installed.
+unset(QT_SYNCQT CACHE)
+
+# For adjusting variables when running tests, we need to know what
+# the correct variable is for separating entries in PATH-alike
+# variables.
+if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
+ set(QT_PATH_SEPARATOR "\\;")
+else()
+ set(QT_PATH_SEPARATOR ":")
+endif()
+
+# Compute the values of QT_BUILD_DIR, QT_INSTALL_DIR, QT_CONFIG_BUILD_DIR, QT_CONFIG_INSTALL_DIR
+# taking into account whether the current build is a prefix build or a non-prefix build.
+#
+# These values should be prepended to file paths in commands or properties,
+# in order to correctly place generated Config files, generated Targets files,
+# excutables / libraries, when copying / installing files, etc.
+#
+# The build dir variables will always be absolute paths.
+# The QT_INSTALL_DIR variable will have a relative path in a prefix build,
+# which means that it can be empty, so use qt_join_path to prevent accidental absolute paths.
+if(QT_WILL_INSTALL)
+ # In the usual prefix build case, the build dir is the current module build dir,
+ # and the install dir is the prefix, so we don't set it.
+ set(QT_BUILD_DIR "${CMAKE_BINARY_DIR}")
+ set(QT_INSTALL_DIR "")
+else()
+ # When doing a non-prefix build, both the build dir and install dir are the same,
+ # pointing to the qtbase build dir.
+ set(QT_BUILD_DIR "${CMAKE_INSTALL_PREFIX}")
+ set(QT_INSTALL_DIR "${QT_BUILD_DIR}")
+endif()
+set(__config_path_part "${INSTALL_LIBDIR}/cmake")
+set(QT_CONFIG_BUILD_DIR "${QT_BUILD_DIR}/${__config_path_part}")
+set(QT_CONFIG_INSTALL_DIR "${QT_INSTALL_DIR}")
+if(QT_CONFIG_INSTALL_DIR)
+ string(APPEND QT_CONFIG_INSTALL_DIR "/")
+endif()
+string(APPEND QT_CONFIG_INSTALL_DIR ${__config_path_part})
+unset(__config_path_part)
+
+# This is used to hold extra cmake code that should be put into QtBuildInternalsExtra.cmake file
+# at the QtPostProcess stage.
+set(QT_BUILD_INTERNALS_EXTRA_CMAKE_CODE "")
+
+# Save the value of the current first project source dir.
+# This will be /path/to/qtbase for qtbase both in a super-build and a non super-build.
+# This will be /path/to/qtbase/tests when building standalone tests.
+set(QT_TOP_LEVEL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
+
+# Prevent warnings about object files without any symbols. This is a common
+# thing in Qt as we tend to build files unconditionally, and then use ifdefs
+# to compile out parts that are not relevant.
+if(CMAKE_HOST_APPLE AND APPLE)
+ foreach(lang ASM C CXX)
+ # We have to tell 'ar' to not run ranlib by itself, by passing the 'S' option
+ set(CMAKE_${lang}_ARCHIVE_CREATE "<CMAKE_AR> qcS <TARGET> <LINK_FLAGS> <OBJECTS>")
+ set(CMAKE_${lang}_ARCHIVE_APPEND "<CMAKE_AR> qS <TARGET> <LINK_FLAGS> <OBJECTS>")
+ set(CMAKE_${lang}_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols <TARGET>")
+ endforeach()
+endif()
+
+# Functions and macros:
+
+# qt_remove_args can remove arguments from an existing list of function
+# arguments in order to pass a filtered list of arguments to a different function.
+# Parameters:
+# out_var: result of remove all arguments specified by ARGS_TO_REMOVE from ALL_ARGS
+# ARGS_TO_REMOVE: Arguments to remove.
+# ALL_ARGS: All arguments supplied to cmake_parse_arguments or
+# qt_parse_all_arguments
+# from which ARGS_TO_REMOVE should be removed from. We require all the
+# arguments or we can't properly identify the range of the arguments detailed
+# in ARGS_TO_REMOVE.
+# ARGS: Arguments passed into the function, usually ${ARGV}
+#
+# E.g.:
+# We want to forward all arguments from foo to bar, execpt ZZZ since it will
+# trigger an error in bar.
+#
+# foo(target BAR .... ZZZ .... WWW ...)
+# bar(target BAR.... WWW...)
+#
+# function(foo target)
+# qt_parse_all_arguments(arg "" "" "BAR;ZZZ;WWW ${ARGV})
+# qt_remove_args(forward_args
+# ARGS_TO_REMOVE ${target} ZZZ
+# ALL_ARGS ${target} BAR ZZZ WWW
+# ARGS ${ARGV}
+# )
+# bar(${target} ${forward_args})
+# endfunction()
+#
+function(qt_remove_args out_var)
+ cmake_parse_arguments(arg "" "" "ARGS_TO_REMOVE;ALL_ARGS;ARGS" ${ARGN})
+ set(result ${arg_ARGS})
+ foreach(arg IN LISTS arg_ARGS_TO_REMOVE)
+ # find arg
+ list(FIND result ${arg} find_result)
+ if (NOT find_result EQUAL -1)
+ # remove arg
+ list(REMOVE_AT result ${find_result})
+ list(LENGTH result result_len)
+ list(GET result ${find_result} arg_current)
+ # remove values until we hit another arg
+ while(NOT ${arg_current} IN_LIST arg_ALL_ARGS AND find_result LESS result_len)
+ list(REMOVE_AT result ${find_result})
+ list(GET result ${find_result} arg_current)
+ list(LENGTH result result_len)
+ endwhile()
+ endif()
+ endforeach()
+ set(${out_var} "${result}" PARENT_SCOPE)
+endfunction()
+# Wraps install() command. In a prefix build, simply passes along arguments to install().
+# In a non-prefix build, handles association of targets to export names, and also calls export().
+function(qt_install)
+ set(flags)
+ set(options EXPORT DESTINATION NAMESPACE)
+ set(multiopts TARGETS)
+ cmake_parse_arguments(arg "${flags}" "${options}" "${multiopts}" ${ARGN})
+
+ if(arg_TARGETS)
+ set(is_install_targets TRUE)
+ endif()
+
+ # In a prefix build, always invoke install() without modification.
+ # In a non-prefix build, pass install(TARGETS) commands to allow
+ # association of targets to export names, so we can later use the export names
+ # in export() commands.
+ if(QT_WILL_INSTALL OR is_install_targets)
+ install(${ARGV})
+ endif()
+
+ # Exit early if this is a prefix build.
+ if(QT_WILL_INSTALL)
+ return()
+ endif()
+
+ # In a non-prefix build, when install(EXPORT) is called,
+ # also call export(EXPORT) to generate build tree target files.
+ if(NOT is_install_targets AND arg_EXPORT)
+ set(namespace_option "")
+ if(arg_NAMESPACE)
+ set(namespace_option NAMESPACE ${arg_NAMESPACE})
+ endif()
+ export(EXPORT ${arg_EXPORT}
+ ${namespace_option}
+ FILE "${arg_DESTINATION}/${arg_EXPORT}.cmake")
+ endif()
+endfunction()
+
+# Copies files using file(COPY) signature in non-prefix builds.
+function(qt_non_prefix_copy)
+ if(NOT QT_WILL_INSTALL)
+ file(${ARGV})
+ endif()
+endfunction()
+
+# Use case is installing files in a prefix build, or copying them to the correct build dir
+# in a non-prefix build.
+# Pass along arguments as you would pass them to install().
+# Only supports FILES, PROGRAMS and DIRECTORY signature, and without fancy things
+# like OPTIONAL or RENAME or COMPONENT.
+function(qt_copy_or_install)
+ set(flags FILES PROGRAMS DIRECTORY)
+ set(options)
+ set(multiopts)
+ cmake_parse_arguments(arg "${flags}" "${options}" "${multiopts}" ${ARGN})
+
+ # Remember which option has to be passed to the install command.
+ set(argv_copy ${ARGV})
+ if(arg_FILES)
+ set(install_option "FILES")
+ elseif(arg_PROGRAMS)
+ set(install_option "PROGRAMS")
+ elseif(arg_DIRECTORY)
+ set(install_option "DIRECTORY")
+ endif()
+
+ list(REMOVE_AT argv_copy 0)
+ qt_install(${install_option} ${argv_copy})
+ qt_non_prefix_copy(COPY ${argv_copy})
+endfunction()
+
+# Hacky way to remove the install target in non-prefix builds.
+# We need to associate targets with export names, and that is only possible to do with the
+# install(TARGETS) command. But in a non-prefix build, we don't want to install anything.
+# To make sure that developers don't accidentally run make install, replace the generated
+# cmake_install.cmake file with an empty file. To do this, always create a new temporary file
+# at CMake configuration step, and use it as an input to a custom command that replaces the
+# cmake_install.cmake file with an empty one. This means we will always replace the file on
+# every reconfiguration, but not when doing null builds.
+function(remove_install_target)
+ set(file_in "${CMAKE_BINARY_DIR}/.remove_cmake_install_in.txt")
+ set(file_generated "${CMAKE_BINARY_DIR}/.remove_cmake_install_generated.txt")
+ set(cmake_install_file "${CMAKE_BINARY_DIR}/cmake_install.cmake")
+ file(WRITE ${file_in} "")
+
+ add_custom_command(OUTPUT ${file_generated}
+ COMMAND ${CMAKE_COMMAND} -E copy ${file_in} ${file_generated}
+ COMMAND ${CMAKE_COMMAND} -E remove ${cmake_install_file}
+ COMMAND ${CMAKE_COMMAND} -E touch ${cmake_install_file}
+ COMMENT "Removing cmake_install.cmake"
+ MAIN_DEPENDENCY ${file_in})
+
+ add_custom_target(remove_cmake_install ALL DEPENDS ${file_generated})
+endfunction()
+
+function(qt_set_up_nonprefix_build)
+ if(NOT QT_WILL_INSTALL)
+ remove_install_target()
+ endif()
+endfunction()
+
+function(qt_is_imported_target target out_var)
+ if(NOT TARGET "${target}")
+ set(target "${QT_CMAKE_EXPORT_NAMESPACE}::${target}")
+ endif()
+ if(NOT TARGET "${target}")
+ message(FATAL_ERROR "Invalid target given to qt_is_imported_target: ${target}")
+ endif()
+ get_target_property(is_imported "${target}" IMPORTED)
+ set(${out_var} "${is_imported}" PARENT_SCOPE)
+endfunction()
+
+# Generates module .pri files for consumption by qmake
+function(qt_generate_module_pri_file target target_path pri_files_var)
+ set(flags INTERNAL_MODULE HEADER_MODULE)
+ set(options)
+ set(multiopts QMAKE_MODULE_CONFIG)
+ cmake_parse_arguments(arg "${flags}" "${options}" "${multiopts}" ${ARGN})
+
+ qt_internal_module_info(module "${target}")
+ set(pri_files)
+
+ set(property_prefix)
+ if(arg_HEADER_MODULE)
+ set(property_prefix "interface_")
+ endif()
+
+ get_target_property(enabled_features "${target}"
+ "${property_prefix}QT_ENABLED_PUBLIC_FEATURES")
+ get_target_property(disabled_features "${target}"
+ "${property_prefix}QT_DISABLED_PUBLIC_FEATURES")
+ get_target_property(enabled_private_features "${target}"
+ "${property_prefix}QT_ENABLED_PRIVATE_FEATURES")
+ get_target_property(disabled_private_features "${target}"
+ "${property_prefix}QT_DISABLED_PRIVATE_FEATURES")
+
+ foreach(var enabled_features disabled_features enabled_private_features disabled_private_features)
+ if(${var} STREQUAL "${var}-NOTFOUND")
+ set(${var} "")
+ else()
+ string (REPLACE ";" " " ${var} "${${var}}")
+ endif()
+ endforeach()
+
+ if(arg_QMAKE_MODULE_CONFIG)
+ string(REPLACE ";" " " module_config "${arg_QMAKE_MODULE_CONFIG}")
+ set(module_config "\nQT.${module_lower}.CONFIG = ${module_config}")
+ else()
+ set(module_config "")
+ endif()
+
+ if (NOT ${arg_INTERNAL_MODULE})
+ qt_path_join(pri_file_name "${target_path}" "qt_lib_${module_lower}.pri")
+ list(APPEND pri_files "${pri_file_name}")
+
+ file(GENERATE
+ OUTPUT "${pri_file_name}"
+ CONTENT
+ "QT.${module_lower}.VERSION = ${PROJECT_VERSION}
+QT.${module_lower}.name = ${module}
+QT.${module_lower}.module = ${module_versioned}
+QT.${module_lower}.libs = $$QT_MODULE_LIB_BASE
+QT.${module_lower}.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/${module}
+QT.${module_lower}.frameworks =
+QT.${module_lower}.bins = $$QT_MODULE_BIN_BASE
+QT.${module_lower}.depends =
+QT.${module_lower}.uses =
+QT.${module_lower}.module_config = v2
+QT.${module_lower}.DEFINES = QT_${module_define}_LIB
+QT.${module_lower}.enabled_features = ${enabled_features}
+QT.${module_lower}.disabled_features = ${disabled_features}${module_config}
+QT_MODULES += ${module_lower}
+"
+ )
+ endif()
+
+ qt_path_join(private_pri_file "${target_path}" "qt_lib_${module_lower}_private.pri")
+ list(APPEND pri_files "${private_pri_file}")
+
+ file(GENERATE
+ OUTPUT "${private_pri_file}"
+ CONTENT
+ "QT.${module_lower}_private.VERSION = ${PROJECT_VERSION}
+QT.${module_lower}_private.name = ${module}
+QT.${module_lower}_private.module =
+QT.${module_lower}_private.libs = $$QT_MODULE_LIB_BASE
+QT.${module_lower}_private.includes = $$QT_MODULE_INCLUDE_BASE/${module}/${PROJECT_VERSION} $$QT_MODULE_INCLUDE_BASE/${module}/${PROJECT_VERSION}/${module}
+QT.${module_lower}_private.frameworks =
+QT.${module_lower}_private.depends = ${module_lower}
+QT.${module_lower}_private.uses =
+QT.${module_lower}_private.module_config = v2
+QT.${module_lower}_private.enabled_features = ${enabled_private_features}
+QT.${module_lower}_private.disabled_features = ${disabled_private_features}
+"
+ )
+
+ set("${pri_files_var}" "${pri_files}" PARENT_SCOPE)
+endfunction()
+
+function(qt_generate_global_config_pri_file)
+ qt_path_join(qconfig_pri_target_path ${PROJECT_BINARY_DIR} mkspecs)
+ qt_path_join(qconfig_pri_target_path "${qconfig_pri_target_path}" "qconfig.pri")
+
+ get_target_property(enabled_features GlobalConfig INTERFACE_QT_ENABLED_PUBLIC_FEATURES)
+ get_target_property(disabled_features GlobalConfig INTERFACE_QT_DISABLED_PUBLIC_FEATURES)
+
+ # configure2cmake skips the "static" feature, so emulate it here for qmake support:
+ if(QT_BUILD_SHARED_LIBS OR BUILD_SHARED_LIBS)
+ list(APPEND enabled_features shared)
+ list(APPEND disabled_features static)
+ set(qt_build_config_type "shared")
+ else()
+ list(APPEND enabled_features static)
+ list(APPEND disabled_features shared)
+ set(qt_build_config_type "static")
+ endif()
+
+ # configure2cmake skips the "rpath" feature, so emulate it here for qmake support:
+ if(CMAKE_SKIP_RPATH)
+ list(APPEND disabled_features rpath)
+ elseif(LINUX OR APPLE)
+ list(APPEND enabled_features rpath)
+ endif()
+
+ string (REPLACE ";" " " enabled_features "${enabled_features}")
+ string (REPLACE ";" " " disabled_features "${disabled_features}")
+
+ # Add some required CONFIG entries.
+ set(config_entries "")
+ if(CMAKE_BUILD_TYPE STREQUAL Debug)
+ list(APPEND config_entries "debug")
+ elseif(CMAKE_BUILD_TYPE STREQUAL Release)
+ list(APPEND config_entries "release")
+ endif()
+ list(APPEND config_entries "${qt_build_config_type}")
+ string (REPLACE ";" " " config_entries "${config_entries}")
+
+ file(GENERATE
+ OUTPUT "${qconfig_pri_target_path}"
+ CONTENT
+ "QT_ARCH = ${TEST_architecture_arch}
+QT_BUILDABI = ${TEST_buildAbi}
+QT.global.enabled_features = ${enabled_features}
+QT.global.disabled_features = ${disabled_features}
+QT_VERSION = ${PROJECT_VERSION}
+QT_MAJOR_VERSION = ${PROJECT_VERSION_MAJOR}
+QT_MINOR_VERSION = ${PROJECT_VERSION_MINOR}
+QT_PATCH_VERSION = ${PROJECT_VERSION_PATCH}
+CONFIG -= link_prl # we do not create prl files right now
+CONFIG += ${config_entries}
+"
+ )
+ qt_install(FILES "${qconfig_pri_target_path}" DESTINATION mkspecs)
+endfunction()
+
+# Takes a list of path components and joins them into one path separated by forward slashes "/",
+# and saves the path in out_var.
+function(qt_path_join out_var)
+ # Remove output variable.
+ set(argv ${ARGV})
+ list(REMOVE_AT argv 0)
+
+ # Join the path components.
+ string(JOIN "/" path ${argv})
+ set(${out_var} ${path} PARENT_SCOPE)
+endfunction()
+
+function(qt_internal_export_modern_cmake_config_targets_file)
+ cmake_parse_arguments(__arg "" "EXPORT_NAME_PREFIX;CONFIG_INSTALL_DIR" "TARGETS" ${ARGN})
+
+ set(export_name "${__arg_EXPORT_NAME_PREFIX}VersionlessTargets")
+ foreach(target ${__arg_TARGETS})
+ if (TARGET "${target}Versionless")
+ continue()
+ endif()
+
+ add_library("${target}Versionless" INTERFACE)
+ target_link_libraries("${target}Versionless" INTERFACE "${target}")
+ set_target_properties("${target}Versionless" PROPERTIES EXPORT_NAME "${target}")
+ qt_install(TARGETS "${target}Versionless" EXPORT ${export_name})
+ endforeach()
+ qt_install(EXPORT ${export_name} NAMESPACE Qt:: DESTINATION "${__arg_CONFIG_INSTALL_DIR}")
+endfunction()
+
+# Print all variables defined in the current scope.
+macro(qt_debug_print_variables)
+ cmake_parse_arguments(__arg "DEDUP" "" "MATCH;IGNORE" ${ARGN})
+ message("Known Variables:")
+ get_cmake_property(__variableNames VARIABLES)
+ list (SORT __variableNames)
+ if (__arg_DEDUP)
+ list(REMOVE_DUPLICATES __variableNames)
+ endif()
+
+ foreach(__var ${__variableNames})
+ set(__ignore OFF)
+ foreach(__i ${__arg_IGNORE})
+ if(__var MATCHES "${__i}")
+ set(__ignore ON)
+ break()
+ endif()
+ endforeach()
+
+ if (__ignore)
+ continue()
+ endif()
+
+ set(__show OFF)
+ foreach(__i ${__arg_MATCH})
+ if(__var MATCHES "${__i}")
+ set(__show ON)
+ break()
+ endif()
+ endforeach()
+
+ if (__show)
+ message(" ${__var}=${${__var}}.")
+ endif()
+ endforeach()
+endmacro()
+
+
+macro(assert)
+ if (${ARGN})
+ else()
+ message(FATAL_ERROR "ASSERT: ${ARGN}.")
+ endif()
+endmacro()
+
+
+function(qt_create_nolink_target target dependee_target)
+ if(NOT TARGET "${target}")
+ message(FATAL_ERROR "${target} does not exist when trying to build a nolink target.")
+ endif()
+ get_target_property(type "${target}" TYPE)
+ if(type STREQUAL EXECUTABLE)
+ message(FATAL_ERROR "${target} must be a library of some kind.")
+ endif()
+ if(type STREQUAL OBJECT_LIBRARY)
+ message(FATAL_ERROR "${target} must not be an object library.")
+ endif()
+
+ # Strip off the namespace prefix, so from Vulkan::Vulkan to Vulkan, and then append _nolink.
+ string(REGEX REPLACE "^.*::" "" non_prefixed_target ${target})
+ set(nolink_target "${non_prefixed_target}_nolink")
+
+ # Create the nolink interface target, assign the properties from the original target,
+ # associate the nolink target with the same export which contains
+ # the target that uses the _nolink target.
+ # Also create a namespaced alias of the form {$target}::${target}_nolink which is used by
+ # our modules.
+ if(NOT TARGET "${nolink_target}")
+ add_library("${nolink_target}" INTERFACE)
+ set(prefixed_nolink_target "${target}_nolink")
+ set_target_properties("${nolink_target}" PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES
+ $<TARGET_PROPERTY:${target},INTERFACE_INCLUDE_DIRECTORIES>
+ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
+ $<TARGET_PROPERTY:${target},INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
+ INTERFACE_COMPILE_DEFINITIONS
+ $<TARGET_PROPERTY:${target},INTERFACE_COMPILE_DEFINITIONS>
+ INTERFACE_COMPILE_OPTIONS
+ $<TARGET_PROPERTY:${target},INTERFACE_COMPILE_OPTIONS>
+ INTERFACE_COMPILE_FEATURES
+ $<TARGET_PROPERTY:${target},INTERFACE_COMPILE_FEATURES>)
+
+ add_library(${prefixed_nolink_target} ALIAS ${nolink_target})
+
+ set(export_name "${INSTALL_CMAKE_NAMESPACE}${dependee_target}Targets")
+ qt_install(TARGETS ${nolink_target} EXPORT ${export_name})
+ endif()
+endfunction()
+
+function(qt_ensure_perl)
+ if(DEFINED HOST_PERL)
+ return()
+ endif()
+ find_program(HOST_PERL "perl" DOC "Perl binary")
+ if (NOT HOST_PERL)
+ message(FATAL_ERROR "Perl needs to be available to build Qt.")
+ endif()
+endfunction()
+
+
+function(qt_ensure_sync_qt)
+ qt_ensure_perl()
+ if(DEFINED QT_SYNCQT)
+ return()
+ endif()
+
+ # When building qtbase, use the source syncqt, otherwise use the installed one.
+ set(SYNCQT_FROM_SOURCE "${QtBase_SOURCE_DIR}/bin/syncqt.pl")
+ if(NOT ("${QtBase_SOURCE_DIR}" STREQUAL "") AND EXISTS "${SYNCQT_FROM_SOURCE}")
+ set(QT_SYNCQT "${SYNCQT_FROM_SOURCE}" CACHE FILEPATH "syncqt script")
+ message(STATUS "Using source syncqt found at: ${QT_SYNCQT}")
+
+ qt_path_join(syncqt_install_dir ${QT_INSTALL_DIR} ${INSTALL_LIBEXECDIR})
+ qt_copy_or_install(PROGRAMS "${SYNCQT_FROM_SOURCE}"
+ DESTINATION "${syncqt_install_dir}")
+ else()
+ get_filename_component(syncqt_absolute_path
+ "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIBEXECDIR}/syncqt.pl"
+ ABSOLUTE)
+ set(QT_SYNCQT "${syncqt_absolute_path}" CACHE FILEPATH "syncqt script")
+ message(STATUS "Using installed syncqt found at: ${QT_SYNCQT}")
+ endif()
+endfunction()
+
+# A version of cmake_parse_arguments that makes sure all arguments are processed and errors out
+# with a message about ${type} having received unknown arguments.
+macro(qt_parse_all_arguments result type flags options multiopts)
+ cmake_parse_arguments(${result} "${flags}" "${options}" "${multiopts}" ${ARGN})
+ if(DEFINED ${result}_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "Unknown arguments were passed to ${type} (${${result}_UNPARSED_ARGUMENTS}).")
+ endif()
+endmacro()
+
+
+function(qt_internal_add_link_flags_no_undefined target)
+ if (NOT QT_BUILD_SHARED_LIBS)
+ return()
+ endif()
+ if (GCC OR CLANG)
+ if(APPLE)
+ set(no_undefined_flag "-Wl,-undefined,error")
+ elseif(LINUX OR MINGW OR ANDROID)
+ set(no_undefined_flag "-Wl,--no-undefined")
+ else()
+ message(FATAL_ERROR "Platform linker doesn't support erroring upon encountering undefined symbols. Target:\"${target}\".")
+ endif()
+ target_link_options("${target}" PRIVATE "${no_undefined_flag}")
+ endif()
+endfunction()
+
+function(qt_internal_add_link_flags_gc_sections target visibility)
+ set(possible_visibilities PRIVATE INTERFACE PUBLIC)
+ list(FIND possible_visibilities "${visibility}" known_visibility)
+ if (known_visibility EQUAL "-1")
+ message(FATAL_ERROR "Visibitily setting must be one of PRIVATE, INTERFACE or PUBLIC.")
+ endif()
+
+ if ((GCC OR CLANG) AND NOT EMSCRIPTEN)
+ if(APPLE)
+ set(gc_sections_flag "-Wl,-dead_strip")
+ elseif(LINUX OR BSD OR SOLARIS OR WIN32 OR ANDROID)
+ set(gc_sections_flag "-Wl,--gc-sections")
+ else()
+ message(FATAL_ERROR "Platform linker doesn't support gc sections. Target:\"${target}\".")
+ endif()
+ target_link_options("${target}" ${visibility} "${gc_sections_flag}")
+ endif()
+endfunction()
+
+function(qt_internal_add_linker_version_script target)
+ qt_parse_all_arguments(arg "qt_internal_add_linker" "INTERNAL" "" "PRIVATE_HEADERS" ${ARGN})
+
+ if (TEST_ld_version_script)
+ if (arg_INTERNAL)
+ set(contents "Qt_${PROJECT_VERSION_MAJOR}_PRIVATE_API { *; };")
+ else()
+ set(contents "Qt_${PROJECT_VERSION_MAJOR}_PRIVATE_API {\n qt_private_api_tag*;\n")
+ foreach(ph ${arg_PRIVATE_HEADERS})
+ string(APPEND contents " @FILE:${ph}@\n")
+ endforeach()
+ string(APPEND contents "};\n")
+ set(current "Qt_${PROJECT_VERSION_MAJOR}")
+ if (QT_NAMESPACE STREQUAL "")
+ set(tag_symbol "qt_version_tag")
+ else()
+ set(tag_symbol "qt_version_tag_${QT_NAMESPACE}")
+ endif()
+ string(APPEND contents "${current} { *; };\n")
+
+ foreach(minor_version RANGE ${PROJECT_VERSION_MINOR})
+ set(previous "${current}")
+ set(current "Qt_${PROJECT_VERSION_MAJOR}.${minor_version}")
+ if (minor_version EQUAL ${PROJECT_VERSION_MINOR})
+ string(APPEND contents "${current} { ${tag_symbol}; } ${previous};\n")
+ else()
+ string(APPEND contents "${current} {} ${previous};\n")
+ endif()
+ endforeach()
+
+ set(infile "${CMAKE_CURRENT_BINARY_DIR}/${target}.version.in")
+ set(outfile "${CMAKE_CURRENT_BINARY_DIR}/${target}.version")
+
+ file(GENERATE OUTPUT "${infile}" CONTENT "${contents}")
+
+ qt_ensure_perl()
+
+ add_custom_command(TARGET "${target}" PRE_LINK
+ COMMAND "${HOST_PERL}" "${PROJECT_SOURCE_DIR}/mkspecs/features/data/unix/findclasslist.pl" < "${infile}" > "${outfile}"
+ BYPRODUCTS "${outfile}" DEPENDS "${infile}"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ COMMENT "Generating version linker script"
+ )
+ target_link_options("${target}" PRIVATE "-Wl,--version-script,${outfile}")
+ endif()
+ endif()
+endfunction()
+
+
+# Get a set of Qt module related values based on the target name.
+# When doing qt_internal_module_info(foo Core) this method will set
+# the following variables in the caller's scope:
+# * foo with the value "QtCore"
+# * foo_versioned with the value "Qt6Core" (based on major Qt version)
+# * foo_upper with the value "CORE"
+# * foo_lower with the value "core"
+# * foo_repo_include_dir with the module's include directory
+# e.g for QtQuick it would be qtdeclarative_build_dir/include for a prefix build or
+# qtbase_build_dir/include for a non-prefix build
+# * foo_include_dir with the module's include directory
+# e.g for QtQuick it would be qtdeclarative_build_dir/include/QtQuick for a prefix build or
+# qtbase_build_dir/include/QtQuick for a non-prefix build
+# * foo_define same as foo_uper but with - replaced as _
+function(qt_internal_module_info result target)
+ set(module "Qt${target}")
+ set("${result}" "${module}" PARENT_SCOPE)
+ set("${result}_versioned" "Qt${PROJECT_VERSION_MAJOR}${target}" PARENT_SCOPE)
+ string(TOUPPER "${target}" upper)
+ string(TOLOWER "${target}" lower)# * foo_upper with the value "CORE"
+ string(REPLACE "-" "_" define "${upper}")
+ string(REPLACE "." "_" define "${define}")
+ set("${result}_upper" "${upper}" PARENT_SCOPE)
+ set("${result}_lower" "${lower}" PARENT_SCOPE)
+ set("${result}_repo_include_dir" "${QT_BUILD_DIR}/include" PARENT_SCOPE)
+ set("${result}_include_dir" "${QT_BUILD_DIR}/include/${module}" PARENT_SCOPE)
+ set("${result}_define" "${define}" PARENT_SCOPE)
+endfunction()
+
+
+set(__default_private_args "SOURCES;LIBRARIES;INCLUDE_DIRECTORIES;DEFINES;DBUS_ADAPTOR_BASENAME;DBUS_ADAPTOR_FLAGS;DBUS_ADAPTOR_SOURCES;DBUS_INTERFACE_BASENAME;DBUS_INTERFACE_FLAGS;DBUS_INTERFACE_SOURCES;FEATURE_DEPENDENCIES;COMPILE_OPTIONS;LINK_OPTIONS;MOC_OPTIONS;DISABLE_AUTOGEN_TOOLS;ENABLE_AUTOGEN_TOOLS;PLUGIN_TYPES")
+
+set(__default_public_args "PUBLIC_LIBRARIES;PUBLIC_INCLUDE_DIRECTORIES;PUBLIC_DEFINES;PUBLIC_COMPILE_OPTIONS;PUBLIC_LINK_OPTIONS")
+
+
+option(QT_CMAKE_DEBUG_EXTEND_TARGET "Debug extend_target calls in Qt's build system" OFF)
+
+# Initial autogen setup for a target to specify certain CMake properties which are common
+# to all autogen tools. Also enable AUTOMOC by default.
+function(qt_autogen_tools_initial_setup target)
+ set_property(TARGET "${target}" PROPERTY INTERFACE_QT_MAJOR_VERSION ${PROJECT_VERSION_MAJOR})
+ set_property(TARGET "${target}" APPEND PROPERTY COMPATIBLE_INTERFACE_STRING QT_MAJOR_VERSION)
+
+ set_directory_properties(PROPERTIES
+ QT_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}
+ QT_VERSION_MINOR ${PROJECT_VERSION_MINOR})
+
+ qt_enable_autogen_tool(${target} "moc" ON)
+endfunction()
+
+# Enables or disables an autogen tool like moc, uic or rcc on ${target}.
+function(qt_enable_autogen_tool target tool enable)
+ string(TOUPPER "${tool}" captitalAutogenTool)
+
+ get_target_property(tool_enabled ${target} AUTO${captitalAutogenTool})
+ get_target_property(autogen_target_depends ${target} AUTOGEN_TARGET_DEPENDS)
+
+ if(NOT autogen_target_depends)
+ set(autogen_target_depends "")
+ endif()
+ set(tool_executable "$<TARGET_FILE:${QT_CMAKE_EXPORT_NAMESPACE}::${tool}>")
+ set(tool_target_name ${QT_CMAKE_EXPORT_NAMESPACE}::${tool})
+
+ if(enable)
+ list(APPEND autogen_target_depends ${tool_target_name})
+ else()
+ list(REMOVE_ITEM autogen_target_depends ${tool_target_name})
+ endif()
+
+ # f66c1db16c050c9d685a44a38ad7c5cf9f6fcc96 in qtbase introduced a new macro
+ # that the moc scanner has to look for. Inform the CMake moc scanner about it.
+ if(tool STREQUAL "moc" AND enable)
+ set_target_properties("${target}" PROPERTIES
+ AUTOMOC_MACRO_NAMES "Q_OBJECT;Q_GADGET;Q_NAMESPACE;Q_NAMESPACE_EXPORT;Q_ENUM_NS")
+ endif()
+
+ set_target_properties("${target}"
+ PROPERTIES
+ AUTO${captitalAutogenTool} "${enable}"
+ AUTO${captitalAutogenTool}_EXECUTABLE "${tool_executable}"
+ AUTOGEN_TARGET_DEPENDS "${autogen_target_depends}"
+ )
+endfunction()
+
+# This function adds or removes additional AUTOGEN tools to a target: AUTOMOC/UIC/RCC
+function(qt_autogen_tools target)
+ qt_parse_all_arguments(arg "qt_autogen_tools" "" "" "${__default_private_args}" ${ARGN})
+
+ if (arg_ENABLE_AUTOGEN_TOOLS)
+ foreach(tool ${arg_ENABLE_AUTOGEN_TOOLS})
+ qt_enable_autogen_tool(${target} ${tool} ON)
+ endforeach()
+ endif()
+
+ if (arg_DISABLE_AUTOGEN_TOOLS)
+ foreach(tool ${arg_DISABLE_AUTOGEN_TOOLS})
+ qt_enable_autogen_tool(${target} ${tool} OFF)
+ endforeach()
+ endif()
+endfunction()
+
+# This function stores the list of Qt modules a library depend on,
+# along with their version info, for usage in ${target}Depends.cmake file
+function(qt_register_target_dependencies target public_libs private_libs)
+ get_target_property(target_deps "${target}" _qt_target_deps)
+ if(NOT target_deps)
+ set(target_deps "")
+ endif()
+
+ foreach(lib IN LISTS public_libs private_libs)
+ if ("${lib}" MATCHES "^Qt::(.*)")
+ set(lib "${CMAKE_MATCH_1}")
+ if (lib STREQUAL Platform
+ OR lib STREQUAL GlobalConfig
+ OR lib STREQUAL GlobalConfigPrivate
+ OR lib STREQUAL PlatformModuleInternal
+ OR lib STREQUAL PlatformPluginInternal
+ OR lib STREQUAL PlatformToolInternal)
+ list(APPEND target_deps "Qt6\;${PROJECT_VERSION}")
+ elseif ("${lib}" MATCHES "(.*)Private")
+ list(APPEND target_deps "${INSTALL_CMAKE_NAMESPACE}${CMAKE_MATCH_1}\;${PROJECT_VERSION}")
+ else()
+ list(APPEND target_deps "${INSTALL_CMAKE_NAMESPACE}${lib}\;${PROJECT_VERSION}")
+ endif()
+ endif()
+ endforeach()
+
+ set_target_properties("${target}" PROPERTIES _qt_target_deps "${target_deps}")
+endfunction()
+
+function(qt_update_precompiled_header target precompiled_header)
+ if (precompiled_header AND BUILD_WITH_PCH)
+ set_property(TARGET "${target}" APPEND PROPERTY "PRECOMPILE_HEADERS" "${precompiled_header}")
+ endif()
+endfunction()
+
+function(qt_update_precompiled_header_with_library target library)
+ if (TARGET "${library}")
+ get_target_property(TARGET_TYPE "${library}" TYPE)
+ if (NOT TARGET_TYPE STREQUAL "INTERFACE_LIBRARY")
+ get_target_property(HEADER "${library}" MODULE_HEADER)
+ qt_update_precompiled_header("${target}" "${HEADER}")
+ endif()
+ endif()
+endfunction()
+
+function(qt_update_ignore_pch_source target sources)
+ if (sources)
+ set_source_files_properties(${sources} PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
+ endif()
+endfunction()
+
+function(qt_ignore_pch_obj_c_sources target sources)
+ list(FILTER sources INCLUDE REGEX "\\.mm$")
+ qt_update_ignore_pch_source("${target}" "${sources}")
+endfunction()
+
+# This function can be used to add sources/libraries/etc. to the specified CMake target
+# if the provided CONDITION evaluates to true.
+function(extend_target target)
+ # Don't try to extend_target when cross compiling an imported host target (like a tool).
+ qt_is_imported_target("${target}" is_imported)
+ if(is_imported)
+ return()
+ endif()
+
+ if (NOT TARGET "${target}")
+ message(FATAL_ERROR "Trying to extend non-existing target \"${target}\".")
+ endif()
+ qt_parse_all_arguments(arg "extend_target" "HEADER_MODULE" "PRECOMPILED_HEADER"
+ "CONDITION;${__default_public_args};${__default_private_args};COMPILE_FLAGS;NO_PCH_SOURCES" ${ARGN})
+ if ("x${arg_CONDITION}" STREQUAL x)
+ set(arg_CONDITION ON)
+ endif()
+
+ qt_evaluate_config_expression(result ${arg_CONDITION})
+ if (${result})
+ if(QT_CMAKE_DEBUG_EXTEND_TARGET)
+ message("extend_target(${target} CONDITION ${arg_CONDITION} ...): Evaluated")
+ endif()
+ set(dbus_sources "")
+ foreach(adaptor ${arg_DBUS_ADAPTOR_SOURCES})
+ qt_create_qdbusxml2cpp_command("${target}" "${adaptor}" ADAPTOR BASENAME "${arg_DBUS_ADAPTOR_BASENAME}" FLAGS "${arg_DBUS_ADAPTOR_FLAGS}")
+ list(APPEND dbus_sources "${sources}")
+ endforeach()
+
+ foreach(interface ${arg_DBUS_INTERFACE_SOURCES})
+ qt_create_qdbusxml2cpp_command("${target}" "${interface}" INTERFACE BASENAME "${arg_DBUS_INTERFACE_BASENAME}" FLAGS "${arg_DBUS_INTERFACE_FLAGS}")
+ list(APPEND dbus_sources "${sources}")
+ endforeach()
+
+ get_target_property(target_type ${target} TYPE)
+ set(is_library FALSE)
+ if (${target_type} STREQUAL "STATIC_LIBRARY" OR ${target_type} STREQUAL "SHARED_LIBRARY")
+ set(is_library TRUE)
+ endif()
+ foreach(lib ${arg_PUBLIC_LIBRARIES} ${arg_LIBRARIES})
+ # Automatically generate PCH for 'target' using dependencies
+ # if 'target' is a library/module!
+ if (${is_library})
+ qt_update_precompiled_header_with_library("${target}" "${lib}")
+ endif()
+
+ string(REGEX REPLACE "_nolink$" "" base_lib "${lib}")
+ if(NOT base_lib STREQUAL lib)
+ qt_create_nolink_target("${base_lib}" ${target})
+ endif()
+ endforeach()
+
+ # Find dependencies to internal libraries
+ get_target_property(target_deps "${target}" _qt_target_deps)
+ if(NOT target_deps)
+ set(target_deps "")
+ endif()
+
+ foreach(lib ${arg_LIBRARIES})
+ if (TARGET "${lib}")
+ get_target_property(_is_exported "${lib}" INTERFACE_QT_EXPORTED_LIBRARY)
+ if("${_is_exported}")
+ list(APPEND target_deps "${lib}\;${PROJECT_VERSION}")
+ endif()
+ endif()
+ endforeach()
+ # Set-up the target
+ target_sources("${target}" PRIVATE ${arg_SOURCES} ${dbus_sources})
+ if (arg_COMPILE_FLAGS)
+ set_source_files_properties(${arg_SOURCES} PROPERTIES COMPILE_FLAGS "${arg_COMPILE_FLAGS}")
+ endif()
+
+ set(public_visibility_option "PUBLIC")
+ set(private_visibility_option "PRIVATE")
+ if(arg_HEADER_MODULE)
+ set(public_visibility_option "INTERFACE")
+ set(private_visibility_option "INTERFACE")
+ endif()
+ target_include_directories("${target}"
+ ${public_visibility_option} ${arg_PUBLIC_INCLUDE_DIRECTORIES}
+ ${private_visibility_option} ${arg_INCLUDE_DIRECTORIES})
+ target_compile_definitions("${target}"
+ ${public_visibility_option} ${arg_PUBLIC_DEFINES}
+ ${private_visibility_option} ${arg_DEFINES})
+ target_link_libraries("${target}"
+ ${public_visibility_option} ${arg_PUBLIC_LIBRARIES}
+ ${private_visibility_option} ${arg_LIBRARIES})
+ target_compile_options("${target}"
+ ${public_visibility_option} ${arg_PUBLIC_COMPILE_OPTIONS}
+ ${private_visibility_option} ${arg_COMPILE_OPTIONS})
+ target_link_options("${target}"
+ ${public_visibility_option} ${arg_PUBLIC_LINK_OPTIONS}
+ ${private_visibility_option} ${arg_LINK_OPTIONS})
+
+ if(NOT arg_HEADER_MODULE)
+ set_target_properties("${target}" PROPERTIES
+ AUTOMOC_MOC_OPTIONS "${arg_MOC_OPTIONS}"
+ _qt_target_deps "${target_deps}"
+ )
+ endif()
+
+ # When computing the private library dependencies, we need to check not only the known
+ # modules added by this repo's qt_build_repo(), but also all module dependencies that
+ # were found via find_package().
+ qt_internal_get_qt_all_known_modules(known_modules)
+
+ # When a public module depends on a private module (Gui on CorePrivate)
+ # make its private module depend on the other private module (GuiPrivate will depend on
+ # CorePrivate).
+ set(qt_libs_private "")
+ foreach(it ${known_modules})
+ list(FIND arg_LIBRARIES "Qt::${it}Private" pos)
+ if(pos GREATER -1)
+ list(APPEND qt_libs_private "Qt::${it}Private")
+ endif()
+ endforeach()
+
+ set(target_private "${target}Private")
+ if(TARGET "${target_private}")
+ target_link_libraries("${target_private}" INTERFACE "${target}" "${qt_libs_private}")
+ endif()
+ qt_register_target_dependencies("${target}"
+ "${arg_PUBLIC_LIBRARIES}"
+ "${qt_libs_private};${arg_LIBRARIES}")
+
+
+ qt_autogen_tools(${target}
+ ENABLE_AUTOGEN_TOOLS ${arg_ENABLE_AUTOGEN_TOOLS}
+ DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS})
+
+ qt_update_precompiled_header("${target}" "${arg_PRECOMPILED_HEADER}")
+ qt_update_ignore_pch_source("${target}" "${arg_NO_PCH_SOURCES}")
+ ## Ignore objective-c files for PCH (not supported atm)
+ qt_ignore_pch_obj_c_sources("${target}" "${arg_SOURCES}")
+
+ else()
+ if(QT_CMAKE_DEBUG_EXTEND_TARGET)
+ message("extend_target(${target} CONDITION ${arg_CONDITION} ...): Skipped")
+ endif()
+ endif()
+endfunction()
+
+
+function(qt_internal_library_deprecation_level result)
+ if(WIN32)
+ # On Windows, due to the way DLLs work, we need to export all functions,
+ # including the inlines
+ set("${result}" "QT_DISABLE_DEPRECATED_BEFORE=0x040800" PARENT_SCOPE)
+ else()
+ # On other platforms, Qt's own compilation goes needs to compile the Qt 5.0 API
+ set("${result}" "QT_DISABLE_DEPRECATED_BEFORE=0x050000" PARENT_SCOPE)
+ endif()
+ set("${result}" "QT_DEPRECATED_WARNINGS_SINCE=0x060000" PARENT_SCOPE)
+endfunction()
+
+
+function(qt_install_injections module build_dir install_dir)
+ set(injections ${ARGN})
+ # examples:
+ # SYNCQT.INJECTIONS = src/corelib/global/qconfig.h:qconfig.h:QtConfig src/corelib/global/qconfig_p.h:5.12.0/QtCore/private/qconfig_p.h
+ # SYNCQT.INJECTIONS = src/gui/vulkan/qvulkanfunctions.h:^qvulkanfunctions.h:QVulkanFunctions:QVulkanDeviceFunctions src/gui/vulkan/qvulkanfunctions_p.h:^5.12.0/QtGui/private/qvulkanfunctions_p.h
+ # The are 3 parts to the assignment, divded by colons ':'.
+ # The first part contains a path to a generated file in a build folder.
+ # The second part contains the file name that the forwarding header should have, which points
+ # to the file in the first part.
+ # The third part contains multiple UpperCaseFileNames that should be forwarding headers to the
+ # header specified in the second part.
+ separate_arguments(injections UNIX_COMMAND "${injections}")
+ foreach(injection ${injections})
+ string(REPLACE ":" ";" injection ${injection})
+ # Part 1.
+ list(GET injection 0 file)
+ # Part 2.
+ list(GET injection 1 destination)
+ string(REGEX REPLACE "^\\^" "" destination "${destination}")
+ list(REMOVE_AT injection 0 1)
+ # Part 3.
+ set(fwd_hdrs ${injection})
+ get_filename_component(destinationdir ${destination} DIRECTORY)
+ get_filename_component(destinationname ${destination} NAME)
+ get_filename_component(original_file_name ${file} NAME)
+
+ # This describes a concrete example for easier comprehension:
+ # A file 'qtqml-config.h' is generated by qt_internal_feature_write_file into
+ # ${qtdeclarative_build_dir}/src/{module}/qtqml-config.h (part 1).
+ #
+ # Generate a lower case forwarding header (part 2) 'qtqml-config.h' at the following
+ # location:
+ # ${some_prefix}/include/${module}/qtqml-config.h.
+ #
+ # Inside this file, we #include the originally generated file,
+ # ${qtdeclarative_build_dir}/src/{module}/qtqml-config.h.
+ #
+ # ${some_prefix}'s value depends on the build type.
+ # If doing a prefix build, it should point to
+ # ${current_repo_build_dir} which is ${qtdeclarative_build_dir}.
+ # If doing a non-prefix build, it should point to
+ # ${qtbase_build_dir}.
+ #
+ # In the code below, ${some_prefix} == ${build_dir}.
+ set(lower_case_forwarding_header_path "${build_dir}/${INSTALL_INCLUDEDIR}/${module}")
+ if(destinationdir)
+ string(APPEND lower_case_forwarding_header_path "/${destinationdir}")
+ endif()
+ set(current_repo_build_dir "${PROJECT_BINARY_DIR}")
+
+ file(RELATIVE_PATH relpath
+ "${lower_case_forwarding_header_path}"
+ "${current_repo_build_dir}/${file}")
+ set(main_contents "#include \"${relpath}\"")
+ file(GENERATE OUTPUT "${lower_case_forwarding_header_path}/${original_file_name}"
+ CONTENT "${main_contents}")
+
+ # Copy the actual injected (generated) header file (not the just created forwarding one)
+ # to its install location when doing a prefix build. In an non-prefix build, the qt_install
+ # will be a no-op.
+ qt_path_join(install_destination
+ ${install_dir} ${INSTALL_INCLUDEDIR} ${module} ${destinationdir})
+ qt_install(FILES ${current_repo_build_dir}/${file}
+ DESTINATION ${install_destination}
+ RENAME ${destinationname} OPTIONAL)
+
+ # Generate UpperCaseNamed forwarding headers (part 3).
+ foreach(fwd_hdr ${fwd_hdrs})
+ set(upper_case_forwarding_header_path "${INSTALL_INCLUDEDIR}/${module}")
+ if(destinationdir)
+ string(APPEND upper_case_forwarding_header_path "/${destinationdir}")
+ endif()
+
+ # Generate upper case forwarding header like QVulkanFunctions or QtConfig.
+ file(GENERATE OUTPUT "${build_dir}/${upper_case_forwarding_header_path}/${fwd_hdr}"
+ CONTENT "#include \"${destinationname}\"\n")
+
+ # Install the forwarding header.
+ qt_path_join(install_destination
+ ${install_dir} ${upper_case_forwarding_header_path})
+ qt_install(FILES "${build_dir}/${upper_case_forwarding_header_path}/${fwd_hdr}"
+ DESTINATION ${install_destination} OPTIONAL)
+ endforeach()
+ endforeach()
+endfunction()
+
+
+function(qt_read_headers_pri target resultVarPrefix)
+ qt_internal_module_info(module "${target}")
+ file(STRINGS "${module_include_dir}/headers.pri" headers_pri_contents)
+ foreach(line ${headers_pri_contents})
+ if("${line}" MATCHES "SYNCQT.HEADER_FILES = (.*)")
+ set(public_module_headers "${CMAKE_MATCH_1}")
+ separate_arguments(public_module_headers UNIX_COMMAND "${public_module_headers}")
+ elseif("${line}" MATCHES "SYNCQT.PRIVATE_HEADER_FILES = (.*)")
+ set(private_module_headers "${CMAKE_MATCH_1}")
+ separate_arguments(private_module_headers UNIX_COMMAND "${private_module_headers}")
+ elseif("${line}" MATCHES "SYNCQT.GENERATED_HEADER_FILES = (.*)")
+ set(generated_module_headers "${CMAKE_MATCH_1}")
+ separate_arguments(generated_module_headers UNIX_COMMAND "${generated_module_headers}")
+ foreach(generated_header ${generated_module_headers})
+ list(APPEND public_module_headers "${module_include_dir}/${generated_header}")
+ endforeach()
+ elseif("${line}" MATCHES "SYNCQT.INJECTIONS = (.*)")
+ set(injections "${CMAKE_MATCH_1}")
+ elseif("${line}" MATCHES "SYNCQT.([A-Z_]+)_HEADER_FILES = (.+)")
+ set(prefix "${CMAKE_MATCH_1}")
+ string(TOLOWER "${prefix}" prefix)
+ set(entries "${CMAKE_MATCH_2}")
+ separate_arguments(entries UNIX_COMMAND "${entries}")
+ set("${resultVarPrefix}_${prefix}" "${entries}" PARENT_SCOPE)
+ endif()
+ endforeach()
+ set(${resultVarPrefix}_public "${public_module_headers}" PARENT_SCOPE)
+ set(${resultVarPrefix}_private "${private_module_headers}" PARENT_SCOPE)
+ set(${resultVarPrefix}_injections "${injections}" PARENT_SCOPE)
+endfunction()
+
+
+# Add Qt::target and Qt6::target as aliases for the target
+function(qt_internal_add_target_aliases target)
+ get_target_property(type "${target}" TYPE)
+ if (type STREQUAL EXECUTABLE)
+ add_executable("Qt::${target}" ALIAS "${target}")
+ add_executable("Qt${PROJECT_VERSION_MAJOR}::${target}" ALIAS "${target}")
+ else()
+ add_library("Qt::${target}" ALIAS "${target}")
+ add_library("Qt${PROJECT_VERSION_MAJOR}::${target}" ALIAS "${target}")
+ endif()
+endfunction()
+
+# Sets the exceptions flags for the given target
+function(qt_internal_set_no_exceptions_flags target)
+ target_compile_definitions("${target}" PRIVATE "QT_NO_EXCEPTIONS")
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
+ target_compile_options("${target}" PRIVATE "/wd4530" "/wd4577")
+ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ target_compile_options("${target}" PRIVATE "-fno-exceptions")
+ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
+ target_compile_options("${target}" PRIVATE "-fno-exceptions")
+ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+ target_compile_options("${target}" PRIVATE "-fno-exceptions")
+ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
+ target_compile_options("${target}" PRIVATE "-fno-exceptions")
+ endif()
+endfunction()
+
+# This is the main entry function for creating a Qt module, that typically
+# consists of a library, public header files, private header files and configurable
+# features.
+#
+# A CMake target with the specified target parameter is created. If the current source
+# directory has a configure.cmake file, then that is also processed for feature definition
+# and testing. Any features defined as well as any features coming from dependencies to
+# this module are imported into the scope of the calling feature.
+#
+# Target is without leading "Qt". So e.g. the "QtCore" module has the target "Core".
+function(add_qt_module target)
+ qt_internal_module_info(module "${target}")
+
+ # Process arguments:
+ qt_parse_all_arguments(arg "add_qt_module"
+ "NO_MODULE_HEADERS;STATIC;DISABLE_TOOLS_EXPORT;EXCEPTIONS;INTERNAL_MODULE;NO_SYNC_QT;NO_PRIVATE_MODULE;HEADER_MODULE"
+ "CONFIG_MODULE_NAME;PRECOMPILED_HEADER"
+ "${__default_private_args};${__default_public_args};QMAKE_MODULE_CONFIG;EXTRA_CMAKE_FILES;EXTRA_CMAKE_INCLUDES;NO_PCH_SOURCES" ${ARGN})
+
+ if(NOT DEFINED arg_CONFIG_MODULE_NAME)
+ set(arg_CONFIG_MODULE_NAME "${module_lower}")
+ endif()
+
+ qt_internal_add_qt_repo_known_module("${target}")
+
+ ### Define Targets:
+ if(${arg_HEADER_MODULE})
+ add_library("${target}" INTERFACE)
+ elseif(${arg_STATIC})
+ add_library("${target}" STATIC)
+ elseif(${QT_BUILD_SHARED_LIBS})
+ add_library("${target}" SHARED)
+ else()
+ add_library("${target}" STATIC)
+ endif()
+
+ if (ANDROID)
+ qt_android_apply_arch_suffix("${target}")
+ endif()
+ qt_internal_add_target_aliases("${target}")
+
+ # Add _private target to link against the private headers:
+ if(NOT ${arg_NO_PRIVATE_MODULE})
+ set(target_private "${target}Private")
+ add_library("${target_private}" INTERFACE)
+ qt_internal_add_target_aliases("${target_private}")
+ endif()
+
+ # Module headers:
+ if(${arg_NO_MODULE_HEADERS} OR ${arg_NO_SYNC_QT})
+ set_target_properties("${target}" PROPERTIES INTERFACE_MODULE_HAS_HEADERS OFF)
+ else()
+ # Use QT_BUILD_DIR for the syncqt call.
+ # So we either write the generated files into the qtbase non-prefix build root, or the
+ # module specific build root.
+ qt_ensure_sync_qt()
+ set(syncqt_full_command "${HOST_PERL}" -w "${QT_SYNCQT}"
+ -quiet
+ -check-includes
+ -module "${module}"
+ -version "${PROJECT_VERSION}"
+ -outdir "${QT_BUILD_DIR}"
+ -builddir "${PROJECT_BINARY_DIR}"
+ "${PROJECT_SOURCE_DIR}")
+ execute_process(COMMAND ${syncqt_full_command})
+
+ set_target_properties("${target}" PROPERTIES INTERFACE_MODULE_HAS_HEADERS ON)
+
+ ### FIXME: Can we replace headers.pri?
+ qt_read_headers_pri("${target}" "module_headers")
+ set_property(TARGET "${target}" APPEND PROPERTY PUBLIC_HEADER "${module_headers_public}")
+ set_property(TARGET "${target}" APPEND PROPERTY PUBLIC_HEADER "${module_include_dir}/${module}Depends")
+ set_property(TARGET "${target}" APPEND PROPERTY PRIVATE_HEADER "${module_headers_private}")
+ if (NOT ${arg_HEADER_MODULE})
+ set_property(TARGET "${target}" PROPERTY MODULE_HEADER "${module_include_dir}/${module}")
+ endif()
+
+ if(module_headers_qpa)
+ qt_install(FILES ${module_headers_qpa} DESTINATION ${INSTALL_INCLUDEDIR}/${module}/${PROJECT_VERSION}/${module}/qpa)
+ endif()
+ endif()
+
+ if(NOT arg_HEADER_MODULE)
+ # Plugin types associated to a module
+ if(NOT "x${arg_PLUGIN_TYPES}" STREQUAL "x")
+ # Reset the variable containing the list of plugins for the given plugin type
+ foreach(plugin_type ${arg_PLUGIN_TYPES})
+ # Used to handle some edge cases such as platforms/darwin
+ string(REGEX REPLACE "[-/]" "_" plugin_type "${plugin_type}")
+
+ set_property(TARGET "${target}" APPEND PROPERTY MODULE_PLUGIN_TYPES "${plugin_type}")
+ qt_internal_add_qt_repo_known_plugin_types("${plugin_type}")
+ endforeach()
+ endif()
+
+ set_target_properties("${target}" PROPERTIES
+ LIBRARY_OUTPUT_DIRECTORY "${QT_BUILD_DIR}/${INSTALL_LIBDIR}"
+ RUNTIME_OUTPUT_DIRECTORY "${QT_BUILD_DIR}/${INSTALL_BINDIR}"
+ RUNTIME_OUTPUT_DIRECTORY_RELEASE "${QT_BUILD_DIR}/${INSTALL_BINDIR}"
+ RUNTIME_OUTPUT_DIRECTORY_DEBUG "${QT_BUILD_DIR}/${INSTALL_BINDIR}"
+ ARCHIVE_OUTPUT_DIRECTORY "${QT_BUILD_DIR}/${INSTALL_LIBDIR}"
+ VERSION ${PROJECT_VERSION}
+ SOVERSION ${PROJECT_VERSION_MAJOR}
+ OUTPUT_NAME "${INSTALL_CMAKE_NAMESPACE}${target}"
+ )
+ endif()
+
+ qt_internal_library_deprecation_level(deprecation_define)
+
+ if(NOT arg_HEADER_MODULE)
+ qt_autogen_tools_initial_setup(${target})
+ endif()
+
+ set(private_includes
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
+ ${arg_INCLUDE_DIRECTORIES}
+ )
+
+ set(public_includes "")
+
+ # Handle cases like QmlDevTools which do not have their own headers, but rather borrow them
+ # from another module.
+ if(NOT arg_NO_SYNC_QT AND NOT arg_NO_MODULE_HEADERS)
+ list(APPEND private_includes
+ "$<BUILD_INTERFACE:${module_include_dir}/${PROJECT_VERSION}>"
+ "$<BUILD_INTERFACE:${module_include_dir}/${PROJECT_VERSION}/${module}>")
+
+ list(APPEND public_includes
+ # For the syncqt headers
+ "$<BUILD_INTERFACE:${module_repo_include_dir}>"
+ "$<BUILD_INTERFACE:${module_include_dir}>")
+ endif()
+
+ if(NOT arg_NO_MODULE_HEADERS AND NOT arg_NO_SYNC_QT)
+ # For the syncqt headers
+ list(APPEND public_includes "$<INSTALL_INTERFACE:include/${module}>")
+ endif()
+ list(APPEND public_includes ${arg_PUBLIC_INCLUDE_DIRECTORIES})
+
+ set(header_module)
+ if(arg_HEADER_MODULE)
+ set(header_module "HEADER_MODULE")
+ endif()
+
+ extend_target("${target}"
+ ${header_module}
+ SOURCES ${arg_SOURCES}
+ INCLUDE_DIRECTORIES
+ ${private_includes}
+ PUBLIC_INCLUDE_DIRECTORIES
+ ${public_includes}
+ PUBLIC_DEFINES
+ ${arg_PUBLIC_DEFINES}
+ QT_${module_define}_LIB
+ DEFINES
+ ${arg_DEFINES}
+ QT_NO_CAST_TO_ASCII QT_ASCII_CAST_WARNINGS
+ QT_MOC_COMPAT #we don't need warnings from calling moc code in our generated code
+ QT_USE_QSTRINGBUILDER
+ QT_DEPRECATED_WARNINGS
+ QT_BUILDING_QT
+ QT_BUILD_${module_define}_LIB ### FIXME: use QT_BUILD_ADDON for Add-ons or remove if we don't have add-ons anymore
+ "${deprecation_define}"
+ PUBLIC_LIBRARIES ${arg_PUBLIC_LIBRARIES}
+ LIBRARIES ${arg_LIBRARIES} Qt::PlatformModuleInternal
+ FEATURE_DEPENDENCIES ${arg_FEATURE_DEPENDENCIES}
+ DBUS_ADAPTOR_SOURCES ${arg_DBUS_ADAPTOR_SOURCES}
+ DBUS_ADAPTOR_FLAGS ${arg_DBUS_ADAPTOR_FLAGS}
+ DBUS_INTERFACE_SOURCES ${arg_DBUS_INTERFACE_SOURCES}
+ DBUS_INTERFACE_FLAGS ${arg_DBUS_INTERFACE_FLAGS}
+ COMPILE_OPTIONS ${arg_COMPILE_OPTIONS}
+ PUBLIC_COMPILE_OPTIONS ${arg_PUBLIC_COMPILE_OPTIONS}
+ LINK_OPTIONS ${arg_LINK_OPTIONS}
+ PUBLIC_LINK_OPTIONS ${arg_PUBLIC_LINK_OPTIONS}
+ MOC_OPTIONS ${arg_MOC_OPTIONS}
+ ENABLE_AUTOGEN_TOOLS ${arg_ENABLE_AUTOGEN_TOOLS}
+ DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS}
+ PRECOMPILED_HEADER ${arg_PRECOMPILED_HEADER}
+ NO_PCH_SOURCES ${arg_NO_PCH_SOURCES}
+ )
+
+ if(NOT ${arg_EXCEPTIONS} AND NOT ${arg_HEADER_MODULE})
+ qt_internal_set_no_exceptions_flags("${target}")
+ endif()
+
+ set(configureFile "${CMAKE_CURRENT_SOURCE_DIR}/configure.cmake")
+ if(EXISTS "${configureFile}")
+ qt_feature_module_begin(
+ LIBRARY "${target}"
+ PUBLIC_FILE "qt${arg_CONFIG_MODULE_NAME}-config.h"
+ PRIVATE_FILE "qt${arg_CONFIG_MODULE_NAME}-config_p.h"
+ PUBLIC_DEPENDENCIES ${arg_FEATURE_DEPENDENCIES}
+ PRIVATE_DEPENDENCIES ${arg_FEATURE_DEPENDENCIES}
+ )
+ include(${configureFile})
+ qt_feature_module_end("${target}")
+
+ set_property(TARGET "${target}" APPEND PROPERTY PUBLIC_HEADER "${CMAKE_CURRENT_BINARY_DIR}/qt${arg_CONFIG_MODULE_NAME}-config.h")
+ set_property(TARGET "${target}" APPEND PROPERTY PRIVATE_HEADER "${CMAKE_CURRENT_BINARY_DIR}/qt${arg_CONFIG_MODULE_NAME}-config_p.h")
+ endif()
+
+ if(DEFINED module_headers_private)
+ qt_internal_add_linker_version_script("${target}" PRIVATE_HEADERS ${module_headers_private} ${module_headers_qpa})
+ else()
+ qt_internal_add_linker_version_script("${target}")
+ endif()
+
+ # Handle injections. Aka create forwarding headers for certain headers that have been
+ # automatically generated in the build dir (for example qconfig.h, qtcore-config.h,
+ # qvulkanfunctions.h, etc)
+ # module_headers_injections come from the qt_read_headers_pri() call.
+ # extra_library_injections come from the qt_feature_module_end() call.
+ set(final_injections "")
+ if(module_headers_injections)
+ string(APPEND final_injections "${module_headers_injections} ")
+ endif()
+ if(extra_library_injections)
+ string(APPEND final_injections "${extra_library_injections} ")
+ endif()
+
+ if(final_injections)
+ qt_install_injections("${module}" "${QT_BUILD_DIR}" "${QT_INSTALL_DIR}" ${final_injections})
+ endif()
+
+ # Handle creation of cmake files for consumers of find_package().
+ set(path_suffix "${INSTALL_CMAKE_NAMESPACE}${target}")
+ qt_path_join(config_build_dir ${QT_CONFIG_BUILD_DIR} ${path_suffix})
+ qt_path_join(config_install_dir ${QT_CONFIG_INSTALL_DIR} ${path_suffix})
+
+ set(extra_cmake_files)
+ set(extra_cmake_includes)
+ if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/${INSTALL_CMAKE_NAMESPACE}${target}Macros.cmake")
+ list(APPEND extra_cmake_files "${CMAKE_CURRENT_LIST_DIR}/${INSTALL_CMAKE_NAMESPACE}${target}Macros.cmake")
+ list(APPEND extra_cmake_includes "${INSTALL_CMAKE_NAMESPACE}${target}Macros.cmake")
+ endif()
+ if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigExtras.cmake.in")
+ configure_file("${CMAKE_CURRENT_LIST_DIR}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigExtras.cmake.in"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigExtras.cmake"
+ @ONLY)
+ list(APPEND extra_cmake_files "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigExtras.cmake")
+ list(APPEND extra_cmake_includes "${INSTALL_CMAKE_NAMESPACE}${target}ConfigExtras.cmake")
+ endif()
+
+ foreach(cmake_file IN LISTS arg_EXTRA_CMAKE_FILES)
+ get_filename_component(basename ${cmake_file} NAME)
+ file(COPY ${cmake_file} DESTINATION ${config_build_dir})
+ list(APPEND extra_cmake_files "${config_build_dir}/${basename}")
+ endforeach()
+ list(APPEND extra_cmake_includes ${arg_EXTRA_CMAKE_INCLUDES})
+
+ set(extra_cmake_code "")
+
+ if(target STREQUAL Core)
+ # Propagate non-build related variables that are needed for consuming Qt packages.
+ # Do this in CoreConfig instead of Qt6Config, so that consumers can also use
+ # find_package(Qt6Core) instead of find_package(Qt6 COMPONENTS Core)
+ string(APPEND extra_cmake_code "
+set(QT_CMAKE_EXPORT_NAMESPACE ${QT_CMAKE_EXPORT_NAMESPACE})")
+ endif()
+
+ configure_package_config_file(
+ "${QT_CMAKE_DIR}/QtModuleConfig.cmake.in"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}Config.cmake"
+ INSTALL_DESTINATION "${config_install_dir}"
+ )