summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ninja-build.yml9
-rw-r--r--.gitignore2
-rw-r--r--.qmake.conf9
-rw-r--r--LICENSE.FDL23
-rw-r--r--bin/qmake-and-qtpaths-wrapper.bat.in2
-rwxr-xr-x[-rw-r--r--]bin/qmake-and-qtpaths-wrapper.in (renamed from bin/qmake-wrapper-for-target.in)2
-rw-r--r--bin/qmake-wrapper-for-target.bat.in2
-rw-r--r--cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake48
-rw-r--r--cmake/FindWrapVulkanHeaders.cmake12
-rw-r--r--cmake/Qt3rdPartyLibraryHelpers.cmake7
-rw-r--r--cmake/QtAutoDetect.cmake68
-rw-r--r--cmake/QtAutogenHelpers.cmake2
-rw-r--r--cmake/QtBaseConfigureTests.cmake25
-rw-r--r--cmake/QtBaseGlobalTargets.cmake26
-rw-r--r--cmake/QtBuild.cmake23
-rw-r--r--cmake/QtBuildInformation.cmake4
-rw-r--r--cmake/QtBuildInternals/QtBuildInternalsConfig.cmake26
-rw-r--r--cmake/QtBuildInternalsExtra.cmake.in4
-rw-r--r--cmake/QtCMakeHelpers.cmake22
-rw-r--r--cmake/QtCMakePackageVersionFile.cmake.in55
-rw-r--r--cmake/QtCMakeVersionHelpers.cmake13
-rw-r--r--cmake/QtCompilerFlags.cmake14
-rw-r--r--cmake/QtCompilerOptimization.cmake59
-rw-r--r--cmake/QtConfig.cmake.in3
-rw-r--r--cmake/QtDocsHelpers.cmake18
-rw-r--r--cmake/QtExecutableHelpers.cmake8
-rw-r--r--cmake/QtFeature.cmake58
-rw-r--r--cmake/QtFindPackageHelpers.cmake61
-rw-r--r--cmake/QtFlagHandlingHelpers.cmake10
-rw-r--r--cmake/QtFrameworkHelpers.cmake1
-rw-r--r--cmake/QtHeadersClean.cmake65
-rw-r--r--cmake/QtInstallHelpers.cmake38
-rw-r--r--cmake/QtInternalTargets.cmake51
-rw-r--r--cmake/QtLalrHelpers.cmake11
-rw-r--r--cmake/QtModuleConfig.cmake.in2
-rw-r--r--cmake/QtModuleHelpers.cmake22
-rw-r--r--cmake/QtPlatformAndroid.cmake2
-rw-r--r--cmake/QtPlatformSupport.cmake4
-rw-r--r--cmake/QtPluginHelpers.cmake7
-rw-r--r--cmake/QtPostProcessHelpers.cmake29
-rw-r--r--cmake/QtPriHelpers.cmake149
-rw-r--r--cmake/QtProcessConfigureArgs.cmake39
-rw-r--r--cmake/QtPublicWasmToolchainHelpers.cmake71
-rw-r--r--cmake/QtQmakeHelpers.cmake73
-rw-r--r--cmake/QtSetup.cmake3
-rw-r--r--cmake/QtTargetHelpers.cmake32
-rw-r--r--cmake/QtTestHelpers.cmake8
-rw-r--r--cmake/QtToolHelpers.cmake93
-rw-r--r--cmake/QtToolchainHelpers.cmake61
-rw-r--r--cmake/QtWasmHelpers.cmake17
-rw-r--r--cmake/QtWriteArgsFile.cmake2
-rw-r--r--cmake/ios/MacOSXBundleInfo.plist.in2
-rw-r--r--cmake/macos/MacOSXBundleInfo.plist.in2
-rw-r--r--cmake/platforms/Platform/Integrity.cmake8
-rw-r--r--cmake/qt.toolchain.cmake.in86
-rw-r--r--cmake/tests/features/CMakeLists.txt2
-rw-r--r--cmake/tests/qt_make_output_file/CMakeLists.txt2
-rw-r--r--coin/instructions/cmake_documentation_build.yaml23
-rw-r--r--coin/instructions/cmake_run_ctest_enforce_exit_code.yaml42
-rw-r--r--coin/instructions/cmake_setup_running_qnxqemu_tests_env_vars.yaml40
-rw-r--r--coin/instructions/cmake_setup_running_tests_env_vars.yaml16
-rw-r--r--coin/instructions/coin_module_test_docs.yaml36
-rw-r--r--coin/instructions/coin_module_test_qnx_start_emulator.yaml90
-rw-r--r--coin/instructions/coin_module_test_template_common.yaml1
-rw-r--r--coin/instructions/coin_module_test_template_v2.yaml2
-rw-r--r--coin/instructions/coin_module_test_template_v3.yaml2
-rw-r--r--coin/instructions/coin_qtbase_build_template_v2.yaml2
-rw-r--r--coin/instructions/coin_qtbase_test_docs.yaml39
-rw-r--r--coin/instructions/prepare_building_env.yaml75
-rw-r--r--coin/module_config.yaml1
-rw-r--r--conanfile.py144
-rw-r--r--config.tests/arch/CMakeLists.txt6
-rw-r--r--config.tests/precompile_header/CMakeLists.txt2
-rw-r--r--config.tests/separate_debug_info/CMakeLists.txt3
-rw-r--r--config.tests/static_link_order/CMakeLists.txt2
-rw-r--r--config.tests/x86_simd/CMakeLists.txt2
-rw-r--r--config_help.txt2
-rw-r--r--configure.cmake6
-rw-r--r--doc/global/externalsites/external-resources.qdoc4
-rw-r--r--doc/global/macros.qdocconf10
-rw-r--r--doc/global/qt-cpp-defines.qdocconf1
-rw-r--r--doc/global/template/style/offline.css35
-rw-r--r--doc/global/template/style/online.css19
-rw-r--r--examples/dbus/chat/chat.pro2
-rw-r--r--examples/dbus/remotecontrolledcar/car/car.pro2
-rw-r--r--examples/gui/rasterwindow/rasterwindow.h3
-rw-r--r--examples/network/multistreamclient/timeconsumer.cpp2
-rw-r--r--examples/network/multistreamserver/timeprovider.cpp2
-rw-r--r--examples/widgets/draganddrop/puzzle/puzzlewidget.cpp4
-rw-r--r--examples/widgets/itemviews/puzzle/puzzlewidget.cpp4
-rw-r--r--examples/widgets/painting/affine/xform.cpp93
-rw-r--r--examples/widgets/painting/affine/xform.h16
-rw-r--r--examples/widgets/painting/deform/pathdeform.cpp2
-rw-r--r--examples/widgets/painting/shared/arthurwidgets.cpp30
-rw-r--r--examples/widgets/painting/shared/arthurwidgets.h18
-rw-r--r--examples/widgets/painting/shared/hoverpoints.cpp368
-rw-r--r--examples/widgets/painting/shared/hoverpoints.h28
-rw-r--r--examples/widgets/richtext/textedit/example.html9
-rw-r--r--examples/widgets/tools/echoplugin/echowindow/CMakeLists.txt1
-rw-r--r--examples/widgets/tools/plugandpaint/app/CMakeLists.txt1
-rw-r--r--examples/widgets/tools/styleplugin/stylewindow/CMakeLists.txt1
-rw-r--r--examples/widgets/tools/treemodelcompleter/mainwindow.cpp5
-rw-r--r--examples/widgets/widgets/tetrix/tetrixwindow.cpp9
-rwxr-xr-xlibexec/syncqt.pl2
-rw-r--r--mkspecs/common/macx.conf2
-rw-r--r--mkspecs/common/msvc-based-version.conf8
-rw-r--r--mkspecs/common/msvc-version.conf13
-rw-r--r--mkspecs/cygwin-g++/qplatformdefs.h2
-rw-r--r--mkspecs/features/android/android_deployment_settings.prf10
-rw-r--r--mkspecs/features/android/sdk.prf2
-rw-r--r--mkspecs/features/mac/default_post.prf2
-rw-r--r--mkspecs/features/qt_docs.prf2
-rw-r--r--mkspecs/features/qt_module.prf7
-rw-r--r--mkspecs/features/uikit/xcodebuild.mk6
-rw-r--r--mkspecs/features/wasm/wasm.prf9
-rw-r--r--mkspecs/win32-g++/qplatformdefs.h2
-rw-r--r--qmake/CMakeLists.txt5
-rw-r--r--qmake/configure.cmake12
-rw-r--r--qmake/doc/qmake.qdocconf3
-rw-r--r--qmake/generators/makefiledeps.cpp72
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp3
-rw-r--r--qmake/generators/win32/msvc_objectmodel.h3
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp110
-rw-r--r--qmake/library/ioutils.cpp2
-rw-r--r--qmake/library/qmakebuiltins.cpp19
-rw-r--r--qmake/library/qmakeevaluator.cpp2
-rw-r--r--qmake/library/qmakeglobals.cpp2
-rw-r--r--qmake/qmakelibraryinfo.cpp27
-rw-r--r--qt_cmdline.cmake18
-rw-r--r--src/3rdparty/gradle/LICENSE420
-rw-r--r--src/3rdparty/gradle/LICENSE-GRADLEW.txt965
-rw-r--r--src/3rdparty/gradle/gradle.properties5
-rw-r--r--src/3rdparty/gradle/gradle/wrapper/gradle-wrapper.jarbin59203 -> 59536 bytes
-rw-r--r--src/3rdparty/gradle/gradle/wrapper/gradle-wrapper.properties2
-rwxr-xr-xsrc/3rdparty/gradle/gradlew259
-rw-r--r--src/3rdparty/gradle/gradlew.bat2
-rw-r--r--src/3rdparty/gradle/qt_attribution.json7
-rw-r--r--src/3rdparty/harfbuzz-ng/NEWS70
-rw-r--r--src/3rdparty/harfbuzz-ng/qt_attribution.json9
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-algs.hh34
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-bit-page.hh203
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-bit-set-invertible.hh354
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-bit-set.hh808
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-buffer-deserialize-json.hh1189
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-buffer-deserialize-text.hh1437
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-buffer.cc22
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-common.cc11
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-common.h14
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-deprecated.h3
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ft.cc24
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-glib.cc12
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-icu.cc12
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-map.cc5
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-map.hh2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-object.hh17
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-cmap-table.hh82
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-color-cpal-table.hh13
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-font.cc12
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsubgpos.hh35
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-map.cc25
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-name.cc9
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-post-table-v2subset.hh24
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic-joining-list.hh9
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic-table.hh38
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic-table.cc42
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-khmer-machine.hh665
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-use-machine.hh1036
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-use-table.hh76
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-vowel-constraints.cc4
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex.hh9
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape.cc17
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-tag-table.hh27
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-serialize.hh15
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-set.cc25
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-set.h3
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-set.hh925
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-shape-plan.cc4
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-shape.cc12
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-shaper.cc12
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-style.cc64
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-style.h42
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset-input.cc267
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset-input.hh47
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset-plan.cc171
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset.cc8
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset.h107
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ucd-table.hh6580
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ucd.cc10
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-unicode-emoji-table.hh8
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-uniscribe.cc12
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-version.h6
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb.hh21
-rw-r--r--src/3rdparty/libjpeg/COPYRIGHT.txt4
-rw-r--r--src/3rdparty/pcre2/AUTHORS2
-rw-r--r--src/3rdparty/pcre2/LICENCE2
-rw-r--r--src/3rdparty/pcre2/qt_attribution.json8
-rw-r--r--src/3rdparty/pcre2/src/pcre2.h12
-rw-r--r--src/3rdparty/pcre2/src/pcre2_compile.c34
-rw-r--r--src/3rdparty/pcre2/src/pcre2_dfa_match.c69
-rw-r--r--src/3rdparty/pcre2/src/pcre2_error.c3
-rw-r--r--src/3rdparty/pcre2/src/pcre2_jit_compile.c51
-rw-r--r--src/3rdparty/pcre2/src/pcre2_jit_simd_inc.h21
-rw-r--r--src/3rdparty/pcre2/src/pcre2_match.c73
-rw-r--r--src/3rdparty/pcre2/src/pcre2_tables.c347
-rw-r--r--src/3rdparty/pcre2/src/pcre2_ucd.c6060
-rw-r--r--src/3rdparty/pcre2/src/pcre2_ucp.h8
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitConfigInternal.h12
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitLir.c25
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitLir.h76
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativeARM_32.c23
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativeARM_64.c21
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativeARM_T2_32.c21
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_32.c2
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_64.c2
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_common.c16
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativePPC_32.c26
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativePPC_64.c32
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativePPC_common.c93
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativeS390X.c1737
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_32.c3
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_common.c18
-rw-r--r--src/3rdparty/pcre2/src/sljit/sljitNativeX86_common.c2
-rw-r--r--src/3rdparty/tinycbor/qt_attribution.json4
-rw-r--r--src/3rdparty/wasm/qt_attribution.json1
-rw-r--r--src/3rdparty/xcb/README50
-rw-r--r--src/3rdparty/xcb/include/xcb/touchpad-gestures-h.patch207
-rw-r--r--src/3rdparty/xcb/include/xcb/xinput.h154
-rw-r--r--src/3rdparty/xcb/libxcb/touchpad-gestures-c.patch78
-rw-r--r--src/3rdparty/xcb/libxcb/xinput-device-class-sizeof.patch38
-rw-r--r--src/3rdparty/xcb/libxcb/xinput.c72
-rw-r--r--src/android/jar/build.gradle13
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java19
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtNative.java28
-rw-r--r--src/android/java/src/org/qtproject/qt/android/bindings/QtActivity.java11
-rw-r--r--src/android/java/src/org/qtproject/qt/android/bindings/QtLoader.java12
-rw-r--r--src/android/templates/AndroidManifest.xml53
-rw-r--r--src/android/templates/build.gradle17
-rw-r--r--src/android/templates/doc/src/android-manifest-file-configuration.qdoc290
-rw-r--r--src/concurrent/doc/qtconcurrent.qdocconf3
-rw-r--r--src/concurrent/doc/src/qtconcurrent-index.qdoc2
-rw-r--r--src/concurrent/qtconcurrentfunctionwrappers.h2
-rw-r--r--src/concurrent/qtconcurrentthreadengine.cpp2
-rw-r--r--src/corelib/CMakeLists.txt95
-rw-r--r--src/corelib/Qt6AndroidMacros.cmake224
-rw-r--r--src/corelib/Qt6CTestMacros.cmake4
-rw-r--r--src/corelib/Qt6CoreConfigExtras.cmake.in3
-rw-r--r--src/corelib/Qt6CoreMacros.cmake171
-rw-r--r--src/corelib/QtCore.dynlist2
-rw-r--r--src/corelib/animation/qabstractanimation.cpp9
-rw-r--r--src/corelib/animation/qabstractanimation_p.h1
-rw-r--r--src/corelib/animation/qanimationgroup.cpp2
-rw-r--r--src/corelib/compat/removed_api.cpp7
-rw-r--r--src/corelib/configure.cmake2
-rw-r--r--src/corelib/doc/qtcore.qdocconf7
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_global_qglobal.cpp18
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_kernel_qproperty.cpp37
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_thread_qfuture.cpp104
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_tools_qpoint.cpp4
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_tools_qscopedpointer.cpp2
-rw-r--r--src/corelib/doc/snippets/code/src_gui_dialogs_qmessagebox.cpp4
-rw-r--r--src/corelib/doc/snippets/qmetatype/registerConverters.cpp101
-rw-r--r--src/corelib/doc/src/cmake/cmake-commands.qdoc40
-rw-r--r--src/corelib/doc/src/cmake/cmake-properties.qdoc39
-rw-r--r--src/corelib/doc/src/cmake/cmake-variables.qdoc72
-rw-r--r--src/corelib/doc/src/cmake/qt_add_big_resources.qdoc8
-rw-r--r--src/corelib/doc/src/cmake/qt_add_binary_resources.qdoc6
-rw-r--r--src/corelib/doc/src/cmake/qt_add_executable.qdoc10
-rw-r--r--src/corelib/doc/src/cmake/qt_add_library.qdoc99
-rw-r--r--src/corelib/doc/src/cmake/qt_add_plugin.qdoc88
-rw-r--r--src/corelib/doc/src/cmake/qt_add_resources.qdoc6
-rw-r--r--src/corelib/doc/src/cmake/qt_allow_non_utf8_sources.qdoc56
-rw-r--r--src/corelib/doc/src/cmake/qt_android_add_apk_target.qdoc6
-rw-r--r--src/corelib/doc/src/cmake/qt_android_apply_arch_suffix.qdoc6
-rw-r--r--src/corelib/doc/src/cmake/qt_android_generate_deployment_settings.qdoc6
-rw-r--r--src/corelib/doc/src/cmake/qt_disable_unicode_defines.qdoc56
-rw-r--r--src/corelib/doc/src/cmake/qt_extract_metatypes.qdoc78
-rw-r--r--src/corelib/doc/src/cmake/qt_finalize_target.qdoc74
-rw-r--r--src/corelib/doc/src/cmake/qt_generate_moc.qdoc6
-rw-r--r--src/corelib/doc/src/cmake/qt_import_plugins.qdoc6
-rw-r--r--src/corelib/doc/src/cmake/qt_set_finalizer_mode.qdoc113
-rw-r--r--src/corelib/doc/src/cmake/qt_wrap_cpp.qdoc7
-rw-r--r--src/corelib/doc/src/containers.qdoc2
-rw-r--r--src/corelib/doc/src/includes/cmake-find-package-core.qdocinc5
-rw-r--r--src/corelib/doc/src/objectmodel/bindableproperties.qdoc2
-rw-r--r--src/corelib/doc/src/objectmodel/properties.qdoc17
-rw-r--r--src/corelib/doc/src/qt6-changes.qdoc36
-rw-r--r--src/corelib/doc/src/qtcore-index.qdoc6
-rw-r--r--src/corelib/global/minimum-linux.S81
-rw-r--r--src/corelib/global/minimum-linux_p.h27
-rw-r--r--src/corelib/global/q20algorithm.h4
-rw-r--r--src/corelib/global/q20functional.h4
-rw-r--r--src/corelib/global/q20iterator.h (renamed from src/corelib/kernel/qapplicationpermission.h)65
-rw-r--r--src/corelib/global/qcompilerdetection.h44
-rw-r--r--src/corelib/global/qconfig-bootstrapped.h2
-rw-r--r--src/corelib/global/qconfig.cpp.in19
-rw-r--r--src/corelib/global/qendian.h4
-rw-r--r--src/corelib/global/qfloat16.cpp42
-rw-r--r--src/corelib/global/qfloat16.h2
-rw-r--r--src/corelib/global/qfloat16_f16c.c88
-rw-r--r--src/corelib/global/qglobal.cpp174
-rw-r--r--src/corelib/global/qglobal.h29
-rw-r--r--src/corelib/global/qglobal_p.h5
-rw-r--r--src/corelib/global/qglobalstatic.h43
-rw-r--r--src/corelib/global/qlibraryinfo.cpp175
-rw-r--r--src/corelib/global/qlibraryinfo_p.h11
-rw-r--r--src/corelib/global/qlogging.cpp38
-rw-r--r--src/corelib/global/qnamespace.qdoc8
-rw-r--r--src/corelib/global/qnativeinterface.h33
-rw-r--r--src/corelib/global/qnativeinterface_p.h99
-rw-r--r--src/corelib/global/qoperatingsystemversion.cpp125
-rw-r--r--src/corelib/global/qoperatingsystemversion.h211
-rw-r--r--src/corelib/global/qoperatingsystemversion_darwin.mm10
-rw-r--r--src/corelib/global/qoperatingsystemversion_win.cpp24
-rw-r--r--src/corelib/global/qprocessordetection.h4
-rw-r--r--src/corelib/global/qrandom.cpp4
-rw-r--r--src/corelib/global/qsimd_p.h5
-rw-r--r--src/corelib/global/qt_pch.h2
-rw-r--r--src/corelib/global/qt_windows.h29
-rw-r--r--src/corelib/global/qtypeinfo.h2
-rw-r--r--src/corelib/global/qversiontagging.cpp1
-rw-r--r--src/corelib/io/qabstractfileengine.cpp57
-rw-r--r--src/corelib/io/qabstractfileengine_p.h7
-rw-r--r--src/corelib/io/qdebug.cpp32
-rw-r--r--src/corelib/io/qdebug.h47
-rw-r--r--src/corelib/io/qdir.cpp41
-rw-r--r--src/corelib/io/qdir.h1
-rw-r--r--src/corelib/io/qfile.cpp2
-rw-r--r--src/corelib/io/qfiledevice_p.h64
-rw-r--r--src/corelib/io/qfileinfo.cpp10
-rw-r--r--src/corelib/io/qfilesystemengine_p.h6
-rw-r--r--src/corelib/io/qfilesystemengine_unix.cpp57
-rw-r--r--src/corelib/io/qfilesystemengine_win.cpp852
-rw-r--r--src/corelib/io/qfilesystemiterator_win.cpp2
-rw-r--r--src/corelib/io/qfilesystemwatcher_win.cpp3
-rw-r--r--src/corelib/io/qfsfileengine.cpp6
-rw-r--r--src/corelib/io/qfsfileengine_p.h5
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp2
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp4
-rw-r--r--src/corelib/io/qiodevice.cpp2
-rw-r--r--src/corelib/io/qiodevicebase.h2
-rw-r--r--src/corelib/io/qlockfile_win.cpp17
-rw-r--r--src/corelib/io/qloggingcategory.h81
-rw-r--r--src/corelib/io/qloggingregistry.cpp38
-rw-r--r--src/corelib/io/qloggingregistry_p.h33
-rw-r--r--src/corelib/io/qprocess.cpp60
-rw-r--r--src/corelib/io/qprocess.h4
-rw-r--r--src/corelib/io/qprocess_p.h2
-rw-r--r--src/corelib/io/qprocess_win.cpp107
-rw-r--r--src/corelib/io/qresource.cpp71
-rw-r--r--src/corelib/io/qresource_p.h20
-rw-r--r--src/corelib/io/qsettings.cpp2
-rw-r--r--src/corelib/io/qstandardpaths_win.cpp9
-rw-r--r--src/corelib/io/qtemporarydir.cpp14
-rw-r--r--src/corelib/io/qtemporaryfile.cpp4
-rw-r--r--src/corelib/io/qurl.cpp14
-rw-r--r--src/corelib/io/qurl.h2
-rw-r--r--src/corelib/io/qurlidna.cpp2
-rw-r--r--src/corelib/io/qwindowspipereader.cpp24
-rw-r--r--src/corelib/io/qwindowspipereader_p.h1
-rw-r--r--src/corelib/io/qwindowspipewriter.cpp9
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel.cpp9
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel_p.h70
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.cpp23
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.h2
-rw-r--r--src/corelib/itemmodels/qsortfilterproxymodel.cpp3
-rw-r--r--src/corelib/kernel/qapplicationstatic.h102
-rw-r--r--src/corelib/kernel/qapplicationstatic.qdoc98
-rw-r--r--src/corelib/kernel/qbasictimer.cpp2
-rw-r--r--src/corelib/kernel/qbindingstorage.h117
-rw-r--r--src/corelib/kernel/qcfsocketnotifier.cpp2
-rw-r--r--src/corelib/kernel/qcore_mac_p.h2
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp57
-rw-r--r--src/corelib/kernel/qcoreapplication.h4
-rw-r--r--src/corelib/kernel/qcoreapplication_p.h11
-rw-r--r--src/corelib/kernel/qcoreapplication_platform.h2
-rw-r--r--src/corelib/kernel/qcoreevent.cpp4
-rw-r--r--src/corelib/kernel/qdeadlinetimer.cpp2
-rw-r--r--src/corelib/kernel/qeventdispatcher_cf.mm2
-rw-r--r--src/corelib/kernel/qeventdispatcher_wasm.cpp75
-rw-r--r--src/corelib/kernel/qeventdispatcher_wasm_p.h2
-rw-r--r--src/corelib/kernel/qeventloop.cpp5
-rw-r--r--src/corelib/kernel/qeventloop.h3
-rw-r--r--src/corelib/kernel/qfunctions_winrt_p.h27
-rw-r--r--src/corelib/kernel/qjnienvironment.cpp7
-rw-r--r--src/corelib/kernel/qmath.h2
-rw-r--r--src/corelib/kernel/qmetaobject.cpp4
-rw-r--r--src/corelib/kernel/qmetatype.cpp44
-rw-r--r--src/corelib/kernel/qmetatype.h44
-rw-r--r--src/corelib/kernel/qmetatype_p.h8
-rw-r--r--src/corelib/kernel/qmimedata.cpp2
-rw-r--r--src/corelib/kernel/qobject.cpp61
-rw-r--r--src/corelib/kernel/qobject.h7
-rw-r--r--src/corelib/kernel/qobject_p.h4
-rw-r--r--src/corelib/kernel/qobjectdefs_impl.h4
-rw-r--r--src/corelib/kernel/qproperty.cpp215
-rw-r--r--src/corelib/kernel/qproperty.h66
-rw-r--r--src/corelib/kernel/qproperty_p.h216
-rw-r--r--src/corelib/kernel/qpropertyprivate.h17
-rw-r--r--src/corelib/kernel/qtimer.cpp2
-rw-r--r--src/corelib/kernel/qtmetamacros.h11
-rw-r--r--src/corelib/kernel/qtranslator.cpp2
-rw-r--r--src/corelib/kernel/qvariant.cpp8
-rw-r--r--src/corelib/kernel/qvariant.h13
-rw-r--r--src/corelib/mimetypes/mime/generate.pl1
-rw-r--r--src/corelib/mimetypes/mimetypes_resources.cmake2
-rw-r--r--src/corelib/mimetypes/qmimeglobpattern.cpp108
-rw-r--r--src/corelib/mimetypes/qmimeglobpattern_p.h19
-rw-r--r--src/corelib/mimetypes/qmimeprovider.cpp1
-rw-r--r--src/corelib/platform/android/qandroidextras.cpp26
-rw-r--r--src/corelib/platform/android/qandroidextras_p.h2
-rw-r--r--src/corelib/platform/android/qandroidnativeinterface.cpp1
-rw-r--r--src/corelib/platform/wasm/qstdweb.cpp90
-rw-r--r--src/corelib/platform/wasm/qstdweb_p.h12
-rw-r--r--src/corelib/plugin/qcoffpeparser.cpp421
-rw-r--r--src/corelib/plugin/qcoffpeparser_p.h (renamed from src/gui/util/qshadergenerator_p.h)31
-rw-r--r--src/corelib/plugin/qelfparser_p.cpp888
-rw-r--r--src/corelib/plugin/qelfparser_p.h31
-rw-r--r--src/corelib/plugin/qfactoryloader.cpp190
-rw-r--r--src/corelib/plugin/qfactoryloader_p.h48
-rw-r--r--src/corelib/plugin/qlibrary.cpp304
-rw-r--r--src/corelib/plugin/qlibrary_p.h20
-rw-r--r--src/corelib/plugin/qlibrary_unix.cpp2
-rw-r--r--src/corelib/plugin/qlibrary_win.cpp3
-rw-r--r--src/corelib/plugin/qmachparser.cpp75
-rw-r--r--src/corelib/plugin/qmachparser_p.h6
-rw-r--r--src/corelib/plugin/qplugin.h149
-rw-r--r--src/corelib/plugin/qplugin_p.h61
-rw-r--r--src/corelib/plugin/qpluginloader.cpp44
-rw-r--r--src/corelib/serialization/qcborcommon.cpp4
-rw-r--r--src/corelib/serialization/qcbormap.cpp2
-rw-r--r--src/corelib/serialization/qcborstreamreader.cpp2
-rw-r--r--src/corelib/serialization/qcborvalue.cpp2
-rw-r--r--src/corelib/serialization/qdatastream.cpp8
-rw-r--r--src/corelib/serialization/qdatastream.h54
-rw-r--r--src/corelib/serialization/qxmlstream.cpp2
-rw-r--r--src/corelib/serialization/qxmlstream.h2
-rw-r--r--src/corelib/text/qanystringview.h3
-rw-r--r--src/corelib/text/qanystringview.qdoc2
-rw-r--r--src/corelib/text/qbytearray.cpp26
-rw-r--r--src/corelib/text/qbytearray.h5
-rw-r--r--src/corelib/text/qbytearrayalgorithms.h2
-rw-r--r--src/corelib/text/qbytearraylist.cpp26
-rw-r--r--src/corelib/text/qbytearraylist.h16
-rw-r--r--src/corelib/text/qbytearraymatcher.cpp39
-rw-r--r--src/corelib/text/qbytearraymatcher.h9
-rw-r--r--src/corelib/text/qbytearrayview.h2
-rw-r--r--src/corelib/text/qbytearrayview.qdoc9
-rw-r--r--src/corelib/text/qchar.cpp8
-rw-r--r--src/corelib/text/qchar.h10
-rw-r--r--src/corelib/text/qcollator.cpp51
-rw-r--r--src/corelib/text/qcollator.h3
-rw-r--r--src/corelib/text/qcollator_posix.cpp9
-rw-r--r--src/corelib/text/qlocale.cpp2
-rw-r--r--src/corelib/text/qlocale.h4
-rw-r--r--src/corelib/text/qlocale.qdoc6
-rw-r--r--src/corelib/text/qlocale_data_p.h4844
-rw-r--r--src/corelib/text/qlocale_mac.mm135
-rw-r--r--src/corelib/text/qlocale_p.h5
-rw-r--r--src/corelib/text/qlocale_tools.cpp17
-rw-r--r--src/corelib/text/qlocale_tools_p.h5
-rw-r--r--src/corelib/text/qlocale_win.cpp93
-rw-r--r--src/corelib/text/qregularexpression.cpp12
-rw-r--r--src/corelib/text/qstring.cpp136
-rw-r--r--src/corelib/text/qstring.h11
-rw-r--r--src/corelib/text/qstringbuilder.h2
-rw-r--r--src/corelib/text/qstringconverter.cpp15
-rw-r--r--src/corelib/text/qstringtokenizer.h4
-rw-r--r--src/corelib/text/qt_attribution.json12
-rw-r--r--src/corelib/text/qunicodetables.cpp13599
-rw-r--r--src/corelib/text/qunicodetables_p.h4
-rw-r--r--src/corelib/text/qunicodetools.cpp6
-rw-r--r--src/corelib/text/qutf8stringview.h5
-rw-r--r--src/corelib/text/qutf8stringview.qdoc9
-rw-r--r--src/corelib/thread/qfuture.h84
-rw-r--r--src/corelib/thread/qfuture.qdoc250
-rw-r--r--src/corelib/thread/qfuture_impl.h197
-rw-r--r--src/corelib/thread/qfutureinterface.cpp58
-rw-r--r--src/corelib/thread/qfutureinterface.h9
-rw-r--r--src/corelib/thread/qfutureinterface_p.h1
-rw-r--r--src/corelib/thread/qfuturewatcher.cpp4
-rw-r--r--src/corelib/thread/qgenericatomic.h2
-rw-r--r--src/corelib/thread/qlocking_p.h4
-rw-r--r--src/corelib/thread/qmutex.h4
-rw-r--r--src/corelib/thread/qpromise.h6
-rw-r--r--src/corelib/thread/qreadwritelock.cpp57
-rw-r--r--src/corelib/thread/qreadwritelock_p.h23
-rw-r--r--src/corelib/thread/qresultstore.h4
-rw-r--r--src/corelib/thread/qsemaphore.cpp13
-rw-r--r--src/corelib/thread/qthread.cpp5
-rw-r--r--src/corelib/thread/qthread.h4
-rw-r--r--src/corelib/thread/qthread_p.h3
-rw-r--r--src/corelib/thread/qthread_unix.cpp8
-rw-r--r--src/corelib/thread/qthreadpool.cpp146
-rw-r--r--src/corelib/thread/qthreadpool.h3
-rw-r--r--src/corelib/thread/qthreadpool_p.h1
-rw-r--r--src/corelib/thread/qthreadstorage.cpp2
-rw-r--r--src/corelib/thread/qthreadstorage.h4
-rw-r--r--src/corelib/thread/qwaitcondition_p.h26
-rw-r--r--src/corelib/time/qcalendar.cpp2
-rw-r--r--src/corelib/time/qdatetime.cpp51
-rw-r--r--src/corelib/time/qdatetime_p.h4
-rw-r--r--src/corelib/time/qdatetimeparser.cpp5
-rw-r--r--src/corelib/time/qgregoriancalendar.cpp46
-rw-r--r--src/corelib/time/qgregoriancalendar_p.h1
-rw-r--r--src/corelib/time/qhijricalendar_data_p.h433
-rw-r--r--src/corelib/time/qjalalicalendar_data_p.h434
-rw-r--r--src/corelib/time/qromancalendar_data_p.h3988
-rw-r--r--src/corelib/time/qtimezone.cpp5
-rw-r--r--src/corelib/time/qtimezoneprivate.cpp15
-rw-r--r--src/corelib/time/qtimezoneprivate_android.cpp2
-rw-r--r--src/corelib/time/qtimezoneprivate_data_p.h346
-rw-r--r--src/corelib/time/qtimezoneprivate_icu.cpp14
-rw-r--r--src/corelib/time/qtimezoneprivate_tz.cpp4
-rw-r--r--src/corelib/time/qtimezoneprivate_win.cpp59
-rw-r--r--src/corelib/tools/qarraydataops.h25
-rw-r--r--src/corelib/tools/qcontiguouscache.h5
-rw-r--r--src/corelib/tools/qduplicatetracker_p.h7
-rw-r--r--src/corelib/tools/qeasingcurve.cpp2
-rw-r--r--src/corelib/tools/qhash.cpp274
-rw-r--r--src/corelib/tools/qhash.h289
-rw-r--r--src/corelib/tools/qlist.h162
-rw-r--r--src/corelib/tools/qlist.qdoc2
-rw-r--r--src/corelib/tools/qmap.h38
-rw-r--r--src/corelib/tools/qmap.qdoc2
-rw-r--r--src/corelib/tools/qoffsetstringarray_p.h212
-rw-r--r--src/corelib/tools/qringbuffer.cpp12
-rw-r--r--src/corelib/tools/qringbuffer_p.h19
-rw-r--r--src/corelib/tools/qscopedpointer.h9
-rw-r--r--src/corelib/tools/qscopeguard.h2
-rw-r--r--src/corelib/tools/qset.h7
-rw-r--r--src/corelib/tools/qsharedpointer.h12
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h37
-rw-r--r--src/corelib/tools/qstack.h23
-rw-r--r--src/corelib/tools/qvarlengtharray.h195
-rw-r--r--src/corelib/tools/qversionnumber.cpp2
-rw-r--r--src/dbus/Qt6DBusMacros.cmake52
-rw-r--r--src/dbus/doc/qtdbus.qdocconf3
-rw-r--r--src/dbus/doc/src/dbus-adaptors.qdoc2
-rw-r--r--src/dbus/doc/src/includes/cmake-find-package-dbus.qdocinc5
-rw-r--r--src/dbus/doc/src/qtdbus-cmake.qdoc36
-rw-r--r--src/dbus/doc/src/qtdbus-index.qdoc1
-rw-r--r--src/dbus/qdbusabstractadaptor.cpp2
-rw-r--r--src/dbus/qdbusargument.cpp2
-rw-r--r--src/dbus/qdbusconnection.cpp9
-rw-r--r--src/dbus/qdbuserror.cpp2
-rw-r--r--src/dbus/qdbusintegrator.cpp6
-rw-r--r--src/entrypoint/CMakeLists.txt38
-rw-r--r--src/entrypoint/EntryPointMinGW32Target.cmake.in7
-rw-r--r--src/entrypoint/qtentrypoint_win.cpp2
-rw-r--r--src/gui/CMakeLists.txt26
-rw-r--r--src/gui/accessible/linux/qspiapplicationadaptor.cpp17
-rw-r--r--src/gui/accessible/linux/qspiapplicationadaptor_p.h1
-rw-r--r--src/gui/accessible/qaccessible.cpp8
-rw-r--r--src/gui/configure.cmake5
-rw-r--r--src/gui/doc/qtgui.qdocconf3
-rw-r--r--src/gui/doc/src/coordsys.qdoc4
-rw-r--r--src/gui/doc/src/dnd.qdoc2
-rw-r--r--src/gui/doc/src/external-resources.qdoc4
-rw-r--r--src/gui/doc/src/qtgui.qdoc2
-rw-r--r--src/gui/image/qbitmap.cpp2
-rw-r--r--src/gui/image/qicon.cpp6
-rw-r--r--src/gui/image/qiconloader.cpp2
-rw-r--r--src/gui/image/qimage.cpp9
-rw-r--r--src/gui/image/qimage_darwin.mm2
-rw-r--r--src/gui/image/qimageiohandler.cpp2
-rw-r--r--src/gui/image/qimagereader.cpp13
-rw-r--r--src/gui/image/qimagereaderwriterhelpers.cpp11
-rw-r--r--src/gui/image/qpixmap.cpp3
-rw-r--r--src/gui/image/qpixmapcache.cpp59
-rw-r--r--src/gui/image/qplatformpixmap.cpp2
-rw-r--r--src/gui/image/qpnghandler.cpp2
-rw-r--r--src/gui/image/qppmhandler.cpp49
-rw-r--r--src/gui/itemmodels/qfilesystemmodel.cpp4
-rw-r--r--src/gui/itemmodels/qstandarditemmodel.cpp2
-rw-r--r--src/gui/kernel/qaction.cpp4
-rw-r--r--src/gui/kernel/qevent.cpp2
-rw-r--r--src/gui/kernel/qguiapplication.cpp86
-rw-r--r--src/gui/kernel/qguiapplication_p.h10
-rw-r--r--src/gui/kernel/qhighdpiscaling.cpp2
-rw-r--r--src/gui/kernel/qhighdpiscaling_p.h2
-rw-r--r--src/gui/kernel/qinputmethod.cpp16
-rw-r--r--src/gui/kernel/qkeysequence.cpp2
-rw-r--r--src/gui/kernel/qoffscreensurface.cpp2
-rw-r--r--src/gui/kernel/qpixelformat.cpp2
-rw-r--r--src/gui/kernel/qplatformdialoghelper.h9
-rw-r--r--src/gui/kernel/qplatformsurface.cpp11
-rw-r--r--src/gui/kernel/qplatformsurface.h2
-rw-r--r--src/gui/kernel/qplatformtheme.cpp6
-rw-r--r--src/gui/kernel/qplatformtheme.h4
-rw-r--r--src/gui/kernel/qshortcutmap.cpp2
-rw-r--r--src/gui/kernel/qwindow.cpp58
-rw-r--r--src/gui/kernel/qwindow_p.h4
-rw-r--r--src/gui/kernel/qwindowsysteminterface.cpp312
-rw-r--r--src/gui/kernel/qwindowsysteminterface_p.h6
-rw-r--r--src/gui/math3d/qgenericmatrix.h4
-rw-r--r--src/gui/math3d/qmatrix4x4.cpp8
-rw-r--r--src/gui/opengl/platform/egl/qt_egl_p.h6
-rw-r--r--src/gui/opengl/qopengl.h2
-rw-r--r--src/gui/opengl/qopenglprogrambinarycache.cpp61
-rw-r--r--src/gui/opengl/qopenglprogrambinarycache_p.h4
-rw-r--r--src/gui/painting/qbackingstore.cpp13
-rw-r--r--src/gui/painting/qbrush.cpp2
-rw-r--r--src/gui/painting/qcolor.cpp2
-rw-r--r--src/gui/painting/qcolorspace.cpp2
-rw-r--r--src/gui/painting/qcssutil.cpp2
-rw-r--r--src/gui/painting/qdrawhelper_mips_dsp_asm.S2
-rw-r--r--src/gui/painting/qdrawhelper_ssse3.cpp2
-rw-r--r--src/gui/painting/qdrawingprimitive_sse2_p.h4
-rw-r--r--src/gui/painting/qoutlinemapper.cpp2
-rw-r--r--src/gui/painting/qpaintengine.cpp2
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp41
-rw-r--r--src/gui/painting/qpaintengine_raster_p.h2
-rw-r--r--src/gui/painting/qpainter.cpp72
-rw-r--r--src/gui/painting/qpainterpath.cpp4
-rw-r--r--src/gui/painting/qpdf.cpp37
-rw-r--r--src/gui/painting/qpdf_p.h1
-rw-r--r--src/gui/painting/qplatformbackingstore.cpp5
-rw-r--r--src/gui/painting/qpolygon.h2
-rw-r--r--src/gui/painting/qrasterbackingstore.cpp2
-rw-r--r--src/gui/painting/qrasterizer.cpp95
-rw-r--r--src/gui/painting/qregion.h2
-rw-r--r--src/gui/painting/qrgba64.h4
-rw-r--r--src/gui/painting/qstroker.cpp2
-rw-r--r--src/gui/painting/qt_mips_asm_dsp_p.h4
-rw-r--r--src/gui/painting/qtransform.cpp2
-rw-r--r--src/gui/platform/darwin/qmacmime.mm6
-rw-r--r--src/gui/platform/unix/qgenericunixservices.cpp20
-rw-r--r--src/gui/platform/unix/qxkbcommon.cpp2
-rw-r--r--src/gui/platform/unix/qxkbcommon_p.h2
-rw-r--r--src/gui/platform/wasm/qwasmlocalfileaccess.cpp66
-rw-r--r--src/gui/platform/windows/qwindowsguieventdispatcher.cpp6
-rw-r--r--src/gui/rhi/qrhi.cpp145
-rw-r--r--src/gui/rhi/qrhi_p.h30
-rw-r--r--src/gui/rhi/qrhi_p_p.h4
-rw-r--r--src/gui/rhi/qrhid3d11.cpp87
-rw-r--r--src/gui/rhi/qrhid3d11_p_p.h3
-rw-r--r--src/gui/rhi/qrhigles2.cpp286
-rw-r--r--src/gui/rhi/qrhigles2_p_p.h10
-rw-r--r--src/gui/rhi/qrhimetal.mm73
-rw-r--r--src/gui/rhi/qrhimetal_p_p.h4
-rw-r--r--src/gui/rhi/qrhinull.cpp19
-rw-r--r--src/gui/rhi/qrhinull_p_p.h3
-rw-r--r--src/gui/rhi/qrhiprofiler.cpp4
-rw-r--r--src/gui/rhi/qrhivulkan.cpp107
-rw-r--r--src/gui/rhi/qrhivulkan_p_p.h3
-rw-r--r--src/gui/text/freetype/qfontengine_ft.cpp11
-rw-r--r--src/gui/text/freetype/qfreetypefontdatabase.cpp32
-rw-r--r--src/gui/text/qcssparser.cpp13
-rw-r--r--src/gui/text/qfont.cpp60
-rw-r--r--src/gui/text/qfont_p.h1
-rw-r--r--src/gui/text/qfontdatabase.cpp12
-rw-r--r--src/gui/text/qfontdatabase.h2
-rw-r--r--src/gui/text/qfontengine.cpp6
-rw-r--r--src/gui/text/qfontmetrics.cpp200
-rw-r--r--src/gui/text/qfontmetrics.h7
-rw-r--r--src/gui/text/qfontsubset.cpp4
-rw-r--r--src/gui/text/qharfbuzzng.cpp16
-rw-r--r--src/gui/text/qplatformfontdatabase.cpp4
-rw-r--r--src/gui/text/qtextcursor.cpp4
-rw-r--r--src/gui/text/qtextdocument.cpp12
-rw-r--r--src/gui/text/qtextdocument_p.cpp2
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp11
-rw-r--r--src/gui/text/qtextengine.cpp165
-rw-r--r--src/gui/text/qtextformat.cpp8
-rw-r--r--src/gui/text/qtextformat.h7
-rw-r--r--src/gui/text/qtexthtmlparser.cpp2
-rw-r--r--src/gui/text/qtextlayout.cpp160
-rw-r--r--src/gui/text/qtextmarkdownimporter.cpp5
-rw-r--r--src/gui/text/qtextmarkdownwriter.cpp7
-rw-r--r--src/gui/text/qtextobject.cpp8
-rw-r--r--src/gui/text/qtextoption.cpp2
-rw-r--r--src/gui/text/qzip.cpp2
-rw-r--r--src/gui/text/unix/qfontconfigdatabase.cpp7
-rw-r--r--src/gui/text/windows/qwindowsfontdatabasebase.cpp26
-rw-r--r--src/gui/text/windows/qwindowsfontengine.cpp18
-rw-r--r--src/gui/util/qgridlayoutengine_p.h2
-rw-r--r--src/gui/util/qshaderformat.cpp145
-rw-r--r--src/gui/util/qshaderformat_p.h123
-rw-r--r--src/gui/util/qshadergenerator.cpp638
-rw-r--r--src/gui/util/qshadergraph.cpp316
-rw-r--r--src/gui/util/qshadergraph_p.h124
-rw-r--r--src/gui/util/qshadergraphloader.cpp269
-rw-r--r--src/gui/util/qshadergraphloader_p.h99
-rw-r--r--src/gui/util/qshaderlanguage.cpp54
-rw-r--r--src/gui/util/qshaderlanguage_p.h164
-rw-r--r--src/gui/util/qshadernode.cpp172
-rw-r--r--src/gui/util/qshadernode_p.h128
-rw-r--r--src/gui/util/qshadernodeport.cpp55
-rw-r--r--src/gui/util/qshadernodesloader.cpp290
-rw-r--r--src/gui/util/qshadernodesloader_p.h96
-rw-r--r--src/gui/util/qvalidator.cpp21
-rw-r--r--src/gui/util/qvalidator.h3
-rw-r--r--src/network/CMakeLists.txt4
-rw-r--r--src/network/access/http2/http2frames.cpp5
-rw-r--r--src/network/access/http2/http2protocol.cpp9
-rw-r--r--src/network/access/http2/huffman.cpp2
-rw-r--r--src/network/access/qhttp2configuration.cpp7
-rw-r--r--src/network/access/qhttpheaderparser.cpp84
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp2
-rw-r--r--src/network/access/qnetworkaccessauthenticationmanager.cpp19
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp2
-rw-r--r--src/network/access/qnetworkreplyhttpimpl.cpp6
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp8
-rw-r--r--src/network/access/qnetworkreplywasmimpl.cpp17
-rw-r--r--src/network/access/qnetworkrequest.cpp13
-rw-r--r--src/network/android/jar/.gitignore6
-rw-r--r--src/network/android/jar/build.gradle53
-rw-r--r--src/network/android/jar/settings.gradle1
-rw-r--r--src/network/android/jar/src/org/qtproject/qt/android/network/QtNetwork.java1
-rw-r--r--src/network/configure.cmake5
-rw-r--r--src/network/doc/qtnetwork.qdocconf7
-rw-r--r--src/network/doc/snippets/CMakeLists.txt2
-rw-r--r--src/network/doc/src/qt6-changes.qdoc4
-rw-r--r--src/network/doc/src/ssl.qdoc39
-rw-r--r--src/network/kernel/qauthenticator.cpp38
-rw-r--r--src/network/kernel/qhostinfo.cpp20
-rw-r--r--src/network/kernel/qhostinfo_unix.cpp21
-rw-r--r--src/network/kernel/qnetconmonitor_darwin.mm39
-rw-r--r--src/network/kernel/qnetconmonitor_p.h10
-rw-r--r--src/network/kernel/qnetworkinformation.cpp160
-rw-r--r--src/network/kernel/qnetworkinformation.h21
-rw-r--r--src/network/kernel/qnetworkinformation_p.h56
-rw-r--r--src/network/kernel/qnetworkinterface.cpp2
-rw-r--r--src/network/kernel/qnetworkinterface_linux.cpp2
-rw-r--r--src/network/kernel/qnetworkproxy.cpp2
-rw-r--r--src/network/kernel/qnetworkproxy_win.cpp142
-rw-r--r--src/network/qt_cmdline.cmake1
-rw-r--r--src/network/socket/qabstractsocket.cpp2
-rw-r--r--src/network/socket/qhttpsocketengine.cpp2
-rw-r--r--src/network/socket/qlocalserver.cpp5
-rw-r--r--src/network/socket/qlocalsocket.cpp5
-rw-r--r--src/network/socket/qlocalsocket_tcp.cpp3
-rw-r--r--src/network/socket/qlocalsocket_unix.cpp3
-rw-r--r--src/network/socket/qlocalsocket_win.cpp3
-rw-r--r--src/network/socket/qnativesocketengine.cpp2
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp2
-rw-r--r--src/network/socket/qsocks5socketengine.cpp8
-rw-r--r--src/network/ssl/qdtls.cpp2
-rw-r--r--src/network/ssl/qocspresponse.cpp2
-rw-r--r--src/network/ssl/qsslsocket.cpp2
-rw-r--r--src/network/ssl/qtlsbackend.cpp6
-rw-r--r--src/opengl/doc/qtopengl.qdocconf3
-rw-r--r--src/opengl/qopenglpaintengine.cpp8
-rw-r--r--src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp2
-rw-r--r--src/plugins/imageformats/ico/qicohandler.cpp2
-rw-r--r--src/plugins/networkinformation/CMakeLists.txt4
-rw-r--r--src/plugins/networkinformation/android/jar/.gitignore6
-rw-r--r--src/plugins/networkinformation/android/jar/build.gradle53
-rw-r--r--src/plugins/networkinformation/android/jar/settings.gradle1
-rw-r--r--src/plugins/networkinformation/android/jar/src/org/qtproject/qt/android/networkinformation/QtAndroidNetworkInformation.java76
-rw-r--r--src/plugins/networkinformation/android/qandroidnetworkinformationbackend.cpp85
-rw-r--r--src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.cpp58
-rw-r--r--src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.h20
-rw-r--r--src/plugins/networkinformation/glib/CMakeLists.txt14
-rw-r--r--src/plugins/networkinformation/glib/qglibnetworkinformationbackend.cpp157
-rw-r--r--src/plugins/networkinformation/networklistmanager/CMakeLists.txt9
-rw-r--r--src/plugins/networkinformation/networklistmanager/qnetworklistmanagerevents.cpp264
-rw-r--r--src/plugins/networkinformation/networklistmanager/qnetworklistmanagerevents.h (renamed from src/gui/util/qshadernodeport_p.h)100
-rw-r--r--src/plugins/networkinformation/networklistmanager/qnetworklistmanagernetworkinformationbackend.cpp212
-rw-r--r--src/plugins/networkinformation/networkmanager/qnetworkmanagernetworkinformationbackend.cpp118
-rw-r--r--src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.cpp112
-rw-r--r--src/plugins/networkinformation/networkmanager/qnetworkmanagerservice.h62
-rw-r--r--src/plugins/networkinformation/scnetworkreachability/qscnetworkreachabilitynetworkinformationbackend.mm59
-rw-r--r--src/plugins/platforms/android/androidjniinput.cpp52
-rw-r--r--src/plugins/platforms/android/androidjniinput.h4
-rw-r--r--src/plugins/platforms/android/androidjnimain.cpp8
-rw-r--r--src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp10
-rw-r--r--src/plugins/platforms/android/qandroidinputcontext.cpp113
-rw-r--r--src/plugins/platforms/android/qandroidinputcontext.h4
-rw-r--r--src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp11
-rw-r--r--src/plugins/platforms/android/qandroidplatformfiledialoghelper.h2
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm21
-rw-r--r--src/plugins/platforms/cocoa/qcocoabackingstore.h11
-rw-r--r--src/plugins/platforms/cocoa/qcocoabackingstore.mm166
-rw-r--r--src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm14
-rw-r--r--src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm13
-rw-r--r--src/plugins/platforms/cocoa/qcocoaglcontext.mm9
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoainputcontext.h1
-rw-r--r--src/plugins/platforms/cocoa/qcocoainputcontext.mm27
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenubar.h3
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenubar.mm76
-rw-r--r--src/plugins/platforms/cocoa/qcocoascreen.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoatheme.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.h21
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm207
-rw-r--r--src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h1
-rw-r--r--src/plugins/platforms/cocoa/qmacclipboard.mm2
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm2
-rw-r--r--src/plugins/platforms/cocoa/qnsview_keys.mm23
-rw-r--r--src/plugins/platforms/cocoa/qnsview_mouse.mm149
-rw-r--r--src/plugins/platforms/cocoa/qnsview_tablet.mm188
-rw-r--r--src/plugins/platforms/cocoa/qnswindow.mm28
-rw-r--r--src/plugins/platforms/cocoa/qnswindowdelegate.mm8
-rw-r--r--src/plugins/platforms/direct2d/CMakeLists.txt4
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp34
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h4
-rw-r--r--src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h1
-rw-r--r--src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm5
-rw-r--r--src/plugins/platforms/ios/qiosfiledialog.mm3
-rw-r--r--src/plugins/platforms/ios/qiosinputcontext.h4
-rw-r--r--src/plugins/platforms/ios/qiosinputcontext.mm22
-rw-r--r--src/plugins/platforms/ios/qiosintegration.mm3
-rw-r--r--src/plugins/platforms/ios/qiostextinputoverlay.mm32
-rw-r--r--src/plugins/platforms/ios/qiostextresponder.h13
-rw-r--r--src/plugins/platforms/ios/qiostextresponder.mm333
-rw-r--r--src/plugins/platforms/ios/qiosviewcontroller.mm10
-rw-r--r--src/plugins/platforms/ios/quiview.mm2
-rw-r--r--src/plugins/platforms/ios/quiview_accessibility.mm5
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp7
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenintegration_x11.h9
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenwindow.cpp16
-rw-r--r--src/plugins/platforms/wasm/qtloader.js4
-rw-r--r--src/plugins/platforms/wasm/qwasmcompositor.cpp10
-rw-r--r--src/plugins/platforms/wasm/qwasmcursor.cpp16
-rw-r--r--src/plugins/platforms/wasm/qwasmeventdispatcher.cpp2
-rw-r--r--src/plugins/platforms/wasm/qwasmeventtranslator.cpp25
-rw-r--r--src/plugins/platforms/wasm/qwasmintegration.cpp6
-rw-r--r--src/plugins/platforms/wasm/qwasmwindow.cpp30
-rw-r--r--src/plugins/platforms/wasm/qwasmwindow.h3
-rw-r--r--src/plugins/platforms/windows/CMakeLists.txt4
-rw-r--r--src/plugins/platforms/windows/openglblacklists/default.json2
-rw-r--r--src/plugins/platforms/windows/qtwindowsglobal.h7
-rw-r--r--src/plugins/platforms/windows/qwin10helpers.cpp43
-rw-r--r--src/plugins/platforms/windows/qwindowsclipboard.cpp11
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.cpp153
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.h82
-rw-r--r--src/plugins/platforms/windows/qwindowsdialoghelpers.cpp45
-rw-r--r--src/plugins/platforms/windows/qwindowsdrag.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowsglcontext.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowsinputcontext.cpp5
-rw-r--r--src/plugins/platforms/windows/qwindowsintegration.cpp14
-rw-r--r--src/plugins/platforms/windows/qwindowsmenu.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowsmousehandler.cpp11
-rw-r--r--src/plugins/platforms/windows/qwindowsopengltester.cpp12
-rw-r--r--src/plugins/platforms/windows/qwindowspointerhandler.cpp82
-rw-r--r--src/plugins/platforms/windows/qwindowspointerhandler.h3
-rw-r--r--src/plugins/platforms/windows/qwindowsscreen.cpp92
-rw-r--r--src/plugins/platforms/windows/qwindowsscreen.h3
-rw-r--r--src/plugins/platforms/windows/qwindowsservices.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowssystemtrayicon.cpp14
-rw-r--r--src/plugins/platforms/windows/qwindowstheme.cpp10
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.cpp120
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.h3
-rw-r--r--src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp4
-rw-r--r--src/plugins/platforms/xcb/CMakeLists.txt2
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/qxcbglintegrationfactory.cpp17
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/qxcbglintegrationfactory.h2
-rw-r--r--src/plugins/platforms/xcb/nativepainting/qtessellator.cpp2
-rw-r--r--src/plugins/platforms/xcb/qxcbbackingstore.cpp38
-rw-r--r--src/plugins/platforms/xcb/qxcbclipboard.cpp70
-rw-r--r--src/plugins/platforms/xcb/qxcbclipboard.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.cpp16
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.h10
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_basic.cpp12
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_basic.h1
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_xi2.cpp265
-rw-r--r--src/plugins/platforms/xcb/qxcbcursor.cpp2
-rw-r--r--src/plugins/platforms/xcb/qxcbdrag.cpp53
-rw-r--r--src/plugins/platforms/xcb/qxcbkeyboard.cpp24
-rw-r--r--src/plugins/platforms/xcb/qxcbkeyboard.h1
-rw-r--r--src/plugins/platforms/xcb/qxcbscreen.cpp10
-rw-r--r--src/plugins/platforms/xcb/qxcbsystemtraytracker.cpp12
-rw-r--r--src/plugins/platforms/xcb/qxcbsystemtraytracker.h2
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.cpp5
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbxsettings.cpp7
-rw-r--r--src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp40
-rw-r--r--src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.h3
-rw-r--r--src/plugins/platformthemes/gtk3/qgtk3theme.cpp42
-rw-r--r--src/plugins/platformthemes/gtk3/qgtk3theme.h2
-rw-r--r--src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp1
-rw-r--r--src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp1
-rw-r--r--src/plugins/sqldrivers/CMakeLists.txt2
-rw-r--r--src/plugins/sqldrivers/ibase/qsql_ibase.cpp2
-rw-r--r--src/plugins/sqldrivers/mysql/qsql_mysql.cpp31
-rw-r--r--src/plugins/sqldrivers/odbc/CMakeLists.txt2
-rw-r--r--src/plugins/sqldrivers/psql/CMakeLists.txt2
-rw-r--r--src/plugins/sqldrivers/qt_cmdline.cmake1
-rw-r--r--src/plugins/sqldrivers/sqlite/CMakeLists.txt7
-rw-r--r--src/plugins/styles/android/qandroidstyle.cpp3
-rw-r--r--src/plugins/styles/mac/qmacstyle_mac.mm58
-rw-r--r--src/plugins/styles/windowsvista/qwindowsxpstyle.cpp14
-rw-r--r--src/plugins/tls/openssl/qsslcontext_openssl.cpp4
-rw-r--r--src/plugins/tls/openssl/qssldiffiehellmanparameters_openssl.cpp18
-rw-r--r--src/plugins/tls/openssl/qsslsocket_openssl_symbols.cpp65
-rw-r--r--src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h24
-rw-r--r--src/plugins/tls/openssl/qtls_openssl.cpp2
-rw-r--r--src/plugins/tls/openssl/qtls_openssl_p.h2
-rw-r--r--src/plugins/tls/openssl/qtlsbackend_openssl.cpp5
-rw-r--r--src/plugins/tls/openssl/qwindowscarootfetcher.cpp2
-rw-r--r--src/plugins/tls/shared/qx509_generic.cpp2
-rw-r--r--src/printsupport/doc/qtprintsupport.qdocconf3
-rw-r--r--src/printsupport/kernel/qplatformprintplugin.cpp6
-rw-r--r--src/printsupport/platform/macos/qcocoaprintersupport.mm2
-rw-r--r--src/printsupport/platform/windows/qwindowsprintersupport.cpp2
-rw-r--r--src/sql/doc/qtsql.qdocconf3
-rw-r--r--src/sql/doc/snippets/code/doc_src_sql-driver.qdoc99
-rw-r--r--src/sql/doc/src/sql-driver.qdoc4
-rw-r--r--src/testlib/doc/qttestlib.qdocconf3
-rw-r--r--src/testlib/qabstracttestlogger.cpp279
-rw-r--r--src/testlib/qpropertytesthelper_p.h1
-rw-r--r--src/testlib/qtest.h1
-rw-r--r--src/testlib/qtestcase.cpp154
-rw-r--r--src/testlib/qtestcase.h70
-rw-r--r--src/testlib/qtestcase.qdoc77
-rw-r--r--src/testlib/qtestkeyboard.h4
-rw-r--r--src/testlib/qtestlog.cpp69
-rw-r--r--src/testlib/qtestlog_p.h7
-rw-r--r--src/testlib/qtestmouse.h33
-rw-r--r--src/testlib/qtestresult.cpp1
-rw-r--r--src/testlib/qxmltestlogger.cpp163
-rw-r--r--src/testlib/qxmltestlogger_p.h12
-rw-r--r--src/tools/CMakeLists.txt16
-rw-r--r--src/tools/androiddeployqt/CMakeLists.txt1
-rw-r--r--src/tools/androiddeployqt/doc/src/androiddeployqt.qdoc246
-rw-r--r--src/tools/androiddeployqt/main.cpp222
-rw-r--r--src/tools/androidtestrunner/CMakeLists.txt1
-rw-r--r--src/tools/androidtestrunner/main.cpp81
-rw-r--r--src/tools/bootstrap/CMakeLists.txt26
-rw-r--r--src/tools/cmake_automoc_parser/CMakeLists.txt2
-rw-r--r--src/tools/configure.cmake32
-rw-r--r--src/tools/macdeployqt/CMakeLists.txt6
-rw-r--r--src/tools/macdeployqt/macdeployqt/CMakeLists.txt16
-rw-r--r--src/tools/macdeployqt/macdeployqt/main.cpp278
-rw-r--r--src/tools/macdeployqt/shared/shared.cpp1604
-rw-r--r--src/tools/macdeployqt/shared/shared.h141
-rw-r--r--src/tools/moc/CMakeLists.txt2
-rw-r--r--src/tools/moc/generator.cpp108
-rw-r--r--src/tools/moc/keywords.cpp365
-rw-r--r--src/tools/moc/moc.cpp18
-rw-r--r--src/tools/moc/token.h3
-rw-r--r--src/tools/moc/util/generate_keywords.cpp1
-rw-r--r--src/tools/moc/util/generate_keywords.pro5
-rw-r--r--src/tools/qdbuscpp2xml/CMakeLists.txt1
-rw-r--r--src/tools/qdbusxml2cpp/CMakeLists.txt1
-rw-r--r--src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp2
-rw-r--r--src/tools/qlalr/CMakeLists.txt1
-rw-r--r--src/tools/qlalr/compress.cpp4
-rw-r--r--src/tools/qtpaths/CMakeLists.txt1
-rw-r--r--src/tools/qvkgen/CMakeLists.txt1
-rw-r--r--src/tools/rcc/CMakeLists.txt2
-rw-r--r--src/tools/rcc/main.cpp2
-rw-r--r--src/tools/tracegen/CMakeLists.txt1
-rw-r--r--src/tools/tracegen/etw.cpp27
-rw-r--r--src/tools/tracegen/lttng.cpp8
-rw-r--r--src/tools/uic/CMakeLists.txt1
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.cpp46
-rw-r--r--src/tools/uic/customwidgetsinfo.cpp24
-rw-r--r--src/tools/uic/customwidgetsinfo.h2
-rw-r--r--src/tools/uic/python/pythonwriteimports.cpp9
-rw-r--r--src/tools/uic/qclass_lib_map.h1
-rw-r--r--src/tools/uic/shared/writeincludesbase.cpp4
-rw-r--r--src/tools/windeployqt/CMakeLists.txt32
-rw-r--r--src/tools/windeployqt/elfreader.cpp440
-rw-r--r--src/tools/windeployqt/elfreader.h176
-rw-r--r--src/tools/windeployqt/main.cpp1723
-rw-r--r--src/tools/windeployqt/qmlutils.cpp160
-rw-r--r--src/tools/windeployqt/qmlutils.h65
-rw-r--r--src/tools/windeployqt/utils.cpp1006
-rw-r--r--src/tools/windeployqt/utils.h404
-rw-r--r--src/widgets/dialogs/qdialog.cpp79
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp18
-rw-r--r--src/widgets/dialogs/qfiledialog.h1
-rw-r--r--src/widgets/dialogs/qmessagebox.cpp28
-rw-r--r--src/widgets/dialogs/qwizard.cpp2
-rw-r--r--src/widgets/dialogs/qwizard_win.cpp22
-rw-r--r--src/widgets/doc/qtwidgets.qdocconf3
-rw-r--r--src/widgets/doc/src/cmake-macros.qdoc4
-rw-r--r--src/widgets/doc/src/includes/cmake-find-package-widgets.qdocinc5
-rw-r--r--src/widgets/doc/src/qt6-changes.qdoc14
-rw-r--r--src/widgets/doc/src/widgets-and-layouts/gallery.qdoc2
-rw-r--r--src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc4
-rw-r--r--src/widgets/effects/qgraphicseffect.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout_p.h2
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.cpp28
-rw-r--r--src/widgets/graphicsview/qgraphicslayout.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsscene.cpp26
-rw-r--r--src/widgets/graphicsview/qgraphicsview.cpp10
-rw-r--r--src/widgets/graphicsview/qgraphicswidget.cpp100
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp162
-rw-r--r--src/widgets/itemviews/qabstractitemview_p.h3
-rw-r--r--src/widgets/itemviews/qlistview.cpp10
-rw-r--r--src/widgets/itemviews/qtableview.cpp32
-rw-r--r--src/widgets/itemviews/qtablewidget.cpp14
-rw-r--r--src/widgets/itemviews/qtablewidget.h8
-rw-r--r--src/widgets/itemviews/qtreeview_p.h2
-rw-r--r--src/widgets/itemviews/qtreewidget.cpp6
-rw-r--r--src/widgets/kernel/qapplication.cpp480
-rw-r--r--src/widgets/kernel/qapplication_p.h2
-rw-r--r--src/widgets/kernel/qboxlayout.cpp4
-rw-r--r--src/widgets/kernel/qgesture.cpp2
-rw-r--r--src/widgets/kernel/qlayoutengine.cpp2
-rw-r--r--src/widgets/kernel/qshortcut_widgets.cpp2
-rw-r--r--src/widgets/kernel/qsizepolicy.h5
-rw-r--r--src/widgets/kernel/qwidget.cpp66
-rw-r--r--src/widgets/kernel/qwidgetrepaintmanager.cpp39
-rw-r--r--src/widgets/kernel/qwidgetwindow.cpp66
-rw-r--r--src/widgets/kernel/qwidgetwindow_p.h3
-rw-r--r--src/widgets/styles/qcommonstyle.cpp3
-rw-r--r--src/widgets/styles/qfusionstyle.cpp84
-rw-r--r--src/widgets/styles/qstyle.cpp10
-rw-r--r--src/widgets/styles/qstyle.h1
-rw-r--r--src/widgets/styles/qstyleoption.cpp3
-rw-r--r--src/widgets/styles/qstylesheetstyle.cpp109
-rw-r--r--src/widgets/styles/qstylesheetstyle_default.cpp4
-rw-r--r--src/widgets/util/qcompleter.cpp15
-rw-r--r--src/widgets/util/qflickgesture.cpp2
-rw-r--r--src/widgets/util/qscroller.cpp8
-rw-r--r--src/widgets/util/qscrollerproperties.cpp4
-rw-r--r--src/widgets/util/qsystemtrayicon.cpp2
-rw-r--r--src/widgets/widgets/qabstractscrollarea.cpp88
-rw-r--r--src/widgets/widgets/qabstractslider.cpp2
-rw-r--r--src/widgets/widgets/qabstractspinbox.cpp3
-rw-r--r--src/widgets/widgets/qcalendarwidget.cpp2
-rw-r--r--src/widgets/widgets/qcombobox.cpp4
-rw-r--r--src/widgets/widgets/qdatetimeedit.cpp2
-rw-r--r--src/widgets/widgets/qdial.cpp2
-rw-r--r--src/widgets/widgets/qdialogbuttonbox.cpp2
-rw-r--r--src/widgets/widgets/qdockarealayout.cpp74
-rw-r--r--src/widgets/widgets/qdockarealayout_p.h3
-rw-r--r--src/widgets/widgets/qfontcombobox.cpp7
-rw-r--r--src/widgets/widgets/qlabel.cpp4
-rw-r--r--src/widgets/widgets/qlineedit.cpp6
-rw-r--r--src/widgets/widgets/qmainwindow.cpp19
-rw-r--r--src/widgets/widgets/qmainwindowlayout.cpp73
-rw-r--r--src/widgets/widgets/qmainwindowlayout_p.h8
-rw-r--r--src/widgets/widgets/qmdiarea.cpp2
-rw-r--r--src/widgets/widgets/qmenu.cpp12
-rw-r--r--src/widgets/widgets/qmenu.h2
-rw-r--r--src/widgets/widgets/qmenubar.cpp2
-rw-r--r--src/widgets/widgets/qplaintextedit.cpp10
-rw-r--r--src/widgets/widgets/qplaintextedit_p.h1
-rw-r--r--src/widgets/widgets/qpushbutton.cpp2
-rw-r--r--src/widgets/widgets/qscrollarea.cpp18
-rw-r--r--src/widgets/widgets/qscrollbar.cpp2
-rw-r--r--src/widgets/widgets/qslider.cpp15
-rw-r--r--src/widgets/widgets/qspinbox.cpp28
-rw-r--r--src/widgets/widgets/qtabbar.cpp118
-rw-r--r--src/widgets/widgets/qtabbar_p.h1
-rw-r--r--src/widgets/widgets/qtabwidget.cpp4
-rw-r--r--src/widgets/widgets/qtextbrowser.cpp2
-rw-r--r--src/widgets/widgets/qtextedit.cpp4
-rw-r--r--src/widgets/widgets/qtoolbar.cpp2
-rw-r--r--src/widgets/widgets/qwidgetanimator.cpp2
-rw-r--r--src/xml/doc/qtxml.qdocconf3
-rw-r--r--src/xml/doc/src/qt6-changes.qdoc10
-rw-r--r--src/xml/dom/qdom.cpp30
-rw-r--r--src/xml/dom/qdom.h3
-rw-r--r--src/xml/dom/qdom_p.h2
-rw-r--r--src/xml/dom/qdomhelpers.cpp42
-rw-r--r--src/xml/dom/qdomhelpers_p.h37
-rw-r--r--tests/auto/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/mockplugins/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test(needsquoting)dirname/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_QFINDTESTDATA/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_QTBUG-63422/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_QT_TESTCASE_BUILDDIR/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_add_big_resource/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_add_binary_resources_delayed_file/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_add_resource_options/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_add_resources_binary_generated/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_add_resources_delayed_file/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_concurrent_module/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_dbus_module/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_dependent_modules/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_generating_cpp_exports/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_global_promotion/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_import_plugins/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_interface/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_interface/widget_test/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_interface_link_libraries/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_json_plugin_includes/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_moc_macro_target/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_multiple_find_package/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_opengl_lib/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_platform_defs_include/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_plugin_shared_static_flavor/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_plugins/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_private_includes/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_private_targets/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_qtmainwin_library/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_static_resources/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_testlib_definitions/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_testlib_no_link_gui/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_testlib_no_link_widgets/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_umbrella_config/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_versionless_targets/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_wrap_cpp_and_resources/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/test_wrap_cpp_options/CMakeLists.txt2
-rw-r--r--tests/auto/concurrent/CMakeLists.txt6
-rw-r--r--tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp1
-rw-r--r--tests/auto/corelib/global/CMakeLists.txt9
-rw-r--r--tests/auto/corelib/global/qglobal/tst_qglobal.cpp3
-rw-r--r--tests/auto/corelib/global/qglobalstatic/tst_qglobalstatic.cpp4
-rw-r--r--tests/auto/corelib/global/qnativeinterface/CMakeLists.txt2
-rw-r--r--tests/auto/corelib/global/qnativeinterface/tst_qnativeinterface.cpp1
-rw-r--r--tests/auto/corelib/global/qnumeric/CMakeLists.txt11
-rw-r--r--tests/auto/corelib/global/qoperatingsystemversion/tst_qoperatingsystemversion.cpp11
-rw-r--r--tests/auto/corelib/io/CMakeLists.txt4
-rw-r--r--tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp54
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir.lnk/aaaaa.txt0
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir.lnk/subdir.lnk/subdir.lnk.txt0
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir.lnk/subdir/subdir.txt0
-rw-r--r--tests/auto/corelib/io/qdir/tst_qdir.cpp71
-rw-r--r--tests/auto/corelib/io/qfile/tst_qfile.cpp25
-rw-r--r--tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp4
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp2
-rw-r--r--tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp2
-rw-r--r--tests/auto/corelib/io/qprocess/tst_qprocess.cpp2
-rw-r--r--tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp29
-rw-r--r--tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp6
-rw-r--r--tests/auto/corelib/io/qsettings/tst_qsettings.cpp4
-rw-r--r--tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp12
-rw-r--r--tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp6
-rw-r--r--tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp6
-rw-r--r--tests/auto/corelib/io/qurl/tst_qurl.cpp7
-rw-r--r--tests/auto/corelib/io/qurluts46/testdata/IdnaTestV2.txt358
-rw-r--r--tests/auto/corelib/io/qurluts46/tst_qurluts46.cpp12
-rw-r--r--tests/auto/corelib/itemmodels/CMakeLists.txt3
-rw-r--r--tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp11
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel/CMakeLists.txt15
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp (renamed from tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp)1
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.h (renamed from tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h)0
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/CMakeLists.txt7
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp12
-rw-r--r--tests/auto/corelib/kernel/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/kernel/qapplicationstatic/CMakeLists.txt8
-rw-r--r--tests/auto/corelib/kernel/qapplicationstatic/tst_qapplicationstatic.cpp65
-rw-r--r--tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp3
-rw-r--r--tests/auto/corelib/kernel/qjnienvironment/testdata/src/org/qtproject/qt/android/testdata/QtJniEnvironmentTestClass.java10
-rw-r--r--tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp50
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp4
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp9
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp23
-rw-r--r--tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp60
-rw-r--r--tests/auto/corelib/kernel/qsystemsemaphore/tst_qsystemsemaphore.cpp2
-rw-r--r--tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp1
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp6
-rw-r--r--tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp7
-rw-r--r--tests/auto/corelib/plugin/qplugin/invalidplugin/main.cpp1
-rw-r--r--tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp30
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/corrupt1.elf64.sobin239745 -> 0 bytes
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/corrupt2.elf64.sobin240097 -> 0 bytes
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/corrupt3.elf64.sobin240097 -> 0 bytes
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage1.so4
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage2.so1
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage3.so1
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage4.so1
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage5.so2
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/fakeplugin.cpp60
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/CMakeLists.txt29
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/theoldplugin.cpp105
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/theoldplugin.h46
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp745
-rw-r--r--tests/auto/corelib/plugin/quuid/tst_quuid.cpp2
-rw-r--r--tests/auto/corelib/text/CMakeLists.txt2
-rw-r--r--tests/auto/corelib/text/qanystringview/.gitignore1
-rw-r--r--tests/auto/corelib/text/qanystringview/CMakeLists.txt11
-rw-r--r--tests/auto/corelib/text/qanystringview/tst_qanystringview.cpp634
-rw-r--r--tests/auto/corelib/text/qbytearrayapisymmetry/tst_qbytearrayapisymmetry.cpp2
-rw-r--r--tests/auto/corelib/text/qbytearraylist/tst_qbytearraylist.cpp28
-rw-r--r--tests/auto/corelib/text/qchar/tst_qchar.cpp20
-rw-r--r--tests/auto/corelib/text/qcollator/tst_qcollator.cpp19
-rw-r--r--tests/auto/corelib/text/qlocale/tst_qlocale.cpp29
-rw-r--r--tests/auto/corelib/text/qregularexpression/tst_qregularexpression.cpp14
-rw-r--r--tests/auto/corelib/text/qstringapisymmetry/tst_qstringapisymmetry.cpp86
-rw-r--r--tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp57
-rw-r--r--tests/auto/corelib/text/qstringview/tst_qstringview.cpp12
-rw-r--r--tests/auto/corelib/text/qtextboundaryfinder/data/GraphemeBreakTest.txt6
-rw-r--r--tests/auto/corelib/text/qtextboundaryfinder/data/LineBreakTest.txt60
-rw-r--r--tests/auto/corelib/text/qtextboundaryfinder/data/LineBreakTest.txt.full60
-rw-r--r--tests/auto/corelib/text/qtextboundaryfinder/data/SentenceBreakTest.txt6
-rw-r--r--tests/auto/corelib/text/qtextboundaryfinder/data/WordBreakTest.html6
-rw-r--r--tests/auto/corelib/text/qtextboundaryfinder/data/WordBreakTest.txt6
-rw-r--r--tests/auto/corelib/text/qtextboundaryfinder/data/WordBreakTest.txt.full6
-rw-r--r--tests/auto/corelib/text/qunicodetools/CMakeLists.txt (renamed from tests/auto/gui/util/qshadernodes/CMakeLists.txt)12
-rw-r--r--tests/auto/corelib/text/qunicodetools/tst_qunicodetools.cpp224
-rw-r--r--tests/auto/corelib/thread/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/thread/qfuture/tst_qfuture.cpp674
-rw-r--r--tests/auto/corelib/thread/qfuturewatcher/tst_qfuturewatcher.cpp38
-rw-r--r--tests/auto/corelib/thread/qthread/tst_qthread.cpp60
-rw-r--r--tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp144
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp2
-rw-r--r--tests/auto/corelib/time/qcalendar/CMakeLists.txt2
-rw-r--r--tests/auto/corelib/time/qcalendar/tst_qcalendar.cpp48
-rw-r--r--tests/auto/corelib/time/qdate/tst_qdate.cpp34
-rw-r--r--tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp30
-rw-r--r--tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp193
-rw-r--r--tests/auto/corelib/tools/CMakeLists.txt9
-rw-r--r--tests/auto/corelib/tools/collections/tst_collections.cpp80
-rw-r--r--tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp12
-rw-r--r--tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp2
-rw-r--r--tests/auto/corelib/tools/qduplicatetracker/tst_qduplicatetracker.cpp16
-rw-r--r--tests/auto/corelib/tools/qhash/tst_qhash.cpp85
-rw-r--r--tests/auto/corelib/tools/qhashfunctions/tst_qhashfunctions.cpp36
-rw-r--r--tests/auto/corelib/tools/qhashseed/tst_qhashseed.cpp41
-rw-r--r--tests/auto/corelib/tools/qlist/tst_qlist.cpp140
-rw-r--r--tests/auto/corelib/tools/qoffsetstringarray/CMakeLists.txt7
-rw-r--r--tests/auto/corelib/tools/qoffsetstringarray/tst_qoffsetstringarray.cpp28
-rw-r--r--tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp12
-rw-r--r--tests/auto/corelib/tools/qset/tst_qset.cpp4
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/externaltests.cpp2
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp6
-rw-r--r--tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp32
-rw-r--r--tests/auto/gui/image/qicon/tst_qicon.cpp3
-rw-r--r--tests/auto/gui/image/qimage/tst_qimage.cpp7
-rw-r--r--tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp4
-rw-r--r--tests/auto/gui/image/qmovie/tst_qmovie.cpp1
-rw-r--r--tests/auto/gui/image/qpixmap/tst_qpixmap.cpp16
-rw-r--r--tests/auto/gui/kernel/qclipboard/tst_qclipboard.cpp3
-rw-r--r--tests/auto/gui/kernel/qguiapplication/BLACKLIST3
-rw-r--r--tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp148
-rw-r--r--tests/auto/gui/kernel/qwindow/tst_qwindow.cpp27
-rw-r--r--tests/auto/gui/painting/qpainter/tst_qpainter.cpp2
-rw-r--r--tests/auto/gui/rhi/qrhi/BLACKLIST3
-rw-r--r--tests/auto/gui/rhi/qrhi/tst_qrhi.cpp394
-rw-r--r--tests/auto/gui/text/qfont/CMakeLists.txt1
-rw-r--r--tests/auto/gui/text/qfont/datastream.515bin0 -> 121 bytes
-rw-r--r--tests/auto/gui/text/qfont/testfont.qrc1
-rw-r--r--tests/auto/gui/text/qfont/tst_qfont.cpp40
-rw-r--r--tests/auto/gui/text/qfontcache/tst_qfontcache.cpp47
-rw-r--r--tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp32
-rw-r--r--tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp18
-rw-r--r--tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp280
-rw-r--r--tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp6
-rw-r--r--tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp112
-rw-r--r--tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp66
-rw-r--r--tests/auto/gui/text/qtextmarkdownwriter/data/listsAndCodeBlocks.md7
-rw-r--r--tests/auto/gui/util/CMakeLists.txt5
-rw-r--r--tests/auto/gui/util/qdoublevalidator/tst_qdoublevalidator.cpp97
-rw-r--r--tests/auto/gui/util/qshadergenerator/CMakeLists.txt13
-rw-r--r--tests/auto/gui/util/qshadergenerator/tst_qshadergenerator.cpp1428
-rw-r--r--tests/auto/gui/util/qshadergraph/CMakeLists.txt13
-rw-r--r--tests/auto/gui/util/qshadergraph/tst_qshadergraph.cpp815
-rw-r--r--tests/auto/gui/util/qshadergraphloader/CMakeLists.txt13
-rw-r--r--tests/auto/gui/util/qshadergraphloader/tst_qshadergraphloader.cpp627
-rw-r--r--tests/auto/gui/util/qshadernodes/tst_qshadernodes.cpp548
-rw-r--r--tests/auto/gui/util/qshadernodesloader/CMakeLists.txt13
-rw-r--r--tests/auto/gui/util/qshadernodesloader/tst_qshadernodesloader.cpp327
-rw-r--r--tests/auto/gui/util/qundogroup/tst_qundogroup.cpp2
-rw-r--r--tests/auto/gui/util/qundostack/tst_qundostack.cpp2
-rw-r--r--tests/auto/network/access/http2/tst_http2.cpp84
-rw-r--r--tests/auto/network/access/qhttpnetworkreply/tst_qhttpnetworkreply.cpp74
-rw-r--r--tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp8
-rw-r--r--tests/auto/network/kernel/CMakeLists.txt9
-rw-r--r--tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp31
-rw-r--r--tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp2
-rw-r--r--tests/auto/network/kernel/qnetworkinformation/tst_qnetworkinformation.cpp93
-rw-r--r--tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp13
-rw-r--r--tests/auto/network/socket/qsctpsocket/tst_qsctpsocket.cpp2
-rw-r--r--tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp2
-rw-r--r--tests/auto/other/CMakeLists.txt1
-rw-r--r--tests/auto/other/qaccessibility/CMakeLists.txt2
-rw-r--r--tests/auto/other/qaccessibilitymac/tst_qaccessibilitymac_helpers.mm21
-rw-r--r--tests/auto/printsupport/CMakeLists.txt2
-rw-r--r--tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp2
-rw-r--r--tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp17
-rw-r--r--tests/auto/testlib/selftests/crashes/tst_crashes.cpp2
-rw-r--r--tests/auto/testlib/selftests/expected_verifyexceptionthrown.junitxml16
-rw-r--r--tests/auto/testlib/selftests/expected_verifyexceptionthrown.lightxml20
-rw-r--r--tests/auto/testlib/selftests/expected_verifyexceptionthrown.tap40
-rw-r--r--tests/auto/testlib/selftests/expected_verifyexceptionthrown.teamcity15
-rw-r--r--tests/auto/testlib/selftests/expected_verifyexceptionthrown.txt15
-rw-r--r--tests/auto/testlib/selftests/expected_verifyexceptionthrown.xml20
-rw-r--r--tests/auto/testlib/selftests/expected_warnings.junitxml60
-rw-r--r--tests/auto/testlib/selftests/expected_warnings.lightxml112
-rw-r--r--tests/auto/testlib/selftests/expected_warnings.tap105
-rw-r--r--tests/auto/testlib/selftests/expected_warnings.teamcity36
-rw-r--r--tests/auto/testlib/selftests/expected_warnings.txt48
-rw-r--r--tests/auto/testlib/selftests/expected_warnings.xml112
-rwxr-xr-xtests/auto/testlib/selftests/generate_expected_output.py8
-rw-r--r--tests/auto/testlib/selftests/verifyexceptionthrown/tst_verifyexceptionthrown.cpp69
-rw-r--r--tests/auto/testlib/selftests/warnings/tst_warnings.cpp103
-rw-r--r--tests/auto/tools/CMakeLists.txt9
-rw-r--r--tests/auto/tools/macdeployqt/CMakeLists.txt10
-rw-r--r--tests/auto/tools/macdeployqt/source_basicapp/basicapp.pro1
-rw-r--r--tests/auto/tools/macdeployqt/source_basicapp/main.cpp44
-rw-r--r--tests/auto/tools/macdeployqt/source_plugin_sqlite/main.cpp36
-rw-r--r--tests/auto/tools/macdeployqt/source_plugin_sqlite/plugin_sqlite.pro2
-rw-r--r--tests/auto/tools/macdeployqt/source_plugin_tls/main.cpp35
-rw-r--r--tests/auto/tools/macdeployqt/source_plugin_tls/plugin_tls.pro2
-rw-r--r--tests/auto/tools/macdeployqt/tst_macdeployqt.cpp316
-rw-r--r--tests/auto/tools/moc/CMakeLists.txt4
-rw-r--r--tests/auto/tools/moc/tst_moc.cpp41
-rw-r--r--tests/auto/tools/uic/baseline/config.ui.py2
-rw-r--r--tests/auto/tools/windeployqt/CMakeLists.txt4
-rw-r--r--tests/auto/tools/windeployqt/test/CMakeLists.txt11
-rw-r--r--tests/auto/tools/windeployqt/testapp/CMakeLists.txt21
-rw-r--r--tests/auto/tools/windeployqt/testapp/main.cpp (renamed from tests/baselineserver/src/main.cpp)41
-rw-r--r--tests/auto/tools/windeployqt/tst_windeployqt.cpp181
-rw-r--r--tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp52
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp16
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp2
-rw-r--r--tests/auto/widgets/itemviews/qabstractitemview/qtlogo.pngbin0 -> 2991 bytes
-rw-r--r--tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp230
-rw-r--r--tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp2
-rw-r--r--tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp2
-rw-r--r--tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp85
-rw-r--r--tests/auto/widgets/kernel/CMakeLists.txt1
-rw-r--r--tests/auto/widgets/kernel/qaction/tst_qaction.cpp74
-rw-r--r--tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp4
-rw-r--r--tests/auto/widgets/kernel/qwidget/BLACKLIST9
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp1017
-rw-r--r--tests/auto/widgets/kernel/qwidget_window/BLACKLIST3
-rw-r--r--tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp17
-rw-r--r--tests/auto/widgets/kernel/qwidgetrepaintmanager/CMakeLists.txt10
-rw-r--r--tests/auto/widgets/kernel/qwidgetrepaintmanager/tst_qwidgetrepaintmanager.cpp367
-rw-r--r--tests/auto/widgets/styles/qmacstyle/tst_qmacstyle.cpp8
-rw-r--r--tests/auto/widgets/util/qsystemtrayicon/tst_qsystemtrayicon.cpp2
-rw-r--r--tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp39
-rw-r--r--tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp4
-rw-r--r--tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp45
-rw-r--r--tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp105
-rw-r--r--tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp31
-rw-r--r--tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp58
-rw-r--r--tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp63
-rw-r--r--tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp329
-rw-r--r--tests/auto/xml/dom/qdom/tst_qdom.cpp18
-rw-r--r--tests/baseline/CMakeLists.txt7
-rw-r--r--tests/baseline/painting/.gitignore (renamed from tests/auto/other/lancelot/.gitignore)0
-rw-r--r--tests/baseline/painting/CMakeLists.txt (renamed from tests/auto/other/lancelot/CMakeLists.txt)27
-rw-r--r--tests/baseline/painting/images.qrc (renamed from tests/auto/other/lancelot/images.qrc)0
-rw-r--r--tests/baseline/painting/images/alpha.png (renamed from tests/auto/other/lancelot/images/alpha.png)bin2422 -> 2422 bytes
-rw-r--r--tests/baseline/painting/images/alpha2x2.png (renamed from tests/auto/other/lancelot/images/alpha2x2.png)bin78 -> 78 bytes
-rw-r--r--tests/baseline/painting/images/bitmap.png (renamed from tests/auto/other/lancelot/images/bitmap.png)bin254 -> 254 bytes
-rw-r--r--tests/baseline/painting/images/border.png (renamed from tests/auto/other/lancelot/images/border.png)bin182 -> 182 bytes
-rw-r--r--tests/baseline/painting/images/borderimage.png (renamed from tests/auto/other/lancelot/images/borderimage.png)bin826 -> 826 bytes
-rw-r--r--tests/baseline/painting/images/dome_argb32.png (renamed from tests/auto/other/lancelot/images/dome_argb32.png)bin18234 -> 18234 bytes
-rw-r--r--tests/baseline/painting/images/dome_indexed.png (renamed from tests/auto/other/lancelot/images/dome_indexed.png)bin7946 -> 7946 bytes
-rw-r--r--tests/baseline/painting/images/dome_indexed_mask.png (renamed from tests/auto/other/lancelot/images/dome_indexed_mask.png)bin5411 -> 5411 bytes
-rw-r--r--tests/baseline/painting/images/dome_mono.png (renamed from tests/auto/other/lancelot/images/dome_mono.png)bin1391 -> 1391 bytes
-rw-r--r--tests/baseline/painting/images/dome_mono_128.png (renamed from tests/auto/other/lancelot/images/dome_mono_128.png)bin2649 -> 2649 bytes
-rw-r--r--tests/baseline/painting/images/dome_mono_palette.png (renamed from tests/auto/other/lancelot/images/dome_mono_palette.png)bin1404 -> 1404 bytes
-rw-r--r--tests/baseline/painting/images/dome_rgb32.png (renamed from tests/auto/other/lancelot/images/dome_rgb32.png)bin17890 -> 17890 bytes
-rw-r--r--tests/baseline/painting/images/dot.png (renamed from tests/auto/other/lancelot/images/dot.png)bin287 -> 287 bytes
-rw-r--r--tests/baseline/painting/images/face.png (renamed from tests/auto/other/lancelot/images/face.png)bin2414 -> 2414 bytes
-rw-r--r--tests/baseline/painting/images/gam030.png (renamed from tests/auto/other/lancelot/images/gam030.png)bin213 -> 213 bytes
-rw-r--r--tests/baseline/painting/images/gam045.png (renamed from tests/auto/other/lancelot/images/gam045.png)bin216 -> 216 bytes
-rw-r--r--tests/baseline/painting/images/gam056.png (renamed from tests/auto/other/lancelot/images/gam056.png)bin216 -> 216 bytes
-rw-r--r--tests/baseline/painting/images/gam100.png (renamed from tests/auto/other/lancelot/images/gam100.png)bin205 -> 205 bytes
-rw-r--r--tests/baseline/painting/images/gam200.png (renamed from tests/auto/other/lancelot/images/gam200.png)bin187 -> 187 bytes
-rw-r--r--tests/baseline/painting/images/image.png (renamed from tests/auto/other/lancelot/images/image.png)bin169554 -> 169554 bytes
-rw-r--r--tests/baseline/painting/images/mask.png (renamed from tests/auto/other/lancelot/images/mask.png)bin274 -> 274 bytes
-rw-r--r--tests/baseline/painting/images/mask_100.png (renamed from tests/auto/other/lancelot/images/mask_100.png)bin319 -> 319 bytes
-rw-r--r--tests/baseline/painting/images/masked.png (renamed from tests/auto/other/lancelot/images/masked.png)bin788 -> 788 bytes
-rw-r--r--tests/baseline/painting/images/sign.png (renamed from tests/auto/other/lancelot/images/sign.png)bin10647 -> 10647 bytes
-rw-r--r--tests/baseline/painting/images/solid.png (renamed from tests/auto/other/lancelot/images/solid.png)bin607 -> 607 bytes
-rw-r--r--tests/baseline/painting/images/solid2x2.png (renamed from tests/auto/other/lancelot/images/solid2x2.png)bin75 -> 75 bytes
-rw-r--r--tests/baseline/painting/images/struct-image-01.jpg (renamed from tests/auto/other/lancelot/images/struct-image-01.jpg)bin4751 -> 4751 bytes
-rw-r--r--tests/baseline/painting/images/struct-image-01.png (renamed from tests/auto/other/lancelot/images/struct-image-01.png)bin63238 -> 63238 bytes
-rw-r--r--tests/baseline/painting/images/zebra.png (renamed from tests/auto/other/lancelot/images/zebra.png)bin426 -> 426 bytes
-rw-r--r--tests/baseline/painting/paintcommands.cpp (renamed from tests/auto/other/lancelot/paintcommands.cpp)18
-rw-r--r--tests/baseline/painting/paintcommands.h (renamed from tests/auto/other/lancelot/paintcommands.h)1
-rw-r--r--tests/baseline/painting/scripts/aliasing.qps (renamed from tests/auto/other/lancelot/scripts/aliasing.qps)0
-rw-r--r--tests/baseline/painting/scripts/arcs.qps (renamed from tests/auto/other/lancelot/scripts/arcs.qps)0
-rw-r--r--tests/baseline/painting/scripts/arcs2.qps (renamed from tests/auto/other/lancelot/scripts/arcs2.qps)0
-rw-r--r--tests/baseline/painting/scripts/background.qps (renamed from tests/auto/other/lancelot/scripts/background.qps)0
-rw-r--r--tests/baseline/painting/scripts/background_brush.qps (renamed from tests/auto/other/lancelot/scripts/background_brush.qps)0
-rw-r--r--tests/baseline/painting/scripts/beziers.qps (renamed from tests/auto/other/lancelot/scripts/beziers.qps)0
-rw-r--r--tests/baseline/painting/scripts/bitmaps.qps (renamed from tests/auto/other/lancelot/scripts/bitmaps.qps)0
-rw-r--r--tests/baseline/painting/scripts/borderimage.qps (renamed from tests/auto/other/lancelot/scripts/borderimage.qps)0
-rw-r--r--tests/baseline/painting/scripts/brush_pens.qps (renamed from tests/auto/other/lancelot/scripts/brush_pens.qps)0
-rw-r--r--tests/baseline/painting/scripts/brushes.qps (renamed from tests/auto/other/lancelot/scripts/brushes.qps)0
-rw-r--r--tests/baseline/painting/scripts/clippath_antialiasing.qps76
-rw-r--r--tests/baseline/painting/scripts/clippaths.qps (renamed from tests/auto/other/lancelot/scripts/clippaths.qps)0
-rw-r--r--tests/baseline/painting/scripts/clipping.qps (renamed from tests/auto/other/lancelot/scripts/clipping.qps)0
-rw-r--r--tests/baseline/painting/scripts/clipping_state.qps (renamed from tests/auto/other/lancelot/scripts/clipping_state.qps)0
-rw-r--r--tests/baseline/painting/scripts/cliprects.qps (renamed from tests/auto/other/lancelot/scripts/cliprects.qps)0
-rw-r--r--tests/baseline/painting/scripts/conical_gradients.qps (renamed from tests/auto/other/lancelot/scripts/conical_gradients.qps)0
-rw-r--r--tests/baseline/painting/scripts/conical_gradients_perspectives.qps (renamed from tests/auto/other/lancelot/scripts/conical_gradients_perspectives.qps)0
-rw-r--r--tests/baseline/painting/scripts/cosmetic.qps55
-rw-r--r--tests/baseline/painting/scripts/dashes.qps (renamed from tests/auto/other/lancelot/scripts/dashes.qps)0
-rw-r--r--tests/baseline/painting/scripts/degeneratebeziers.qps (renamed from tests/auto/other/lancelot/scripts/degeneratebeziers.qps)0
-rw-r--r--tests/baseline/painting/scripts/deviceclipping.qps (renamed from tests/auto/other/lancelot/scripts/deviceclipping.qps)0
-rw-r--r--tests/baseline/painting/scripts/drawpoints.qps (renamed from tests/auto/other/lancelot/scripts/drawpoints.qps)0
-rw-r--r--tests/baseline/painting/scripts/ellipses.qps (renamed from tests/auto/other/lancelot/scripts/ellipses.qps)0
-rw-r--r--tests/baseline/painting/scripts/fillrect.qps (renamed from tests/auto/other/lancelot/scripts/fillrect.qps)0
-rw-r--r--tests/baseline/painting/scripts/fillrect_aa.qps (renamed from tests/auto/other/lancelot/scripts/fillrect_aa.qps)0
-rw-r--r--tests/baseline/painting/scripts/filltest.qps (renamed from tests/auto/other/lancelot/scripts/filltest.qps)0
-rw-r--r--tests/baseline/painting/scripts/glyphruns.qps (renamed from tests/auto/other/lancelot/scripts/glyphruns.qps)0
-rw-r--r--tests/baseline/painting/scripts/gradients.qps (renamed from tests/auto/other/lancelot/scripts/gradients.qps)0
-rw-r--r--tests/baseline/painting/scripts/gradientxform_device.qps (renamed from tests/auto/other/lancelot/scripts/gradientxform_device.qps)0
-rw-r--r--tests/baseline/painting/scripts/gradientxform_logical.qps (renamed from tests/auto/other/lancelot/scripts/gradientxform_logical.qps)0
-rw-r--r--tests/baseline/painting/scripts/gradientxform_object.qps (renamed from tests/auto/other/lancelot/scripts/gradientxform_object.qps)0
-rw-r--r--tests/baseline/painting/scripts/hinting.qps (renamed from tests/auto/other/lancelot/scripts/hinting.qps)0
-rw-r--r--tests/baseline/painting/scripts/image_dpr.qps (renamed from tests/auto/other/lancelot/scripts/image_dpr.qps)0
-rw-r--r--tests/baseline/painting/scripts/image_formats.qps (renamed from tests/auto/other/lancelot/scripts/image_formats.qps)0
-rw-r--r--tests/baseline/painting/scripts/images.qps (renamed from tests/auto/other/lancelot/scripts/images.qps)0
-rw-r--r--tests/baseline/painting/scripts/images2.qps (renamed from tests/auto/other/lancelot/scripts/images2.qps)0
-rw-r--r--tests/baseline/painting/scripts/join_cap_styles.qps (renamed from tests/auto/other/lancelot/scripts/join_cap_styles.qps)0
-rw-r--r--tests/baseline/painting/scripts/join_cap_styles_duplicate_control_points.qps (renamed from tests/auto/other/lancelot/scripts/join_cap_styles_duplicate_control_points.qps)0
-rw-r--r--tests/baseline/painting/scripts/linear_gradients.qps (renamed from tests/auto/other/lancelot/scripts/linear_gradients.qps)0
-rw-r--r--tests/baseline/painting/scripts/linear_gradients_perspectives.qps (renamed from tests/auto/other/lancelot/scripts/linear_gradients_perspectives.qps)0
-rw-r--r--tests/baseline/painting/scripts/linear_resolving_gradients.qps (renamed from tests/auto/other/lancelot/scripts/linear_resolving_gradients.qps)0
-rw-r--r--tests/baseline/painting/scripts/lineconsistency.qps (renamed from tests/auto/other/lancelot/scripts/lineconsistency.qps)0
-rw-r--r--tests/baseline/painting/scripts/linedashes.qps (renamed from tests/auto/other/lancelot/scripts/linedashes.qps)0
-rw-r--r--tests/baseline/painting/scripts/linedashes2.qps (renamed from tests/auto/other/lancelot/scripts/linedashes2.qps)0
-rw-r--r--tests/baseline/painting/scripts/linedashes2_aa.qps (renamed from tests/auto/other/lancelot/scripts/linedashes2_aa.qps)0
-rw-r--r--tests/baseline/painting/scripts/lines.qps (renamed from tests/auto/other/lancelot/scripts/lines.qps)0
-rw-r--r--tests/baseline/painting/scripts/lines2.qps (renamed from tests/auto/other/lancelot/scripts/lines2.qps)0
-rw-r--r--tests/baseline/painting/scripts/lines3.qps (renamed from tests/auto/other/lancelot/scripts/lines3.qps)0
-rw-r--r--tests/baseline/painting/scripts/pathfill.qps (renamed from tests/auto/other/lancelot/scripts/pathfill.qps)0
-rw-r--r--tests/baseline/painting/scripts/paths.qps (renamed from tests/auto/other/lancelot/scripts/paths.qps)0
-rw-r--r--tests/baseline/painting/scripts/paths_aa.qps (renamed from tests/auto/other/lancelot/scripts/paths_aa.qps)0
-rw-r--r--tests/baseline/painting/scripts/pens.qps (renamed from tests/auto/other/lancelot/scripts/pens.qps)0
-rw-r--r--tests/baseline/painting/scripts/pens_aa.qps (renamed from tests/auto/other/lancelot/scripts/pens_aa.qps)0
-rw-r--r--tests/baseline/painting/scripts/pens_cosmetic.qps (renamed from tests/auto/other/lancelot/scripts/pens_cosmetic.qps)0
-rw-r--r--tests/baseline/painting/scripts/perspectives.qps (renamed from tests/auto/other/lancelot/scripts/perspectives.qps)0
-rw-r--r--tests/baseline/painting/scripts/perspectives2.qps (renamed from tests/auto/other/lancelot/scripts/perspectives2.qps)0
-rw-r--r--tests/baseline/painting/scripts/pixmap_rotation.qps (renamed from tests/auto/other/lancelot/scripts/pixmap_rotation.qps)0
-rw-r--r--tests/baseline/painting/scripts/pixmap_rotation2.qps (renamed from tests/auto/other/lancelot/scripts/pixmap_rotation2.qps)0
-rw-r--r--tests/baseline/painting/scripts/pixmap_scaling.qps (renamed from tests/auto/other/lancelot/scripts/pixmap_scaling.qps)0
-rw-r--r--tests/baseline/painting/scripts/pixmap_subpixel.qps (renamed from tests/auto/other/lancelot/scripts/pixmap_subpixel.qps)0
-rw-r--r--tests/baseline/painting/scripts/pixmaps.qps (renamed from tests/auto/other/lancelot/scripts/pixmaps.qps)0
-rw-r--r--tests/baseline/painting/scripts/porter_duff.qps (renamed from tests/auto/other/lancelot/scripts/porter_duff.qps)0
-rw-r--r--tests/baseline/painting/scripts/porter_duff2.qps (renamed from tests/auto/other/lancelot/scripts/porter_duff2.qps)0
-rw-r--r--tests/baseline/painting/scripts/primitives.qps (renamed from tests/auto/other/lancelot/scripts/primitives.qps)0
-rw-r--r--tests/baseline/painting/scripts/radial_gradients.qps (renamed from tests/auto/other/lancelot/scripts/radial_gradients.qps)0
-rw-r--r--tests/baseline/painting/scripts/radial_gradients_perspectives.qps (renamed from tests/auto/other/lancelot/scripts/radial_gradients_perspectives.qps)0
-rw-r--r--tests/baseline/painting/scripts/rasterops.qps (renamed from tests/auto/other/lancelot/scripts/rasterops.qps)0
-rw-r--r--tests/baseline/painting/scripts/richtext.qps (renamed from tests/auto/other/lancelot/scripts/richtext.qps)0
-rw-r--r--tests/baseline/painting/scripts/sizes.qps (renamed from tests/auto/other/lancelot/scripts/sizes.qps)0
-rw-r--r--tests/baseline/painting/scripts/smallcaps_path.qps9
-rw-r--r--tests/baseline/painting/scripts/statictext.qps (renamed from tests/auto/other/lancelot/scripts/statictext.qps)0
-rw-r--r--tests/baseline/painting/scripts/text.qps (renamed from tests/auto/other/lancelot/scripts/text.qps)0
-rw-r--r--tests/baseline/painting/scripts/text_perspectives.qps (renamed from tests/auto/other/lancelot/scripts/text_perspectives.qps)0
-rw-r--r--tests/baseline/painting/scripts/thinlines.qps (renamed from tests/auto/other/lancelot/scripts/thinlines.qps)0
-rw-r--r--tests/baseline/painting/scripts/tiled_pixmap.qps (renamed from tests/auto/other/lancelot/scripts/tiled_pixmap.qps)0
-rw-r--r--tests/baseline/painting/scripts/tinydashes.qps (renamed from tests/auto/other/lancelot/scripts/tinydashes.qps)0
-rw-r--r--tests/baseline/painting/tst_baseline_painting.cpp (renamed from tests/auto/other/lancelot/tst_lancelot.cpp)55
-rw-r--r--tests/baseline/shared/baselineprotocol.cpp (renamed from tests/baselineserver/shared/baselineprotocol.cpp)63
-rw-r--r--tests/baseline/shared/baselineprotocol.h (renamed from tests/baselineserver/shared/baselineprotocol.h)5
-rw-r--r--tests/baseline/shared/baselineprotocol.pri (renamed from tests/baselineserver/shared/baselineprotocol.pri)0
-rw-r--r--tests/baseline/shared/lookup3.cpp (renamed from tests/baselineserver/shared/lookup3.cpp)26
-rw-r--r--tests/baseline/shared/qbaselinetest.cpp (renamed from tests/baselineserver/shared/qbaselinetest.cpp)16
-rw-r--r--tests/baseline/shared/qbaselinetest.h (renamed from tests/baselineserver/shared/qbaselinetest.h)2
-rw-r--r--tests/baseline/shared/qbaselinetest.pri (renamed from tests/baselineserver/shared/qbaselinetest.pri)7
-rw-r--r--tests/baseline/shared/qwidgetbaselinetest.cpp189
-rw-r--r--tests/baseline/shared/qwidgetbaselinetest.h65
-rw-r--r--tests/baseline/stylesheet/CMakeLists.txt29
-rw-r--r--tests/baseline/stylesheet/icons.qrc9
-rw-r--r--tests/baseline/stylesheet/icons/align-center.pngbin0 -> 1495 bytes
-rw-r--r--tests/baseline/stylesheet/icons/align-left.pngbin0 -> 1496 bytes
-rw-r--r--tests/baseline/stylesheet/icons/align-right.pngbin0 -> 1595 bytes
-rw-r--r--tests/baseline/stylesheet/icons/arrow-up.pngbin0 -> 5935 bytes
-rw-r--r--tests/baseline/stylesheet/qss/default.qss0
-rw-r--r--tests/baseline/stylesheet/qss/qtoolbutton/no_border.qss1
-rw-r--r--tests/baseline/stylesheet/qss/qtoolbutton/styled.qss38
-rw-r--r--tests/baseline/stylesheet/qss/qtoolbutton/styled_no_border.qss42
-rw-r--r--tests/baseline/stylesheet/stylesheet.pro10
-rw-r--r--tests/baseline/stylesheet/tst_baseline_stylesheet.cpp166
-rw-r--r--tests/baseline/widgets/CMakeLists.txt13
-rw-r--r--tests/baseline/widgets/tst_baseline_widgets.cpp152
-rw-r--r--tests/baselineserver/.gitignore2
-rwxr-xr-xtests/baselineserver/bin/runserver13
-rw-r--r--tests/baselineserver/src/baselineserver.cpp853
-rw-r--r--tests/baselineserver/src/baselineserver.h151
-rw-r--r--tests/baselineserver/src/baselineserver.pro24
-rw-r--r--tests/baselineserver/src/baselineserver.qrc5
-rw-r--r--tests/baselineserver/src/report.cpp503
-rw-r--r--tests/baselineserver/src/report.h98
-rw-r--r--tests/baselineserver/src/templates/view.html84
-rw-r--r--tests/benchmarks/corelib/io/qdir/10000/tst_bench_qdir_10000.cpp2
-rw-r--r--tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp2
-rw-r--r--tests/benchmarks/corelib/io/qfile/tst_bench_qfile.cpp2
-rw-r--r--tests/benchmarks/corelib/thread/qmutex/tst_bench_qmutex.cpp6
-rw-r--r--tests/benchmarks/corelib/thread/qreadwritelock/tst_bench_qreadwritelock.cpp68
-rw-r--r--tests/benchmarks/corelib/thread/qwaitcondition/tst_bench_qwaitcondition.cpp96
-rw-r--r--tests/benchmarks/gui/painting/lancebench/CMakeLists.txt10
-rw-r--r--tests/benchmarks/gui/painting/lancebench/tst_lancebench.cpp2
-rw-r--r--tests/libfuzzer/corelib/serialization/qcborstreamreader/next/CMakeLists.txt2
-rw-r--r--tests/libfuzzer/corelib/serialization/qcborvalue/fromcbor/CMakeLists.txt2
-rw-r--r--tests/libfuzzer/corelib/serialization/qtextstream/extractionoperator-float/CMakeLists.txt2
-rw-r--r--tests/libfuzzer/corelib/serialization/qxmlstream/qxmlstreamreader/readnext/CMakeLists.txt2
-rw-r--r--tests/libfuzzer/corelib/text/qregularexpression/optimize/CMakeLists.txt2
-rw-r--r--tests/libfuzzer/corelib/time/qdatetime/fromstring/CMakeLists.txt2
-rw-r--r--tests/libfuzzer/corelib/tools/qcryptographichash/result/CMakeLists.txt2
-rw-r--r--tests/libfuzzer/gui/image/qimage/loadfromdata/CMakeLists.txt2
-rw-r--r--tests/libfuzzer/gui/painting/qcolorspace/fromiccprofile/CMakeLists.txt2
-rw-r--r--tests/libfuzzer/gui/text/qtextdocument/sethtml/CMakeLists.txt2
-rw-r--r--tests/libfuzzer/gui/text/qtextdocument/setmarkdown/CMakeLists.txt2
-rw-r--r--tests/libfuzzer/gui/text/qtextlayout/beginlayout/CMakeLists.txt2
-rw-r--r--tests/libfuzzer/network/ssl/qsslcertificate/qsslcertificate/pem/CMakeLists.txt2
-rw-r--r--tests/manual/diaglib/debugproxystyle.cpp26
-rw-r--r--tests/manual/diaglib/eventfilter.cpp34
-rw-r--r--tests/manual/diaglib/glinfo.cpp36
-rw-r--r--tests/manual/diaglib/logwidget.cpp14
-rw-r--r--tests/manual/diaglib/nativewindowdump.cpp11
-rw-r--r--tests/manual/diaglib/nativewindowdump_win.cpp6
-rw-r--r--tests/manual/diaglib/qwidgetdump.cpp27
-rw-r--r--tests/manual/diaglib/qwindowdump.cpp46
-rw-r--r--tests/manual/diaglib/textdump.cpp34
-rw-r--r--tests/manual/dialogs/filedialogpanel.cpp16
-rw-r--r--tests/manual/dialogs/fontdialogpanel.cpp2
-rw-r--r--tests/manual/dialogs/main.cpp10
-rw-r--r--tests/manual/dialogs/messageboxpanel.cpp4
-rw-r--r--tests/manual/dialogs/printdialogpanel.h34
-rw-r--r--tests/manual/filetest/main.cpp7
-rw-r--r--tests/manual/highdpi/dprgadget/CMakeLists.txt2
-rw-r--r--tests/manual/highdpi/pixelgadget/CMakeLists.txt2
-rw-r--r--tests/manual/highdpi/screengadget/CMakeLists.txt2
-rw-r--r--tests/manual/lance/CMakeLists.txt64
-rw-r--r--tests/manual/lance/lance.pro2
-rw-r--r--tests/manual/qcursor/qcursorhighdpi/main.cpp35
-rw-r--r--tests/manual/qgraphicslayout/flicker/window.h6
-rw-r--r--tests/manual/qnetworkinformation/CMakeLists.txt2
-rw-r--r--tests/manual/qnetworkinformation/mainwindow.h101
-rw-r--r--tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp93
-rw-r--r--tests/manual/rhi/CMakeLists.txt1
-rw-r--r--tests/manual/rhi/shared/buildshaders.bat2
-rw-r--r--tests/manual/rhi/shared/examplefw.h16
-rw-r--r--tests/manual/rhi/shared/texture_arr.frag19
-rw-r--r--tests/manual/rhi/shared/texture_arr.frag.qsbbin0 -> 1448 bytes
-rw-r--r--tests/manual/rhi/shared/texture_arr.vert20
-rw-r--r--tests/manual/rhi/shared/texture_arr.vert.qsbbin0 -> 1404 bytes
-rw-r--r--tests/manual/rhi/texturearray/CMakeLists.txt26
-rw-r--r--tests/manual/rhi/texturearray/texturearray.cpp198
-rw-r--r--tests/manual/rhi/triquadcube/triquadcube.cpp2
-rw-r--r--tests/manual/wasm/eventloop/CMakeLists.txt1
-rw-r--r--tests/manual/wasm/eventloop/asyncify_exec/CMakeLists.txt6
-rw-r--r--tests/manual/wasm/eventloop/asyncify_exec/main.cpp78
-rw-r--r--tests/manual/widgetgrab/main.cpp10
-rw-r--r--tests/manual/windowactivation/main.cpp150
-rw-r--r--tests/manual/windowactivation/windowactivation.pro6
-rw-r--r--tests/manual/windowchildgeometry/controllerwidget.cpp12
-rw-r--r--tests/manual/windowflags/controllerwindow.cpp34
-rw-r--r--tests/manual/windowflags/controls.cpp13
-rw-r--r--tests/manual/windowflags/previewwindow.cpp9
-rw-r--r--tests/manual/windowgeometry/controllerwidget.cpp31
-rw-r--r--tests/manual/windowgeometry/controllerwidget.h4
-rw-r--r--tests/shared/filesystem.h2
-rw-r--r--tests/shared/localechange.h5
-rwxr-xr-xutil/android/android_emulator_launcher.sh4
-rwxr-xr-xutil/cmake/configurejson2cmake.py8
-rwxr-xr-xutil/cmake/pro2cmake.py153
-rwxr-xr-xutil/harfbuzz/update-harfbuzz63
-rwxr-xr-xutil/locale_database/cldr2qlocalexml.py2
-rwxr-xr-xutil/locale_database/cldr2qtimezone.py1
-rw-r--r--util/locale_database/enumdata.py2
-rw-r--r--util/unicode/README23
-rw-r--r--util/unicode/data/ArabicShaping.txt80
-rw-r--r--util/unicode/data/BidiMirroring.txt26
-rw-r--r--util/unicode/data/Blocks.txt22
-rw-r--r--util/unicode/data/CaseFolding.txt46
-rw-r--r--util/unicode/data/DerivedAge.txt95
-rw-r--r--util/unicode/data/DerivedNormalizationProps.txt144
-rw-r--r--util/unicode/data/GraphemeBreakProperty.txt33
-rw-r--r--util/unicode/data/IdnaMappingTable.txt307
-rw-r--r--util/unicode/data/LineBreak.txt169
-rw-r--r--util/unicode/data/NormalizationCorrections.txt6
-rw-r--r--util/unicode/data/Scripts.txt213
-rw-r--r--util/unicode/data/SentenceBreakProperty.txt130
-rw-r--r--util/unicode/data/SpecialCasing.txt6
-rw-r--r--util/unicode/data/UnicodeData.txt837
-rw-r--r--util/unicode/data/WordBreakProperty.txt96
-rw-r--r--util/unicode/data/emoji-data.txt96
-rw-r--r--util/unicode/main.cpp12
-rwxr-xr-xutil/unicode/update_ucd.sh78
1566 files changed, 64394 insertions, 43994 deletions
diff --git a/.github/workflows/ninja-build.yml b/.github/workflows/ninja-build.yml
index 0b74aa7716..cdb6e7df10 100644
--- a/.github/workflows/ninja-build.yml
+++ b/.github/workflows/ninja-build.yml
@@ -38,7 +38,7 @@ jobs:
# NOTE: system libb2 is not detected because version < 0.98.1 lacks pkg-config module
# NOTE: system libharfbuzz is not detected because system has old version
deps: libgl-dev libglu-dev 'libxcb*-dev' libx11-xcb-dev libxkbcommon-x11-dev libpcre2-dev libz-dev libfreetype6-dev libpng-dev libjpeg-dev libsqlite3-dev libharfbuzz-dev libb2-dev libdouble-conversion-dev
- tools: ninja-build ccache
+ tools: ninja-build ccache gcc-10
install_cmd: sudo apt-get -y install
configure_flags: -xcb -system-sqlite -system-pcre -system-zlib -system-freetype -system-libpng -system-libjpeg -system-harfbuzz -system-libb2 -system-doubleconversion
- name: macos-10.15
@@ -65,7 +65,10 @@ jobs:
- name: prepare Linux
if: runner.os == 'Linux'
- run: sudo apt-get update
+ run: |
+ sudo apt-get update
+ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100
+ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 100
- name: prepare macOS
if: runner.os == 'macOS'
run: echo noop
@@ -124,7 +127,7 @@ jobs:
run: mkdir build
- name: configure
working-directory: build
- run: "../source/configure -cmake -opensource -confirm-license -ccache -no-pch
+ run: "../source/configure -opensource -confirm-license -ccache -no-pch
-debug -nomake tests -nomake examples
-prefix '${{ runner.temp }}'/install_dir
${{ matrix.configure_flags }}"
diff --git a/.gitignore b/.gitignore
index 6126a58ddf..a8b18d0f19 100644
--- a/.gitignore
+++ b/.gitignore
@@ -91,7 +91,7 @@ __pycache__
/bin/qglinfo
/bin/qgltf
/bin/qhelpconverter
-/bin/qhelpgenerator
+/libexec/qhelpgenerator
/bin/qlalr
/bin/qml
/bin/qmleasing
diff --git a/.qmake.conf b/.qmake.conf
deleted file mode 100644
index c95584a086..0000000000
--- a/.qmake.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-load(qt_build_config)
-CONFIG += warning_clean
-
-DEFINES += QT_NO_JAVA_STYLE_ITERATORS
-
-QT_SOURCE_TREE = $$PWD
-QT_BUILD_TREE = $$shadowed($$PWD)
-
-MODULE_VERSION = 6.3.0
diff --git a/LICENSE.FDL b/LICENSE.FDL
index 938bb8da9e..857214dd84 100644
--- a/LICENSE.FDL
+++ b/LICENSE.FDL
@@ -1,9 +1,10 @@
+
GNU Free Documentation License
Version 1.3, 3 November 2008
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
- <http://fsf.org/>
+ <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -376,7 +377,7 @@ The Free Software Foundation may publish new, revised versions of the
GNU Free Documentation License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in
detail to address new problems or concerns. See
-http://www.gnu.org/copyleft/.
+https://www.gnu.org/licenses/.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
@@ -400,19 +401,19 @@ public wiki that anybody can edit is an example of such a server. A
"Massive Multiauthor Collaboration" (or "MMC") contained in the site
means any set of copyrightable works thus published on the MMC site.
-"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-license published by Creative Commons Corporation, a not-for-profit
-corporation with a principal place of business in San Francisco,
-California, as well as future copyleft versions of that license
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
published by that same organization.
-"Incorporate" means to publish or republish a Document, in whole or in
+"Incorporate" means to publish or republish a Document, in whole or in
part, as part of another Document.
-An MMC is "eligible for relicensing" if it is licensed under this
-License, and if all works that were first published under this License
-somewhere other than this MMC, and subsequently incorporated in whole or
-in part into the MMC, (1) had no cover texts or invariant sections, and
+An MMC is "eligible for relicensing" if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole or
+in part into the MMC, (1) had no cover texts or invariant sections, and
(2) were thus incorporated prior to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the site
diff --git a/bin/qmake-and-qtpaths-wrapper.bat.in b/bin/qmake-and-qtpaths-wrapper.bat.in
new file mode 100644
index 0000000000..8225170fc9
--- /dev/null
+++ b/bin/qmake-and-qtpaths-wrapper.bat.in
@@ -0,0 +1,2 @@
+@echo off
+@host_qt_bindir@\@tool_name@.exe -qtconf "%~dp0\target_qt.conf" %*
diff --git a/bin/qmake-wrapper-for-target.in b/bin/qmake-and-qtpaths-wrapper.in
index 265ce760de..f26355af8d 100644..100755
--- a/bin/qmake-wrapper-for-target.in
+++ b/bin/qmake-and-qtpaths-wrapper.in
@@ -4,4 +4,4 @@
script_dir_path=`dirname $0`
script_dir_path=`(cd "$script_dir_path"; /bin/pwd)`
-@host_qt_bindir@/qmake -qtconf "$script_dir_path/target_qt.conf" $*
+@host_qt_bindir@/@tool_name@ -qtconf "$script_dir_path/target_qt.conf" $*
diff --git a/bin/qmake-wrapper-for-target.bat.in b/bin/qmake-wrapper-for-target.bat.in
deleted file mode 100644
index 8df27eaa44..0000000000
--- a/bin/qmake-wrapper-for-target.bat.in
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off
-@host_qt_bindir@\qmake.exe -qtconf "%~dp0\target_qt.conf" %*
diff --git a/cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake b/cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake
index 8f873c1b45..1d47a748ea 100644
--- a/cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake
+++ b/cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake
@@ -71,6 +71,30 @@ find_library(GTHREAD2_LIBRARIES
HINTS ${PC_GTHREAD2_LIBDIR}
)
+pkg_check_modules(PC_GOBJECT QUIET gobject-2.0)
+
+find_path(GOBJECT_INCLUDE_DIRS
+ NAMES glib-object.h
+ HINTS ${PC_GOBJECT_INCLUDEDIR}
+ PATH_SUFFIXES glib-2.0)
+
+find_library(GOBJECT_LIBRARIES
+ NAMES gobject-2.0
+ HINTS ${PC_GOBJECT_LIBDIR}
+)
+
+pkg_check_modules(PC_GIO QUIET gio-2.0)
+
+find_path(GIO_INCLUDE_DIRS
+ NAMES gio/gio.h
+ HINTS ${PC_GIO_INCLUDEDIR}
+ PATH_SUFFIXES glib-2.0)
+
+find_library(GIO_LIBRARIES
+ NAMES gio-2.0
+ HINTS ${PC_GIO_LIBDIR}
+)
+
# search the glibconfig.h include dir under the same root where the library is found
get_filename_component(glib2LibDir "${GLIB2_LIBRARIES}" PATH)
@@ -82,6 +106,8 @@ find_path(GLIB2_INTERNAL_INCLUDE_DIR glibconfig.h
# for now it is optional
if(GLIB2_INTERNAL_INCLUDE_DIR)
list(APPEND GLIB2_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
+ list(APPEND GOBJECT_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
+ list(APPEND GIO_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
endif()
# Deprecated synonyms
@@ -90,6 +116,8 @@ set(GLIB2_LIBRARY "${GLIB2_LIBRARIES}")
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GLIB2 DEFAULT_MSG GLIB2_LIBRARIES GTHREAD2_LIBRARIES GLIB2_INCLUDE_DIRS)
+find_package_handle_standard_args(GOBJECT DEFAULT_MSG GOBJECT_LIBRARIES GOBJECT_INCLUDE_DIRS)
+find_package_handle_standard_args(GIO DEFAULT_MSG GIO_LIBRARIES GIO_INCLUDE_DIRS)
if(GLIB2_FOUND AND NOT TARGET GLIB2::GLIB2)
add_library(GLIB2::GLIB2 UNKNOWN IMPORTED)
@@ -99,8 +127,26 @@ if(GLIB2_FOUND AND NOT TARGET GLIB2::GLIB2)
INTERFACE_INCLUDE_DIRECTORIES "${GLIB2_INCLUDE_DIRS}")
endif()
+if(GOBJECT_FOUND AND NOT TARGET GLIB2::GOBJECT)
+ add_library(GLIB2::GOBJECT UNKNOWN IMPORTED)
+ set_target_properties(GLIB2::GOBJECT PROPERTIES
+ IMPORTED_LOCATION "${GOBJECT_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GOBJECT_INCLUDE_DIRS}")
+endif()
+
+if(GIO_FOUND AND NOT TARGET GLIB2::GIO)
+ add_library(GLIB2::GIO UNKNOWN IMPORTED)
+ set_target_properties(GLIB2::GIO PROPERTIES
+ IMPORTED_LOCATION "${GIO_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GIO_INCLUDE_DIRS}")
+endif()
+
mark_as_advanced(GLIB2_INCLUDE_DIRS GLIB2_INCLUDE_DIR
- GLIB2_LIBRARIES GLIB2_LIBRARY)
+ GLIB2_LIBRARIES GLIB2_LIBRARY
+ GOBJECT_INCLUDE_DIRS GOBJECT_INCLUDE_DIR
+ GOBJECT_LIBRARIES GOBJECT_LIBRARY
+ GIO_INCLUDE_DIRS GIO_INCLUDE_DIR
+ GIO_LIBRARIES GIO_LIBRARY)
include(FeatureSummary)
set_package_properties(GLIB2 PROPERTIES
diff --git a/cmake/FindWrapVulkanHeaders.cmake b/cmake/FindWrapVulkanHeaders.cmake
index ccbcf7f708..ac2c912a56 100644
--- a/cmake/FindWrapVulkanHeaders.cmake
+++ b/cmake/FindWrapVulkanHeaders.cmake
@@ -25,8 +25,8 @@ if(Vulkan_INCLUDE_DIR)
_qt_skip_include_dir_for_pri TRUE)
# Also propagate MoltenVK include directory on Apple platforms if found.
- # Assumes the folder structure of the LunarG Vulkan SDK.
if(APPLE)
+ # Check for the LunarG Vulkan SDK folder structure.
set(__qt_molten_vk_include_path "${Vulkan_INCLUDE_DIR}/../../MoltenVK/include")
get_filename_component(
__qt_molten_vk_include_path
@@ -35,6 +35,16 @@ if(Vulkan_INCLUDE_DIR)
target_include_directories(WrapVulkanHeaders::WrapVulkanHeaders INTERFACE
${__qt_molten_vk_include_path})
endif()
+
+ # Check for homebrew molten-vk folder structure
+ set(__qt_molten_vk_homebrew_include_path "${Vulkan_INCLUDE_DIR}/../../include")
+ get_filename_component(
+ __qt_molten_vk_homebrew_include_path
+ "${__qt_molten_vk_homebrew_include_path}" ABSOLUTE)
+ if(EXISTS "${__qt_molten_vk_homebrew_include_path}")
+ target_include_directories(WrapVulkanHeaders::WrapVulkanHeaders INTERFACE
+ ${__qt_molten_vk_homebrew_include_path})
+ endif()
endif()
endif()
diff --git a/cmake/Qt3rdPartyLibraryHelpers.cmake b/cmake/Qt3rdPartyLibraryHelpers.cmake
index f2b3882fc7..1cc5ebea44 100644
--- a/cmake/Qt3rdPartyLibraryHelpers.cmake
+++ b/cmake/Qt3rdPartyLibraryHelpers.cmake
@@ -241,14 +241,19 @@ function(qt_internal_add_3rdparty_library target)
)
write_basic_package_version_file(
- "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
+ qt_internal_write_qt_package_version_file(
+ "${INSTALL_CMAKE_NAMESPACE}${target}"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
+ )
qt_install(FILES
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}Config.cmake"
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
DESTINATION "${config_install_dir}"
COMPONENT Devel
)
diff --git a/cmake/QtAutoDetect.cmake b/cmake/QtAutoDetect.cmake
index 5c6cba89ae..8450035084 100644
--- a/cmake/QtAutoDetect.cmake
+++ b/cmake/QtAutoDetect.cmake
@@ -16,57 +16,46 @@ function(qt_internal_ensure_static_qt_config)
endif()
endfunction()
+include("${CMAKE_CURRENT_LIST_DIR}/QtPublicWasmToolchainHelpers.cmake")
function(qt_auto_detect_wasm)
if("${QT_QMAKE_TARGET_MKSPEC}" STREQUAL "wasm-emscripten")
if (NOT DEFINED ENV{EMSDK})
message(FATAL_ERROR
- "Can't find EMSDK! Make sure EMSDK environment variable "
- "is available and emcc is in your path.")
+ "Can't find an Emscripten SDK! Make sure the EMSDK environment variable is "
+ "available by activating and sourcing the emscripten sdk. Also ensure emcc is in "
+ "your path.")
endif()
- if(NOT DEFINED QT_AUTODETECT_WASM)
- # detect EMSCRIPTEN_ROOT path
- file(READ "$ENV{EMSDK}/.emscripten" ver)
- string(REGEX MATCH "EMSCRIPTEN_ROOT.*$" EMROOT "${ver}")
- string(REGEX MATCH "'([^' ]*)'" EMROOT2 "${EMROOT}")
- string(REPLACE "'" "" EMROOT_PATH "${EMROOT2}")
-
- # get emscripten version
- if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
- set (EXECUTE_COMMANDPATH "$ENV{EMSDK}/${EMROOT_PATH}/emcc.bat")
- else()
- set (EXECUTE_COMMANDPATH "$ENV{EMSDK}/${EMROOT_PATH}/emcc")
- endif()
+ if(NOT DEFINED QT_AUTODETECT_WASM_IS_DONE)
+ message(STATUS "Extracting Emscripten SDK info from EMSDK env var: $ENV{EMSDK}")
+ __qt_internal_get_emroot_path_suffix_from_emsdk_env(EMROOT_PATH)
- file(TO_NATIVE_PATH "${EXECUTE_COMMANDPATH}" EXECUTE_COMMAND)
- execute_process(COMMAND ${EXECUTE_COMMAND} --version
- OUTPUT_VARIABLE emOutput
- OUTPUT_STRIP_TRAILING_WHITESPACE
- ERROR_VARIABLE emrun_error
- RESULT_VARIABLE result)
- if(NOT emOutput)
- message(FATAL_ERROR
- "Can't determine Emscripten version! Error: ${emrun_error}")
- endif()
- string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" CMAKE_EMSDK_REGEX_VERSION "${emOutput}")
- set(EMCC_VERSION "${CMAKE_EMSDK_REGEX_VERSION}" CACHE STRING INTERNAL FORCE)
+ __qt_internal_query_emsdk_version("${EMROOT_PATH}" TRUE CMAKE_EMSDK_REGEX_VERSION)
+ set(EMCC_VERSION "${CMAKE_EMSDK_REGEX_VERSION}" CACHE STRING INTERNAL FORCE)
- # find toolchain file
+ # Find toolchain file
if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
- set(wasm_toolchain_file "$ENV{EMSDK}/${EMROOT_PATH}/cmake/Modules/Platform/Emscripten.cmake")
+ __qt_internal_get_emscripten_cmake_toolchain_file_path_from_emsdk_env(
+ "${EMROOT_PATH}" wasm_toolchain_file)
set(CMAKE_TOOLCHAIN_FILE "${wasm_toolchain_file}" CACHE STRING "" FORCE)
endif()
if(EXISTS "${CMAKE_TOOLCHAIN_FILE}")
- message(STATUS "Emscripten ${CMAKE_EMSDK_REGEX_VERSION} toolchain file detected at ${CMAKE_TOOLCHAIN_FILE}")
+ message(STATUS
+ "Emscripten ${EMCC_VERSION} toolchain file detected at ${CMAKE_TOOLCHAIN_FILE}")
else()
- message(FATAL_ERROR "Cannot find the toolchain file Emscripten.cmake. "
- "Please specify the toolchain file with -DCMAKE_TOOLCHAIN_FILE=<file>.")
+ __qt_internal_show_error_no_emscripten_toolchain_file_found_when_building_qt()
endif()
- set(QT_AUTODETECT_WASM TRUE CACHE BOOL "")
qt_internal_ensure_static_qt_config()
- # this version of Qt needs this version of emscripten
- set(QT_EMCC_RECOMMENDED_VERSION 2.0.14 CACHE STRING INTERNAL FORCE)
+
+ __qt_internal_get_emcc_recommended_version(recommended_version)
+ set(QT_EMCC_RECOMMENDED_VERSION "${recommended_version}" CACHE STRING INTERNAL FORCE)
+
+ set(QT_AUTODETECT_WASM_IS_DONE TRUE CACHE BOOL "")
+ else()
+ message(STATUS
+ "Reusing cached Emscripten ${EMCC_VERSION} toolchain file detected at "
+ "${CMAKE_TOOLCHAIN_FILE}")
endif()
endif()
endfunction()
@@ -342,9 +331,6 @@ function(qt_internal_get_xcode_version out_var)
execute_process(COMMAND /usr/bin/xcrun xcodebuild -version
OUTPUT_VARIABLE xcode_version
ERROR_VARIABLE xcrun_error)
- if(NOT xcode_version)
- message(NOTICE "Can't determine Xcode version. Error: ${xcrun_error}")
- endif()
string(REPLACE "\n" " " xcode_version "${xcode_version}")
string(STRIP "${xcode_version}" xcode_version)
set(${out_var} "${xcode_version}" PARENT_SCOPE)
@@ -444,6 +430,12 @@ function(qt_auto_detect_integrity)
endif()
endfunction()
+# Let CMake load our custom platform modules.
+# CMake-provided platform modules take precedence.
+if(NOT QT_AVOID_CUSTOM_PLATFORM_MODULES)
+ list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/platforms")
+endif()
+
qt_auto_detect_cmake_generator()
qt_auto_detect_cyclic_toolchain()
qt_auto_detect_cmake_config()
diff --git a/cmake/QtAutogenHelpers.cmake b/cmake/QtAutogenHelpers.cmake
index 489678bdf2..a583af568f 100644
--- a/cmake/QtAutogenHelpers.cmake
+++ b/cmake/QtAutogenHelpers.cmake
@@ -36,7 +36,7 @@ function(qt_enable_autogen_tool target tool enable)
# 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")
+ AUTOMOC_MACRO_NAMES "Q_OBJECT;Q_GADGET;Q_GADGET_EXPORT;Q_NAMESPACE;Q_NAMESPACE_EXPORT;Q_ENUM_NS")
if (TARGET Qt::Platform)
get_target_property(_abi_tag Qt::Platform qt_libcpp_abi_tag)
diff --git a/cmake/QtBaseConfigureTests.cmake b/cmake/QtBaseConfigureTests.cmake
index 717ea1248e..ae16e8e53b 100644
--- a/cmake/QtBaseConfigureTests.cmake
+++ b/cmake/QtBaseConfigureTests.cmake
@@ -138,9 +138,34 @@ VERS_1;
set(TEST_ld_version_script "${HAVE_LD_VERSION_SCRIPT}" CACHE INTERNAL "linker version script support")
endfunction()
+function(qt_internal_ensure_latest_win_nt_api)
+ if(NOT WIN32)
+ return()
+ endif()
+ check_cxx_source_compiles([=[
+ #include <windows.h>
+ #if !defined(_WIN32_WINNT) && !defined(WINVER)
+ #error "_WIN32_WINNT and WINVER are not defined"
+ #endif
+ #if defined(_WIN32_WINNT) && (_WIN32_WINNT < 0x0A00)
+ #error "_WIN32_WINNT version too low"
+ #endif
+ #if defined(WINVER) && (WINVER < 0x0A00)
+ #error "WINVER version too low"
+ #endif
+ int main() { return 0; }
+ ]=] HAVE_WIN10_WIN32_WINNT)
+ if(NOT HAVE_WIN10_WIN32_WINNT)
+ list(APPEND QT_PLATFORM_DEFINITIONS _WIN32_WINNT=0x0A00 WINVER=0x0A00)
+ set(QT_PLATFORM_DEFINITIONS ${QT_PLATFORM_DEFINITIONS}
+ CACHE STRING "Qt platform specific pre-processor defines" FORCE)
+ endif()
+endfunction()
+
function(qt_run_qtbase_config_tests)
qt_run_config_test_architecture()
qt_run_linker_version_script_support()
+ qt_internal_ensure_latest_win_nt_api()
endfunction()
# The qmake build of android does not perform the right architecture tests and
diff --git a/cmake/QtBaseGlobalTargets.cmake b/cmake/QtBaseGlobalTargets.cmake
index ed23a3fe7f..bddc597bdb 100644
--- a/cmake/QtBaseGlobalTargets.cmake
+++ b/cmake/QtBaseGlobalTargets.cmake
@@ -35,14 +35,19 @@ configure_file(
)
write_basic_package_version_file(
- "${__build_internals_build_dir}/${INSTALL_CMAKE_NAMESPACE}BuildInternalsConfigVersion.cmake"
+ "${__build_internals_build_dir}/${INSTALL_CMAKE_NAMESPACE}BuildInternalsConfigVersionImpl.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
+qt_internal_write_qt_package_version_file(
+ "${INSTALL_CMAKE_NAMESPACE}BuildInternals"
+ "${__build_internals_build_dir}/${INSTALL_CMAKE_NAMESPACE}BuildInternalsConfigVersion.cmake"
+)
qt_install(FILES
"${__build_internals_build_dir}/${INSTALL_CMAKE_NAMESPACE}BuildInternalsConfig.cmake"
"${__build_internals_build_dir}/${INSTALL_CMAKE_NAMESPACE}BuildInternalsConfigVersion.cmake"
+ "${__build_internals_build_dir}/${INSTALL_CMAKE_NAMESPACE}BuildInternalsConfigVersionImpl.cmake"
"${__build_internals_build_dir}/QtBuildInternalsExtra.cmake"
DESTINATION "${__build_internals_install_dir}"
COMPONENT Devel
@@ -105,7 +110,7 @@ qt_feature_module_end(GlobalConfig OUT_VAR_PREFIX "__GlobalConfig_")
qt_generate_global_config_pri_file()
qt_generate_global_module_pri_file()
qt_generate_global_device_pri_file()
-qt_generate_qmake_wrapper_for_target()
+qt_generate_qmake_and_qtpaths_wrapper_for_target()
add_library(Qt::GlobalConfig ALIAS GlobalConfig)
@@ -172,15 +177,20 @@ configure_file(
)
write_basic_package_version_file(
- "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigVersion.cmake"
+ "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigVersionImpl.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
+qt_internal_write_qt_package_version_file(
+ "${INSTALL_CMAKE_NAMESPACE}"
+ "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigVersion.cmake"
+)
qt_install(FILES
"${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}Config.cmake"
"${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigExtras.cmake"
"${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigVersion.cmake"
+ "${__GlobalConfig_build_dir}/${INSTALL_CMAKE_NAMESPACE}ConfigVersionImpl.cmake"
DESTINATION "${__GlobalConfig_install_dir}"
COMPONENT Devel
)
@@ -199,6 +209,7 @@ qt_copy_or_install(FILES
cmake/QtBuildInformation.cmake
cmake/QtCMakeHelpers.cmake
cmake/QtCMakeVersionHelpers.cmake
+ cmake/QtCMakePackageVersionFile.cmake.in
cmake/QtCompilerFlags.cmake
cmake/QtCompilerOptimization.cmake
cmake/QtConfigDependencies.cmake.in
@@ -265,6 +276,11 @@ qt_copy_or_install(FILES
DESTINATION "${__GlobalConfig_install_dir}"
)
+# Install our custom platform modules.
+qt_copy_or_install(DIRECTORY cmake/platforms
+ DESTINATION "${__GlobalConfig_install_dir}"
+)
+
# Install public config.tests files.
qt_copy_or_install(DIRECTORY
"config.tests/static_link_order"
@@ -285,6 +301,10 @@ set(__public_cmake_helpers
cmake/QtPublicWalkLibsHelpers.cmake
cmake/QtPublicFindPackageHelpers.cmake
cmake/QtPublicDependencyHelpers.cmake
+
+ # Public CMake files that are installed next Qt6Config.cmake, but are NOT included by it.
+ # Instead they are included by the generated CMake toolchain file.
+ cmake/QtPublicWasmToolchainHelpers.cmake
)
qt_copy_or_install(FILES ${__public_cmake_helpers} DESTINATION "${__GlobalConfig_install_dir}")
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index cf79f3d971..a4d8c49ad1 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -266,15 +266,26 @@ endfunction()
qt_setup_tool_path_command()
function(qt_internal_generate_tool_command_wrapper)
- if(NOT CMAKE_HOST_WIN32 OR DEFINED QT_TOOL_COMMAND_WRAPPER_PATH)
+ get_property(is_called GLOBAL PROPERTY _qt_internal_generate_tool_command_wrapper_called)
+ if(NOT CMAKE_HOST_WIN32 OR is_called)
return()
endif()
set(bindir "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/${INSTALL_BINDIR}")
file(TO_NATIVE_PATH "${bindir}" bindir)
- set(QT_TOOL_COMMAND_WRAPPER_PATH "${QT_BUILD_DIR}/${INSTALL_LIBEXECDIR}/qt_setup_tool_path.bat"
+ set(tool_command_wrapper_path "${QT_BUILD_DIR}/${INSTALL_LIBEXECDIR}/qt_setup_tool_path.bat")
+ if(CMAKE_VERSION VERSION_LESS 3.18)
+ # TODO: It doesn't make sense to generate wrapper at generator stage. Since file(CONFIGURE
+ # was added in CMake 3.18, keep file(GENERATE for compatibility, until the minimum required
+ # version is raised to 3.18.
+ file(GENERATE OUTPUT "${tool_command_wrapper_path}" CONTENT
+ "@echo off\r\nset PATH=${bindir}$<SEMICOLON>%PATH%\r\n%*")
+ else()
+ file(CONFIGURE OUTPUT "${tool_command_wrapper_path}" CONTENT
+ "@echo off\r\nset PATH=${bindir};%PATH%\r\n%*")
+ endif()
+ set(QT_TOOL_COMMAND_WRAPPER_PATH "${tool_command_wrapper_path}"
CACHE INTERNAL "Path to the wrapper of the tool commands")
- file(GENERATE OUTPUT "${QT_TOOL_COMMAND_WRAPPER_PATH}" CONTENT
- "@echo off\r\nset PATH=${bindir}$<SEMICOLON>%PATH%\r\n%*")
+ set_property(GLOBAL PROPERTY _qt_internal_generate_tool_command_wrapper_called TRUE)
endfunction()
qt_internal_generate_tool_command_wrapper()
@@ -299,15 +310,13 @@ if(WIN32)
endif()
if (MINGW)
- list(APPEND QT_DEFAULT_PLATFORM_DEFINITIONS _WIN32_WINNT=0x0601 MINGW_HAS_SECURE_API=1)
+ list(APPEND QT_DEFAULT_PLATFORM_DEFINITIONS MINGW_HAS_SECURE_API=1)
endif()
elseif(LINUX)
if(GCC)
set(QT_DEFAULT_MKSPEC linux-g++)
elseif(CLANG)
set(QT_DEFAULT_MKSPEC linux-clang)
- elseif(ICC)
- set(QT_DEFAULT_MKSPEC linux-icc-64)
endif()
elseif(ANDROID)
if(GCC)
diff --git a/cmake/QtBuildInformation.cmake b/cmake/QtBuildInformation.cmake
index e09f64e958..a3adf81094 100644
--- a/cmake/QtBuildInformation.cmake
+++ b/cmake/QtBuildInformation.cmake
@@ -292,10 +292,10 @@ function(qt_configure_process_add_summary_build_type_and_config)
set(message "Compiler: ")
if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
string(APPEND message "clang (Apple)")
+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
+ string(APPEND message "clang (Intel LLVM)")
elseif(CLANG)
string(APPEND message "clang")
- elseif(ICC)
- string(APPEND message "intel_icc")
elseif(QCC)
string(APPEND message "rim_qcc")
elseif(GCC)
diff --git a/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake b/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake
index 4bd0d745cc..632bbdc67b 100644
--- a/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake
+++ b/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake
@@ -370,6 +370,23 @@ endmacro()
macro(qt_build_repo_begin)
qt_build_internals_set_up_private_api()
+
+ # Prevent installation 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, add bail out code to
+ # cmake_install.cmake.
+ if(NOT QT_WILL_INSTALL)
+ # In a top-level build, print a message only in qtbase, which is the first repository.
+ if(NOT QT_SUPERBUILD OR (PROJECT_NAME STREQUAL "QtBase"))
+ install(CODE [[message(FATAL_ERROR
+ "Qt was configured as non-prefix build. "
+ "Installation is not supported for this arrangement.")]])
+ endif()
+
+ install(CODE [[return()]])
+ endif()
+
qt_enable_cmake_languages()
# Add global docs targets that will work both for per-repo builds, and super builds.
@@ -610,12 +627,21 @@ macro(qt_build_tests)
# prefix. For super builds it needs to be done in qt5/CMakeLists.txt.
qt_set_up_fake_standalone_tests_install_prefix()
endif()
+ else()
+ if(ANDROID)
+ # When building in-tree tests we need to specify the QT_ANDROID_ABIS list. Since we
+ # build Qt for the single ABI, build tests for this ABI only.
+ set(QT_ANDROID_ABIS "${CMAKE_ANDROID_ARCH_ABI}")
+ endif()
endif()
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/auto/CMakeLists.txt")
add_subdirectory(auto)
endif()
if(NOT QT_BUILD_MINIMAL_STATIC_TESTS)
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/baseline/CMakeLists.txt")
+ add_subdirectory(baseline)
+ endif()
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/CMakeLists.txt" AND QT_BUILD_BENCHMARKS)
add_subdirectory(benchmarks)
endif()
diff --git a/cmake/QtBuildInternalsExtra.cmake.in b/cmake/QtBuildInternalsExtra.cmake.in
index 6c76c17093..cbd70b1f7b 100644
--- a/cmake/QtBuildInternalsExtra.cmake.in
+++ b/cmake/QtBuildInternalsExtra.cmake.in
@@ -20,8 +20,10 @@ get_filename_component(QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX
# If an explicit installation prefix is specified, honor it.
# This is an attempt to support Conan, aka handle installation of modules into a
# different installation prefix than the original one. Also allow to opt out via a special variable.
+# In a top-level build, QtSetup.cmake takes care of setting CMAKE_INSTALL_PREFIX.
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND
- NOT QT_BUILD_INTERNALS_NO_FORCE_SET_INSTALL_PREFIX)
+ NOT QT_BUILD_INTERNALS_NO_FORCE_SET_INSTALL_PREFIX
+ AND NOT QT_SUPERBUILD)
set(qtbi_orig_prefix "@CMAKE_INSTALL_PREFIX@")
set(qtbi_new_prefix "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}")
if(CMAKE_HOST_WIN32)
diff --git a/cmake/QtCMakeHelpers.cmake b/cmake/QtCMakeHelpers.cmake
index e47d9878e1..d1d4fb9054 100644
--- a/cmake/QtCMakeHelpers.cmake
+++ b/cmake/QtCMakeHelpers.cmake
@@ -184,3 +184,25 @@ function(qt_internal_get_target_property out_var target property)
endif()
set(${out_var} "${result}" PARENT_SCOPE)
endfunction()
+
+# Creates a wrapper ConfigVersion.cmake file to be loaded by find_package when checking for
+# compatible versions. It expects a ConfigVersionImpl.cmake file in the same directory which will
+# be included to do the regular version checks.
+# The version check result might be overridden by the wrapper.
+# package_name is used by the content of the wrapper file to include the basic package version file.
+# example: Qt6Gui
+# out_path should be the build path where the write the file.
+function(qt_internal_write_qt_package_version_file package_name out_path)
+ set(extra_code "")
+
+ # Need to check for FEATURE_developer_build as well, because QT_FEATURE_developer_build is not
+ # yet available when configuring the file for the BuildInternals package.
+ if(FEATURE_developer_build OR QT_FEATURE_developer_build)
+ string(APPEND extra_code "
+# Disabling version check because Qt was configured with -developer-build.
+set(__qt_disable_package_version_check TRUE)
+set(__qt_disable_package_version_check_due_to_developer_build TRUE)")
+ endif()
+
+ configure_file("${QT_CMAKE_DIR}/QtCMakePackageVersionFile.cmake.in" "${out_path}" @ONLY)
+endfunction()
diff --git a/cmake/QtCMakePackageVersionFile.cmake.in b/cmake/QtCMakePackageVersionFile.cmake.in
new file mode 100644
index 0000000000..f668e614c5
--- /dev/null
+++ b/cmake/QtCMakePackageVersionFile.cmake.in
@@ -0,0 +1,55 @@
+# Include the basic version config file to get results of regular version checking.
+include("${CMAKE_CURRENT_LIST_DIR}/@package_name@ConfigVersionImpl.cmake")
+
+set(__qt_disable_package_version_check FALSE)
+
+# Allow to opt out of the version check.
+if(QT_NO_PACKAGE_VERSION_CHECK)
+ set(__qt_disable_package_version_check TRUE)
+endif()
+
+@extra_code@
+
+if((NOT PACKAGE_VERSION_COMPATIBLE) OR PACKAGE_VERSION_UNSUITABLE)
+ set(__qt_package_version_incompatible TRUE)
+else()
+ set(__qt_package_version_incompatible FALSE)
+endif()
+
+if(__qt_disable_package_version_check)
+ # Warn if version check is disabled regardless if it's a Qt repo build or user project build.
+ # Allow to opt out of warning.
+ if(__qt_package_version_incompatible AND NOT QT_NO_PACKAGE_VERSION_INCOMPATIBLE_WARNING)
+ message(WARNING
+ "Package ${PACKAGE_FIND_NAME} with version ${PACKAGE_VERSION} was accepted as "
+ "compatible because QT_NO_PACKAGE_VERSION_CHECK was set to TRUE. There is no guarantee "
+ "the build will succeed. You can silence this warning by passing "
+ "-DQT_NO_PACKAGE_VERSION_INCOMPATIBLE_WARNING=TRUE")
+ endif()
+
+ # Mark version as compatible. This is how we disable the version check.
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ unset(PACKAGE_VERSION_UNSUITABLE)
+
+# If QT_REPO_MODULE_VERSION is set, that means we are building a Qt repo. Show message that one can
+# disable the check if they need to.
+elseif(QT_REPO_MODULE_VERSION AND __qt_package_version_incompatible)
+ if(PACKAGE_FIND_VERSION_RANGE)
+ set(__qt_package_version_message_prefix "Version range ${PACKAGE_FIND_VERSION_RANGE}")
+ else()
+ set(__qt_package_version_message_prefix "Version ${PACKAGE_FIND_VERSION}")
+ endif()
+
+ message(WARNING
+ "${__qt_package_version_message_prefix} of package ${PACKAGE_FIND_NAME} was requested but "
+ "an incompatible version was found: ${PACKAGE_VERSION}. You can pass "
+ "-DQT_NO_PACKAGE_VERSION_CHECK=TRUE to disable the version check and force the "
+ "incompatible version to be used. There is no guarantee the build will succeed. "
+ "Use at your own risk. "
+ "You can silence this warning by passing -DQT_NO_PACKAGE_VERSION_INCOMPATIBLE_WARNING=TRUE")
+endif()
+
+unset(__qt_disable_package_version_check)
+unset(__qt_disable_package_version_check_due_to_developer_build)
+unset(__qt_package_version_message_prefix)
+unset(__qt_package_version_incompatible)
diff --git a/cmake/QtCMakeVersionHelpers.cmake b/cmake/QtCMakeVersionHelpers.cmake
index a42e1a523f..c594da99b4 100644
--- a/cmake/QtCMakeVersionHelpers.cmake
+++ b/cmake/QtCMakeVersionHelpers.cmake
@@ -189,6 +189,19 @@ function(qt_internal_warn_about_buggy_cmake_versions)
# https://gitlab.kitware.com/cmake/cmake/-/issues/16776
list(APPEND unsuitable_versions "3.21.0")
+ # qt_ensure_perl fails to find perl in host PATH via find_program
+ # due to Android Platform module setting CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH to OFF
+ # Fixed in 3.20.6, 3.21.3. not a problem in CMake versions earlier than 3.20.0
+ # https://gitlab.kitware.com/cmake/cmake/-/issues/22634
+ # https://gitlab.kitware.com/cmake/cmake/-/merge_requests/5357
+ # https://gitlab.kitware.com/cmake/cmake/-/merge_requests/6528
+ if(ANDROID AND CMAKE_HOST_WIN32)
+ list(APPEND unsuitable_versions
+ "3.20.0" "3.20.1" "3.20.2" "3.20.3" "3.20.4" "3.20.5"
+ "3.21.0" "3.21.1" "3.21.2"
+ )
+ endif()
+
foreach(unsuitable_version ${unsuitable_versions})
if(CMAKE_VERSION VERSION_EQUAL unsuitable_version)
message(WARNING
diff --git a/cmake/QtCompilerFlags.cmake b/cmake/QtCompilerFlags.cmake
index a376ac0097..a34aaca20b 100644
--- a/cmake/QtCompilerFlags.cmake
+++ b/cmake/QtCompilerFlags.cmake
@@ -1,6 +1,8 @@
-# Set warnings. All compilers except MSVC support -Wall -Wextra
-# Allow opting out by setting a QT_COMPILE_WARNINGS_OFF property on targets. This would be the
-# equivalent of qmake's CONFIG += warn_off.
+# Enable compiler warnings by default. All compilers except MSVC support -Wall -Wextra
+#
+# You can disable the warnings for specific targets (for instance containing 3rd party code)
+# by calling qt_disable_warnings(target). This will set the QT_COMPILE_OPTIONS_DISABLE_WARNINGS
+# property checked below, and is equivalent to qmake's CONFIG += warn_off.
set(_qt_compiler_warning_flags_on "")
set(_qt_compiler_warning_flags_off "")
@@ -9,7 +11,11 @@ if (MSVC)
list(APPEND _qt_compiler_warning_flags_on /W3)
list(APPEND _qt_compiler_warning_flags_off -W0)
else()
- list(APPEND _qt_compiler_warning_flags_on -Wall -Wextra)
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "GHS") # There is no -Wextra flag for GHS compiler.
+ list(APPEND _qt_compiler_warning_flags_on -Wall)
+ else()
+ list(APPEND _qt_compiler_warning_flags_on -Wall -Wextra)
+ endif()
list(APPEND _qt_compiler_warning_flags_off -w)
endif()
diff --git a/cmake/QtCompilerOptimization.cmake b/cmake/QtCompilerOptimization.cmake
index 952ace6652..f2ae3c3143 100644
--- a/cmake/QtCompilerOptimization.cmake
+++ b/cmake/QtCompilerOptimization.cmake
@@ -85,50 +85,6 @@ if (winrt) # FIXME: Correct variable
set(QT_CFLAGS_SHANI "-arch:SSE2")
endif()
-if (ICC)
- if (MSVC)
- set(QT_CFLAGS_SSE2 "-QxSSE2")
- set(QT_CFLAGS_SSE3 "-QxSSE3")
- set(QT_CFLAGS_SSSE3 "-QxSSSE3")
- set(QT_CFLAGS_SSE4_1 "-QxSSE4.1")
- set(QT_CFLAGS_SSE4_2 "-QxSSE4.2")
- set(QT_CFLAGS_AVX "-QxAVX")
- set(QT_CFLAGS_AVX2 "-QxCORE-AVX2")
- set(QT_CFLAGS_AVX512F "-QxCOMMON-AVX512")
- set(QT_CFLAGS_AVX512CD "-QxCOMMON-AVX512")
- set(QT_CFLAGS_AVX512ER "-QxMIC-AVX512")
- set(QT_CFLAGS_AVX512PF "-QxMIC-AVX512")
- set(QT_CFLAGS_AVX512DQ "-QxCORE-AVX512")
- set(QT_CFLAGS_AVX512BW "-QxCORE-AVX512")
- set(QT_CFLAGS_AVX512VL "-QxCORE-AVX512")
- set(QT_CFLAGS_F16C "${QT_CFLAGS_AVX2}")
- set(QT_CFLAGS_AESNI "-QxSSE2")
- set(QT_CFLAGS_RDRND "")
- set(QT_CFLAGS_RDSEED "")
- set(QT_CFLAGS_SHANI "-QxSSE4.2")
- else()
- set(QT_CFLAGS_SSE2 "-msse2")
- set(QT_CFLAGS_SSE3 "-msse3")
- set(QT_CFLAGS_SSSE3 "-mssse3")
- set(QT_CFLAGS_SSE4_1 "-msse4.1")
- set(QT_CFLAGS_SSE4_2 "-msse4.2")
- set(QT_CFLAGS_AVX "-march=core-avx")
- set(QT_CFLAGS_AVX2 "-march=core-avx2")
- set(QT_CFLAGS_AVX512F "-march=broadwell -xCOMMON-AVX512")
- set(QT_CFLAGS_AVX512CD "-march=broadwell -xCOMMON-AVX512")
- set(QT_CFLAGS_AVX512ER "-march=knl")
- set(QT_CFLAGS_AVX512PF "-march=knl")
- set(QT_CFLAGS_AVX512DQ "-march=skylake-avx512")
- set(QT_CFLAGS_AVX512BW "-march=skylake-avx512")
- set(QT_CFLAGS_AVX512VL "-march=skylake-avx512")
- set(QT_CFLAGS_AESNI "-maes")
- set(QT_CFLAGS_F16C "${QT_CFLAGS_AVX2}")
- set(QT_CFLAGS_RDRND "-mrdrnd")
- set(QT_CFLAGS_RDSEED "-mrdseed")
- set(QT_CFLAGS_SHANI "-msha")
- endif()
-endif()
-
# Fall through is important, so that more specific flags that might be missing are set by the
# previous base cases.
# This mirrors qmake's mkspecs QMAKE_CFLAGS_OPTIMIZE assignments (mostly).
@@ -148,7 +104,7 @@ if(GCC OR CLANG AND NOT WASM)
endif()
# Flags that CMake might set, aka flags the compiler would see as valid values.
-if(GCC OR CLANG OR QCC OR ICC)
+if(GCC OR CLANG OR QCC)
set(QT_CFLAGS_OPTIMIZE_VALID_VALUES "-O0" "-O1" "-O2" "-O3" "-Os" "-Oz")
endif()
@@ -184,19 +140,12 @@ if (QCC)
set(QT_CFLAGS_OPTIMIZE_FULL "-O3")
endif()
-if(ICC)
- if(MSVC)
- set(QT_CFLAGS_OPTIMIZE_FULL "-O3")
- else()
- # Should inherit gcc base
- set(QT_CFLAGS_OPTIMIZE "-O2")
- set(QT_CFLAGS_OPTIMIZE_SIZE "-Os")
- endif()
-endif()
-
if(WASM)
set(QT_CFLAGS_OPTIMIZE "-O2")
set(QT_CFLAGS_OPTIMIZE_FULL "-O3")
set(QT_CFLAGS_OPTIMIZE_SIZE "-Os")
set(QT_CFLAGS_OPTIMIZE_DEBUG "-g2")
+
+ set(QT_CFLAGS_SSE2 -O2 -msimd128 -msse -msse2)
+
endif()
diff --git a/cmake/QtConfig.cmake.in b/cmake/QtConfig.cmake.in
index 75e15226dd..93f3f5246c 100644
--- a/cmake/QtConfig.cmake.in
+++ b/cmake/QtConfig.cmake.in
@@ -142,7 +142,8 @@ foreach(module ${@INSTALL_CMAKE_NAMESPACE@_FIND_COMPONENTS})
# Allow opt out just in case.
# TODO: Handle a hypothetical QT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH
# See QTBUG-94524
- set(__qt_find_package_host_qt_path "${QT_HOST_PATH}/lib/cmake")
+ get_filename_component(__qt_find_package_host_qt_path
+ "${Qt@PROJECT_VERSION_MAJOR@HostInfo_DIR}/.." ABSOLUTE)
set(__qt_backup_cmake_prefix_path "${CMAKE_PREFIX_PATH}")
set(__qt_backup_cmake_find_root_path "${CMAKE_FIND_ROOT_PATH}")
list(PREPEND CMAKE_PREFIX_PATH "${__qt_find_package_host_qt_path}")
diff --git a/cmake/QtDocsHelpers.cmake b/cmake/QtDocsHelpers.cmake
index d534ee3e8b..ae8034318e 100644
--- a/cmake/QtDocsHelpers.cmake
+++ b/cmake/QtDocsHelpers.cmake
@@ -46,7 +46,7 @@ function(qt_internal_add_docs)
set(qdoc_bin "${doc_tools_bin}/qdoc${CMAKE_EXECUTABLE_SUFFIX}")
set(qtattributionsscanner_bin "${doc_tools_libexec}/qtattributionsscanner${CMAKE_EXECUTABLE_SUFFIX}")
- set(qhelpgenerator_bin "${doc_tools_bin}/qhelpgenerator${CMAKE_EXECUTABLE_SUFFIX}")
+ set(qhelpgenerator_bin "${doc_tools_libexec}/qhelpgenerator${CMAKE_EXECUTABLE_SUFFIX}")
get_target_property(target_type ${target} TYPE)
if (NOT target_type STREQUAL "INTERFACE_LIBRARY")
@@ -101,13 +101,17 @@ function(qt_internal_add_docs)
# prepare docs target
set(prepare_qdoc_args
-outputdir "${qdoc_output_dir}"
- -installdir "${QT_INSTALL_DIR}/${INSTALL_DOCDIR}"
"${target_source_dir}/${doc_project}"
-prepare
-indexdir "${index_dir}"
-no-link-errors
"${include_path_args}"
)
+ if(NOT QT_BUILD_ONLINE_DOCS)
+ list(PREPEND prepare_qdoc_args
+ -installdir "${QT_INSTALL_DIR}/${INSTALL_DOCDIR}"
+ )
+ endif()
if(QT_SUPERBUILD)
set(qt_install_docs_env "${QtBase_BINARY_DIR}/${INSTALL_DOCDIR}")
@@ -134,14 +138,18 @@ function(qt_internal_add_docs)
add_dependencies(prepare_docs_${target} qattributionsscanner_${target})
# generate docs target
- set(generate_qdocs_args
+ set(generate_qdoc_args
-outputdir "${qdoc_output_dir}"
- -installdir "${INSTALL_DOCDIR}"
"${target_source_dir}/${doc_project}"
-generate
-indexdir "${index_dir}"
"${include_path_args}"
)
+ if(NOT QT_BUILD_ONLINE_DOCS)
+ list(PREPEND generate_qdoc_args
+ -installdir "${QT_INSTALL_DIR}/${INSTALL_DOCDIR}"
+ )
+ endif()
foreach(target_prefix generate_top_level_docs generate_repo_docs generate_docs)
set(depends_arg "")
@@ -150,7 +158,7 @@ function(qt_internal_add_docs)
endif()
add_custom_target(${target_prefix}_${target}
${depends_arg}
- COMMAND ${CMAKE_COMMAND} -E env ${qdoc_env_args} ${qdoc_bin} ${generate_qdocs_args})
+ COMMAND ${CMAKE_COMMAND} -E env ${qdoc_env_args} ${qdoc_bin} ${generate_qdoc_args})
endforeach()
add_dependencies(generate_docs_${target} prepare_docs_${target})
diff --git a/cmake/QtExecutableHelpers.cmake b/cmake/QtExecutableHelpers.cmake
index 75fe0d10dd..3d0933942a 100644
--- a/cmake/QtExecutableHelpers.cmake
+++ b/cmake/QtExecutableHelpers.cmake
@@ -71,6 +71,14 @@ function(qt_internal_add_executable name)
endif()
qt_set_common_target_properties(${name})
+ if(ANDROID)
+ # The above call to qt_set_common_target_properties() sets the symbol
+ # visibility to hidden, but for Android, we need main() to not be hidden
+ # because it has to be loadable at runtime using dlopen().
+ set_property(TARGET ${name} PROPERTY C_VISIBILITY_PRESET default)
+ set_property(TARGET ${name} PROPERTY CXX_VISIBILITY_PRESET default)
+ endif()
+
qt_autogen_tools_initial_setup(${name})
qt_skip_warnings_are_errors_when_repo_unclean("${name}")
diff --git a/cmake/QtFeature.cmake b/cmake/QtFeature.cmake
index 2d200c0e2e..c5e882649c 100644
--- a/cmake/QtFeature.cmake
+++ b/cmake/QtFeature.cmake
@@ -269,7 +269,11 @@ endfunction()
# Saves the final user value to QT_FEATURE_${feature}, after checking that the condition is met.
macro(qt_feature_check_and_save_internal_value
feature saved_user_value condition label conditionExpression)
- set(result "${saved_user_value}")
+ if(${saved_user_value})
+ set(result ON)
+ else()
+ set(result OFF)
+ endif()
if ((NOT condition) AND result)
_qt_internal_dump_expression_values(conditionDump "${conditionExpression}")
@@ -797,7 +801,19 @@ function(qt_config_compile_test name)
# If the repo has its own cmake modules, include those in the module path, so that various
# find_package calls work.
if(EXISTS "${PROJECT_SOURCE_DIR}/cmake")
- list(APPEND flags "-DCMAKE_MODULE_PATH:STRING=${PROJECT_SOURCE_DIR}/cmake")
+ set(must_append_module_path_flag TRUE)
+ set(flags_copy "${flags}")
+ set(flags)
+ foreach(flag IN LISTS flags_copy)
+ if(flag MATCHES "^-DCMAKE_MODULE_PATH:STRING=")
+ set(must_append_module_path_flag FALSE)
+ set(flag "${flag}\\;${PROJECT_SOURCE_DIR}/cmake")
+ endif()
+ list(APPEND flags "${flag}")
+ endforeach()
+ if(must_append_module_path_flag)
+ list(APPEND flags "-DCMAKE_MODULE_PATH:STRING=${PROJECT_SOURCE_DIR}/cmake")
+ endif()
endif()
# Pass which packages need to be found.
@@ -864,6 +880,18 @@ function(qt_config_compile_test name)
endif()
endif()
+ # Pass override values for CMAKE_SYSTEM_{PREFIX|FRAMEWORK}_PATH.
+ if(DEFINED QT_CMAKE_SYSTEM_PREFIX_PATH_BACKUP)
+ set(path_list ${CMAKE_SYSTEM_PREFIX_PATH})
+ string(REPLACE ";" "\\;" path_list "${path_list}")
+ list(APPEND flags "-DQT_CONFIG_COMPILE_TEST_CMAKE_SYSTEM_PREFIX_PATH=${path_list}")
+ endif()
+ if(DEFINED QT_CMAKE_SYSTEM_FRAMEWORK_PATH_BACKUP)
+ set(path_list ${CMAKE_SYSTEM_FRAMEWORK_PATH})
+ string(REPLACE ";" "\\;" path_list "${path_list}")
+ list(APPEND flags "-DQT_CONFIG_COMPILE_TEST_CMAKE_SYSTEM_FRAMEWORK_PATH=${path_list}")
+ endif()
+
if(NOT arg_CMAKE_FLAGS)
set(arg_CMAKE_FLAGS "")
endif()
@@ -903,6 +931,7 @@ function(qt_config_compile_test name)
set(_save_CMAKE_C_STANDARD "${CMAKE_C_STANDARD}")
set(_save_CMAKE_CXX_STANDARD "${CMAKE_CXX_STANDARD}")
set(_save_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
+ set(_save_CMAKE_TRY_COMPILE_PLATFORM_VARIABLES "${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES}")
if(arg_C_STANDARD)
set(CMAKE_C_STANDARD "${arg_C_STANDARD}")
@@ -924,6 +953,11 @@ function(qt_config_compile_test name)
list(APPEND CMAKE_REQUIRED_FLAGS "-Zc:__cplusplus")
endif()
+ # Let CMake load our custom platform modules.
+ if(NOT QT_AVOID_CUSTOM_PLATFORM_MODULES)
+ list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CMAKE_MODULE_PATH)
+ endif()
+
set(_save_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
set(CMAKE_REQUIRED_LIBRARIES "${arg_LIBRARIES}")
check_cxx_source_compiles("${arg_UNPARSED_ARGUMENTS} ${arg_CODE}" HAVE_${name})
@@ -932,6 +966,7 @@ function(qt_config_compile_test name)
set(CMAKE_C_STANDARD "${_save_CMAKE_C_STANDARD}")
set(CMAKE_CXX_STANDARD "${_save_CMAKE_CXX_STANDARD}")
set(CMAKE_REQUIRED_FLAGS "${_save_CMAKE_REQUIRED_FLAGS}")
+ set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES "${_save_CMAKE_TRY_COMPILE_PLATFORM_VARIABLES}")
endif()
endif()
@@ -945,6 +980,17 @@ function(qt_get_platform_try_compile_vars out_var)
# Use the regular variables that are used for source-based try_compile() calls.
set(flags "${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES}")
+ # Pass custom flags.
+ list(APPEND flags "CMAKE_C_FLAGS")
+ list(APPEND flags "CMAKE_C_FLAGS_DEBUG")
+ list(APPEND flags "CMAKE_C_FLAGS_RELEASE")
+ list(APPEND flags "CMAKE_C_FLAGS_RELWITHDEBINFO")
+ list(APPEND flags "CMAKE_CXX_FLAGS")
+ list(APPEND flags "CMAKE_CXX_FLAGS_DEBUG")
+ list(APPEND flags "CMAKE_CXX_FLAGS_RELEASE")
+ list(APPEND flags "CMAKE_CXX_FLAGS_RELWITHDEBINFO")
+ list(APPEND flags "CMAKE_OBJCOPY")
+
# Pass toolchain files.
if(CMAKE_TOOLCHAIN_FILE)
list(APPEND flags "CMAKE_TOOLCHAIN_FILE")
@@ -965,6 +1011,11 @@ function(qt_get_platform_try_compile_vars out_var)
endif()
endforeach()
+ # Let CMake load our custom platform modules.
+ if(NOT QT_AVOID_CUSTOM_PLATFORM_MODULES)
+ list(APPEND flags_cmd_line "-DCMAKE_MODULE_PATH:STRING=${QT_CMAKE_DIR}/platforms")
+ endif()
+
# Pass darwin specific options.
# The architectures need to be passed explicitly to project-based try_compile calls even on
# macOS, so that arm64 compilation works on Apple silicon.
@@ -982,6 +1033,9 @@ function(qt_get_platform_try_compile_vars out_var)
list(APPEND flags_cmd_line "-DCMAKE_OSX_SYSROOT:STRING=${QT_UIKIT_SDK}")
endif()
endif()
+ if(QT_NO_USE_FIND_PACKAGE_SYSTEM_ENVIRONMENT_PATH)
+ list(APPEND flags_cmd_line "-DCMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH:BOOL=OFF")
+ endif()
set("${out_var}" "${flags_cmd_line}" PARENT_SCOPE)
endfunction()
diff --git a/cmake/QtFindPackageHelpers.cmake b/cmake/QtFindPackageHelpers.cmake
index 8519922f85..da96f3f176 100644
--- a/cmake/QtFindPackageHelpers.cmake
+++ b/cmake/QtFindPackageHelpers.cmake
@@ -300,6 +300,20 @@ function(qt_record_extra_third_party_dependency main_target_name dep_target)
endif()
endfunction()
+# Sets out_var to TRUE if the non-namespaced ${lib} target is exported as part of Qt6Targets.cmake.
+function(qt_internal_is_lib_part_of_qt6_package lib out_var)
+ if (lib STREQUAL "Platform"
+ OR lib STREQUAL "GlobalConfig"
+ OR lib STREQUAL "GlobalConfigPrivate"
+ OR lib STREQUAL "PlatformModuleInternal"
+ OR lib STREQUAL "PlatformPluginInternal"
+ OR lib STREQUAL "PlatformToolInternal")
+ set(${out_var} "TRUE" PARENT_SCOPE)
+ else()
+ set(${out_var} "FALSE" PARENT_SCOPE)
+ endif()
+endfunction()
+
# This function stores the list of Qt targets 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)
@@ -308,22 +322,31 @@ function(qt_register_target_dependencies target public_libs private_libs)
set(target_deps "")
endif()
- # Only process private dependencies if target is a static library
get_target_property(target_type ${target} TYPE)
set(lib_list ${public_libs})
- if (target_type STREQUAL "STATIC_LIBRARY")
+
+ set(target_is_shared FALSE)
+ set(target_is_static FALSE)
+ if(target_type STREQUAL "SHARED_LIBRARY")
+ set(target_is_shared TRUE)
+ elseif(target_type STREQUAL "STATIC_LIBRARY")
+ set(target_is_static TRUE)
+ endif()
+
+ # Record 'Qt::Foo'-like private dependencies of static library targets, this will be used to
+ # generate find_dependency() calls.
+ #
+ # Private static library dependencies will become $<LINK_ONLY:> dependencies in
+ # INTERFACE_LINK_LIBRARIES.
+ if(target_is_static)
list(APPEND lib_list ${private_libs})
endif()
foreach(lib IN LISTS lib_list)
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")
+ qt_internal_is_lib_part_of_qt6_package("${lib}" is_part_of_qt6)
+ if (is_part_of_qt6)
list(APPEND target_deps "Qt6\;${PROJECT_VERSION}")
else()
list(APPEND target_deps "${INSTALL_CMAKE_NAMESPACE}${lib}\;${PROJECT_VERSION}")
@@ -331,6 +354,28 @@ function(qt_register_target_dependencies target public_libs private_libs)
endif()
endforeach()
+ # Record 'Qt::Foo'-like shared private dependencies of shared library targets.
+ #
+ # Private shared library dependencies are listed in the target's
+ # IMPORTED_LINK_DEPENDENT_LIBRARIES and used in rpath-link calculation.
+ # See QTBUG-86533 for some details.
+ # We filter out static libraries and common platform targets, but include both SHARED and
+ # INTERFACE libraries. INTERFACE libraries in most cases will be FooPrivate libraries.
+ if(target_is_shared AND private_libs)
+ foreach(lib IN LISTS private_libs)
+ if ("${lib}" MATCHES "^Qt::(.*)")
+ set(lib_namespaced "${lib}")
+ set(lib "${CMAKE_MATCH_1}")
+
+ qt_internal_is_lib_part_of_qt6_package("${lib}" is_part_of_qt6)
+ get_target_property(lib_type "${lib_namespaced}" TYPE)
+ if(NOT lib_type STREQUAL "STATIC_LIBRARY" AND NOT is_part_of_qt6)
+ list(APPEND target_deps "${INSTALL_CMAKE_NAMESPACE}${lib}\;${PROJECT_VERSION}")
+ endif()
+ endif()
+ endforeach()
+ endif()
+
set_target_properties("${target}" PROPERTIES _qt_target_deps "${target_deps}")
endfunction()
diff --git a/cmake/QtFlagHandlingHelpers.cmake b/cmake/QtFlagHandlingHelpers.cmake
index dc81a79333..3558dd46ac 100644
--- a/cmake/QtFlagHandlingHelpers.cmake
+++ b/cmake/QtFlagHandlingHelpers.cmake
@@ -101,7 +101,7 @@ function(qt_internal_apply_gc_binaries target visibility)
target_link_options("${target}" ${visibility} "${gc_sections_flag}")
endif()
- if((GCC OR CLANG OR ICC) AND NOT WASM AND NOT UIKIT AND NOT MSVC)
+ if((GCC OR CLANG) AND NOT WASM AND NOT UIKIT AND NOT MSVC)
set(split_sections_flags "-ffunction-sections" "-fdata-sections")
endif()
if(split_sections_flags)
@@ -153,9 +153,7 @@ function(qt_internal_set_exceptions_flags target exceptions_on)
set(_defs "QT_NO_EXCEPTIONS")
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
set(_flag "/wd4530" "/wd4577")
- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
- set(_flag "-fno-exceptions")
- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
+ elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|AppleClang|InteLLLVM")
set(_flag "-fno-exceptions")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
if (MSVC)
@@ -163,8 +161,6 @@ function(qt_internal_set_exceptions_flags target exceptions_on)
else()
set(_flag "-fno-exceptions")
endif()
- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
- set(_flag "-fno-exceptions")
endif()
endif()
@@ -244,8 +240,6 @@ function(qt_enable_utf8_sources target)
set(utf8_flags "")
if(MSVC)
list(APPEND utf8_flags "-utf-8")
- elseif(WIN32 AND ICC)
- list(APPEND utf8_flags "-Qoption,cpp,--unicode_source_kind,UTF-8")
endif()
if(utf8_flags)
diff --git a/cmake/QtFrameworkHelpers.cmake b/cmake/QtFrameworkHelpers.cmake
index 596b480218..6944fbde90 100644
--- a/cmake/QtFrameworkHelpers.cmake
+++ b/cmake/QtFrameworkHelpers.cmake
@@ -26,6 +26,7 @@ macro(qt_find_apple_system_frameworks)
qt_internal_find_apple_system_framework(FWCoreMotion CoreMotion)
qt_internal_find_apple_system_framework(FWWatchKit WatchKit)
qt_internal_find_apple_system_framework(FWGameController GameController)
+ qt_internal_find_apple_system_framework(FWCoreBluetooth CoreBluetooth)
endif()
endmacro()
diff --git a/cmake/QtHeadersClean.cmake b/cmake/QtHeadersClean.cmake
index d5d3f439ed..c2b83ccb48 100644
--- a/cmake/QtHeadersClean.cmake
+++ b/cmake/QtHeadersClean.cmake
@@ -97,8 +97,7 @@ function(qt_internal_add_headers_clean_target
"$<${compile_flags_exist_genex}:$<JOIN:${target_compile_flags_genex},;>>")
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU"
- OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang"
- OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
+ OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang|IntelLLVM")
# Turn on some extra warnings not found in -Wall -Wextra.
set(hcleanFLAGS -Wall -Wextra -Werror -Woverloaded-virtual -Wshadow -Wundef -Wfloat-equal
@@ -109,38 +108,25 @@ function(qt_internal_add_headers_clean_target
list(APPEND hcleanFLAGS -fPIC)
endif()
- if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
- # these warnings are disabled because explicit constructors with zero or
- # multiple arguments are permitted in C++11:
- # 2304: non-explicit constructor with single argument may cause implicit type
- # conversion
- # 2305: declaration of 'explicit' constructor without a single argument is
- # redundant
- #
- # ICC 14+ has a bug with -Wshadow, emitting it for cases where there's no
- # shadowing (issue ID 0000698329, task DPD200245740)
- list(APPEND hcleanFLAGS -wd2304,2305 -Wshadow)
- else()
- # options accepted by GCC and Clang
- list(APPEND hcleanFLAGS -Wchar-subscripts -Wold-style-cast)
-
- if (NOT ((TEST_architecture_arch STREQUAL arm)
- OR (TEST_architecture_arch STREQUAL mips)))
- list(APPEND hcleanFLAGS -Wcast-align)
- endif()
+ # options accepted by GCC and Clang
+ list(APPEND hcleanFLAGS -Wchar-subscripts -Wold-style-cast)
- if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
- list(APPEND hcleanFLAGS -Wzero-as-null-pointer-constant)
- if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.5)
- list(APPEND hcleanFLAGS -Wdouble-promotion)
- endif()
- if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.9)
- list(APPEND hcleanFLAGS -Wfloat-conversion)
+ if (NOT ((TEST_architecture_arch STREQUAL arm)
+ OR (TEST_architecture_arch STREQUAL mips)))
+ list(APPEND hcleanFLAGS -Wcast-align)
+ endif()
- # GCC 9 has a lot of false positives relating to these
- list(APPEND hcleanFlags -Wno-deprecated-copy -Wno-redundant-move
- -Wno-format-overflow -Wno-init-list-lifetime)
- endif()
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ list(APPEND hcleanFLAGS -Wzero-as-null-pointer-constant)
+ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.5)
+ list(APPEND hcleanFLAGS -Wdouble-promotion)
+ endif()
+ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.9)
+ list(APPEND hcleanFLAGS -Wfloat-conversion)
+
+ # GCC 9 has a lot of false positives relating to these
+ list(APPEND hcleanFlags -Wno-deprecated-copy -Wno-redundant-move
+ -Wno-format-overflow -Wno-init-list-lifetime)
endif()
endif()
@@ -158,6 +144,21 @@ function(qt_internal_add_headers_clean_target
# generator expression we provide, so pass it explicitly and hope for the best.
list(APPEND framework_includes
"-iframework" "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/${INSTALL_LIBDIR}")
+
+ # If additional package prefixes are provided, we consider they can contain frameworks
+ # as well.
+ foreach(prefix IN LISTS _qt_additional_packages_prefix_paths)
+ if(prefix MATCHES "/lib/cmake$") # Cut CMake files path
+ string(APPEND prefix "/../..")
+ endif()
+ get_filename_component(prefix "${prefix}" ABSOLUTE)
+
+ set(libdir "${prefix}/${INSTALL_LIBDIR}")
+ if(EXISTS "${libdir}")
+ list(APPEND framework_includes
+ "-iframework" "${libdir}")
+ endif()
+ endforeach()
endif()
foreach(header ${hclean_headers})
diff --git a/cmake/QtInstallHelpers.cmake b/cmake/QtInstallHelpers.cmake
index 9dbb22251d..50b2534fba 100644
--- a/cmake/QtInstallHelpers.cmake
+++ b/cmake/QtInstallHelpers.cmake
@@ -88,44 +88,6 @@ function(qt_copy_or_install)
qt_non_prefix_copy(COPY ${argv_copy} ${copy_arguments})
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(qt_remove_install_target)
- # On superbuilds we only do this for qtbase - it will correctly remove the
- # cmake_install.cmake at the root of the repository.
- if(QT_SUPERBUILD)
- if(NOT (PROJECT_NAME STREQUAL "QtBase"))
- return()
- endif()
- endif()
-
- 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)
- qt_remove_install_target()
- endif()
-endfunction()
-
# Create a versioned hard-link for the given target.
# E.g. "bin/qmake6" -> "bin/qmake".
# If no hard link can be created, make a copy instead.
diff --git a/cmake/QtInternalTargets.cmake b/cmake/QtInternalTargets.cmake
index 317deb185a..7a0d8cd1b7 100644
--- a/cmake/QtInternalTargets.cmake
+++ b/cmake/QtInternalTargets.cmake
@@ -1,17 +1,8 @@
function(qt_internal_set_warnings_are_errors_flags target)
set(flags "")
- if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND NOT MSVC)
- # Regular clang 3.0+
- if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "3.0.0")
- list(APPEND flags -Werror -Wno-error=\#warnings -Wno-error=deprecated-declarations)
- endif()
- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
- # using AppleClang
- # Apple clang 4.0+
- if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "4.0.0" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS_EQUAL "9.2")
- list(APPEND flags -Werror -Wno-error=\#warnings -Wno-error=deprecated-declarations)
- endif()
+ if (CLANG AND NOT MSVC)
+ list(APPEND flags -Werror -Wno-error=\#warnings -Wno-error=deprecated-declarations)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# using GCC
list(APPEND flags -Werror -Wno-error=cpp -Wno-error=deprecated-declarations)
@@ -56,20 +47,6 @@ function(qt_internal_set_warnings_are_errors_flags target)
if (ANDROID)
list(APPEND flags -Wno-error=literal-suffix)
endif()
- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
- # Intel CC 13.0 +, on Linux only
- if (LINUX)
- if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "13.0.0")
- # 177: function "entity" was declared but never referenced
- # (too aggressive; ICC reports even for functions created due to template instantiation)
- # 1224: #warning directive
- # 1478: function "entity" (declared at line N) was declared deprecated
- # 1786: function "entity" (declared at line N of "file") was declared deprecated ("message")
- # 1881: argument must be a constant null pointer value
- # (NULL in C++ is usually a literal 0)
- list(APPEND flags -Werror -ww177,1224,1478,1786,1881)
- endif()
- endif()
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# Only enable for versions of MSVC that are known to work
# 1929 is Visual Studio 2019 version 16.0
@@ -131,8 +108,16 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND CMAKE_SYSTEM_NAME STREQUAL "
target_compile_options(PlatformCommonInternal INTERFACE -Wno-ignored-attributes)
endif()
+target_compile_definitions(PlatformCommonInternal INTERFACE QT_NO_NARROWING_CONVERSIONS_IN_CONNECT)
target_compile_definitions(PlatformCommonInternal INTERFACE $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG>)
+if(FEATURE_developer_build)
+ # This causes an ABI break on Windows, so we cannot unconditionally
+ # enable it. Keep it for developer builds only for now.
+ ### Qt 7: remove the if.
+ target_compile_definitions(PlatformCommonInternal INTERFACE QT_STRICT_QLIST_ITERATORS)
+endif()
+
function(qt_internal_apply_bitcode_flags target)
# See mkspecs/features/uikit/bitcode.prf
set(release_flags "-fembed-bitcode")
@@ -177,6 +162,10 @@ if(UIKIT)
qt_internal_apply_bitcode_flags(PlatformCommonInternal)
endif()
+if(WASM AND QT_FEATURE_sse2)
+ target_compile_definitions(PlatformCommonInternal INTERFACE QT_COMPILER_SUPPORTS_SSE2)
+endif()
+
# Taken from mkspecs/common/msvc-version.conf and mkspecs/common/msvc-desktop.conf
if (MSVC)
if (MSVC_VERSION GREATER_EQUAL 1799)
@@ -214,7 +203,7 @@ if (MSVC)
)
target_link_options(PlatformCommonInternal INTERFACE
- -DYNAMICBASE -NXCOMPAT
+ -DYNAMICBASE -NXCOMPAT -LARGEADDRESSAWARE
$<$<NOT:$<CONFIG:Debug>>:-OPT:REF -OPT:ICF -GUARD:CF>
)
endif()
@@ -292,15 +281,7 @@ qt_auto_detect_implicit_sse2()
function(qt_auto_detect_fpmath)
# fpmath configuration adjustment in qt_module.prf
set(fpmath_supported FALSE)
- if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
- if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "3.4")
- set(fpmath_supported TRUE)
- endif()
- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
- if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "5.1")
- set(fpmath_supported TRUE)
- endif()
- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang|GNU|IntelLLVM")
set(fpmath_supported TRUE)
endif()
if(fpmath_supported AND TEST_architecture_arch STREQUAL "i386" AND __implicit_sse2_for_qt_modules_enabled)
diff --git a/cmake/QtLalrHelpers.cmake b/cmake/QtLalrHelpers.cmake
index ce6f07007e..7c147b0597 100644
--- a/cmake/QtLalrHelpers.cmake
+++ b/cmake/QtLalrHelpers.cmake
@@ -39,13 +39,22 @@ function(qt_process_qlalr consuming_target input_file_list flags)
qt_qlalr_find_option_in_list("${input_file_lines}" "^%impl(.+)" "impl")
get_filename_component(base_file_name ${input_file} NAME_WE)
+ # Pass a relative input file path to qlalr to generate relative #line directives.
+ if(IS_ABSOLUTE "${input_file}")
+ set(absolute_input_file "${input_file}")
+ else()
+ get_filename_component(absolute_input_file "${input_file}" ABSOLUTE)
+ endif()
+ file(RELATIVE_PATH relative_input_file "${CMAKE_CURRENT_BINARY_DIR}"
+ "${absolute_input_file}")
+
set(cpp_file "${parser}.cpp")
set(private_file "${parser}_p.h")
set(decl_file "${decl}")
set(impl_file "${impl}")
add_custom_command(
OUTPUT ${cpp_file} ${private_file} ${decl_file} ${impl_file}
- COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::qlalr ${flags} ${input_file}
+ COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::qlalr ${flags} ${relative_input_file}
DEPENDS ${QT_CMAKE_EXPORT_NAMESPACE}::qlalr
MAIN_DEPENDENCY ${input_file}
)
diff --git a/cmake/QtModuleConfig.cmake.in b/cmake/QtModuleConfig.cmake.in
index 76fde2dc1f..76c918a774 100644
--- a/cmake/QtModuleConfig.cmake.in
+++ b/cmake/QtModuleConfig.cmake.in
@@ -22,7 +22,7 @@ if(NOT DEFINED "@INSTALL_CMAKE_NAMESPACE@@target@_FOUND")
set("@INSTALL_CMAKE_NAMESPACE@@target@_FOUND" TRUE)
endif()
-if (NOT QT_NO_CREATE_TARGETS)
+if (NOT QT_NO_CREATE_TARGETS AND @INSTALL_CMAKE_NAMESPACE@@target@_FOUND)
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Targets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@AdditionalTargetInfo.cmake")
if(NOT QT_NO_CREATE_VERSIONLESS_TARGETS)
diff --git a/cmake/QtModuleHelpers.cmake b/cmake/QtModuleHelpers.cmake
index deb5b001e1..98edb19f8c 100644
--- a/cmake/QtModuleHelpers.cmake
+++ b/cmake/QtModuleHelpers.cmake
@@ -61,6 +61,14 @@ endmacro()
# For the SomeInternalModulePrivate target, the MODULE_INTERFACE_NAME will be
# SomeInternalModule
#
+# HEADER_MODULE
+# Creates an interface library instead of following the Qt configuration default. Mutually
+# exclusive with STATIC.
+#
+# STATIC
+# Creates a static library instead of following the Qt configuration default. Mutually
+# exclusive with HEADER_MODULE.
+#
function(qt_internal_add_module target)
qt_internal_get_internal_add_module_keywords(
module_option_args
@@ -195,7 +203,7 @@ function(qt_internal_add_module target)
endif()
endif()
- if(FEATURE_ltcg AND GCC AND is_static_lib)
+ if((FEATURE_ltcg OR CMAKE_INTERPROCEDURAL_OPTIMIZATION) AND GCC AND is_static_lib)
# CMake <= 3.19 appends -fno-fat-lto-objects for all library types if
# CMAKE_INTERPROCEDURAL_OPTIMIZATION is enabled. Static libraries need
# the opposite compiler option.
@@ -649,13 +657,18 @@ set(QT_LIBINFIX \"${QT_LIBINFIX}\")")
endif()
write_basic_package_version_file(
- "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
+ qt_internal_write_qt_package_version_file(
+ "${INSTALL_CMAKE_NAMESPACE}${target}"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
+ )
qt_install(FILES
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}Config.cmake"
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
${extra_cmake_files}
DESTINATION "${config_install_dir}"
COMPONENT Devel
@@ -756,10 +769,6 @@ set(QT_LIBINFIX \"${QT_LIBINFIX}\")")
target_link_libraries("${target_private}" INTERFACE "${target}")
endif()
- if(is_framework AND NOT is_interface_lib)
- qt_finalize_framework_headers_copy(${target})
- endif()
-
set(debug_install_dir "${INSTALL_LIBDIR}")
if (MINGW)
set(debug_install_dir "${INSTALL_BINDIR}")
@@ -782,6 +791,7 @@ set(QT_LIBINFIX \"${QT_LIBINFIX}\")")
endfunction()
function(qt_finalize_module target)
+ qt_finalize_framework_headers_copy(${target})
qt_generate_prl_file(${target} "${INSTALL_LIBDIR}")
qt_generate_module_pri_file("${target}" ${ARGN})
endfunction()
diff --git a/cmake/QtPlatformAndroid.cmake b/cmake/QtPlatformAndroid.cmake
index 90e6478707..24185c1e21 100644
--- a/cmake/QtPlatformAndroid.cmake
+++ b/cmake/QtPlatformAndroid.cmake
@@ -33,7 +33,7 @@ function(qt_get_android_sdk_jar_for_api api out_jar_location)
endfunction()
# Minimum recommend android SDK api version
-set(QT_ANDROID_API_VERSION "android-30")
+set(QT_ANDROID_API_VERSION "android-31")
# Locate android.jar
set(QT_ANDROID_JAR "${ANDROID_SDK_ROOT}/platforms/${QT_ANDROID_API_VERSION}/android.jar")
diff --git a/cmake/QtPlatformSupport.cmake b/cmake/QtPlatformSupport.cmake
index e4c8ca123b..11b316419a 100644
--- a/cmake/QtPlatformSupport.cmake
+++ b/cmake/QtPlatformSupport.cmake
@@ -30,9 +30,9 @@ qt_set01(UIKIT APPLE AND (IOS OR TVOS OR WATCHOS))
qt_set01(MACOS APPLE AND NOT UIKIT)
qt_set01(GCC CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
-qt_set01(CLANG CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+qt_set01(CLANG CMAKE_CXX_COMPILER_ID MATCHES "Clang|IntelLLVM")
qt_set01(APPLECLANG CMAKE_CXX_COMPILER_ID MATCHES "AppleClang")
-qt_set01(ICC CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+qt_set01(IntelLLVM CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
qt_set01(QCC CMAKE_CXX_COMPILER_ID STREQUAL "QCC") # CMP0047
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
diff --git a/cmake/QtPluginHelpers.cmake b/cmake/QtPluginHelpers.cmake
index e8b5a38f41..fe90a33b85 100644
--- a/cmake/QtPluginHelpers.cmake
+++ b/cmake/QtPluginHelpers.cmake
@@ -382,14 +382,19 @@ function(qt_internal_add_plugin target)
INSTALL_DESTINATION "${config_install_dir}"
)
write_basic_package_version_file(
- "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
+ qt_internal_write_qt_package_version_file(
+ "${INSTALL_CMAKE_NAMESPACE}${target}"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
+ )
qt_install(FILES
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}Config.cmake"
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
DESTINATION "${config_install_dir}"
COMPONENT Devel
)
diff --git a/cmake/QtPostProcessHelpers.cmake b/cmake/QtPostProcessHelpers.cmake
index ba564dbae7..35ca6eabee 100644
--- a/cmake/QtPostProcessHelpers.cmake
+++ b/cmake/QtPostProcessHelpers.cmake
@@ -410,11 +410,40 @@ function(qt_internal_create_plugins_files)
if(QT_MODULE STREQUAL "Qml")
set(QT_MODULE_PLUGIN_INCLUDES "${QT_MODULE_PLUGIN_INCLUDES}
+# Qml plugin targets might have dependencies on other qml plugin targets, but the Targets.cmake
+# files are included in the order that file(GLOB) returns, which means certain targets that are
+# referenced might not have been created yet, and \${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE
+# might be set to a message saying those targets don't exist.
+#
+# Postpone checking of which targets don't exist until all Qml PluginConfig.cmake files have been
+# included, by including all the files one more time and checking for errors at each step.
+#
+# TODO: Find a better way to deal with this, perhaps by using find_package() instead of include
+# for the Qml PluginConfig.cmake files.
+
file(GLOB __qt_qml_plugins_config_file_list \"\${CMAKE_CURRENT_LIST_DIR}/QmlPlugins/${INSTALL_CMAKE_NAMESPACE}*Config.cmake\")
if (__qt_qml_plugins_config_file_list AND NOT QT_SKIP_AUTO_QML_PLUGIN_INCLUSION)
+ # First round of inclusions ensure all qml plugin targets are brought into scope.
foreach(__qt_qml_plugin_config_file \${__qt_qml_plugins_config_file_list})
include(\${__qt_qml_plugin_config_file})
+
+ # Temporarily unset any failure markers.
+ unset(\${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE)
+ unset(\${CMAKE_FIND_PACKAGE_NAME}_FOUND)
endforeach()
+
+ # For the second round of inclusions, check and bail out early if there are errors.
+ foreach(__qt_qml_plugin_config_file \${__qt_qml_plugins_config_file_list})
+ include(\${__qt_qml_plugin_config_file})
+
+ if(\${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE)
+ string(APPEND \${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE
+ \"\nThe message was set in \${__qt_qml_plugin_config_file} \")
+ set(\${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
+ return()
+ endif()
+ endforeach()
+
endif()")
endif()
diff --git a/cmake/QtPriHelpers.cmake b/cmake/QtPriHelpers.cmake
index 75e21c5ce2..8f7e3e9b86 100644
--- a/cmake/QtPriHelpers.cmake
+++ b/cmake/QtPriHelpers.cmake
@@ -90,13 +90,45 @@ set(QMAKE_DEPENDS_${uclib}_LD, ${deps})
endfunction()
# Retrieves the public Qt module dependencies of the given Qt module or Qt Private module.
+# The returned dependencies are "config module names", not target names.
+#
+# PRIVATE (OPTIONAL):
+# Retrieve private dependencies only. Dependencies that appear in both, LINK_LIBRARIES and
+# INTERFACE_LINK_LIBRARIES are discarded.
+#
function(qt_get_direct_module_dependencies target out_var)
+ cmake_parse_arguments(arg "PRIVATE" "" "" ${ARGN})
set(dependencies "")
- get_target_property(libs ${target} INTERFACE_LINK_LIBRARIES)
+ get_target_property(target_type ${target} TYPE)
+ if(arg_PRIVATE)
+ if(target_type STREQUAL "INTERFACE_LIBRARY")
+ set(libs)
+ else()
+ get_target_property(libs ${target} LINK_LIBRARIES)
+ list(REMOVE_DUPLICATES libs)
+ endif()
+ get_target_property(public_libs ${target} INTERFACE_LINK_LIBRARIES)
+ list(REMOVE_DUPLICATES public_libs)
+
+ # Remove all Qt::Foo and Qt6::Foo from libs that also appear in public_libs.
+ set(libs_to_remove "")
+ foreach(lib IN LISTS public_libs)
+ list(APPEND libs_to_remove "${lib}")
+ if(lib MATCHES "^Qt::(.*)")
+ list(APPEND libs_to_remove "${QT_CMAKE_EXPORT_NAMESPACE}::${CMAKE_MATCH_1}")
+ elseif(lib MATCHES "^{QT_CMAKE_EXPORT_NAMESPACE}::(.*)")
+ list(APPEND libs_to_remove "Qt::${CMAKE_MATCH_1}")
+ endif()
+ endforeach()
+
+ list(REMOVE_DUPLICATES libs_to_remove)
+ list(REMOVE_ITEM libs ${libs_to_remove})
+ else()
+ get_target_property(libs ${target} INTERFACE_LINK_LIBRARIES)
+ endif()
if(NOT libs)
set(libs "")
endif()
- get_target_property(target_type ${target} TYPE)
while(libs)
list(POP_FRONT libs lib)
string(GENEX_STRIP "${lib}" lib)
@@ -166,6 +198,60 @@ function(qt_internal_map_targets_to_qmake_libs out_var)
set(${out_var} "${result}" PARENT_SCOPE)
endfunction()
+# Retrieve the runtime dependencies of module ${target}.
+# The runtime dependencies are what in CMake is called IMPORTED_LINK_DEPENDENT_LIBRARIES.
+# This function returns the dependencies in out_var, separated by space.
+#
+# PUBLIC_DEPENDENCIES:
+# List of the module's public dependencies.
+# The dependencies are expected to be config module names.
+#
+# PUBLIC (OPTIONAL):
+# Specifies that target is a public module.
+# If not specified, a private module is assumed.
+#
+function(qt_internal_get_module_run_dependencies out_var target)
+ cmake_parse_arguments(arg "PUBLIC" "" "PUBLIC_DEPENDENCIES" ${ARGN})
+
+ # Private dependencies of the module are runtime dependencies.
+ qt_get_direct_module_dependencies(${target} run_dependencies PRIVATE)
+
+ # If ${target} is a public module then public dependencies
+ # of the private module are also runtime dependencies.
+ if(arg_PUBLIC AND TARGET ${target}Private)
+ qt_get_direct_module_dependencies(${target}Private qt_for_private)
+
+ # FooPrivate depends on Foo, but we must not record this dependency in run_depends.
+ get_target_property(config_module_name ${target} _qt_config_module_name)
+ list(REMOVE_ITEM qt_for_private ${config_module_name})
+
+ list(APPEND run_dependencies ${qt_for_private})
+ endif()
+
+ list(REMOVE_DUPLICATES run_dependencies)
+
+ # If foo-private is a private dependency and foo is a public dependency,
+ # we don't have to add foo-private as runtime dependency.
+ set(deps_to_remove "")
+ foreach(dep IN LISTS run_dependencies)
+ if(NOT dep MATCHES "(.*)_private$")
+ continue()
+ endif()
+
+ # Is foo a public dependency?
+ list(FIND arg_PUBLIC_DEPENDENCIES "${CMAKE_MATCH_1}" idx)
+ if(idx GREATER -1)
+ list(APPEND deps_to_remove "${dep}")
+ endif()
+ endforeach()
+ if(NOT "${deps_to_remove}" STREQUAL "")
+ list(REMOVE_ITEM run_dependencies ${deps_to_remove})
+ endif()
+
+ list(JOIN run_dependencies " " run_dependencies)
+ set("${out_var}" "${run_dependencies}" PARENT_SCOPE)
+endfunction()
+
# Generates module .pri files for consumption by qmake
function(qt_generate_module_pri_file target)
set(flags INTERNAL_MODULE HEADER_MODULE NO_PRIVATE_MODULE)
@@ -299,8 +385,8 @@ $$QT_MODULE_INCLUDE_BASE/${module_versioned_inner_include_dir}")
"\nQT.${config_module_name}.plugin_types = ${module_plugin_types}")
endif()
- qt_get_direct_module_dependencies(${target} public_module_dependencies)
- list(JOIN public_module_dependencies " " public_module_dependencies)
+ qt_get_direct_module_dependencies(${target} public_module_dependencies_list)
+ list(JOIN public_module_dependencies_list " " public_module_dependencies)
set(public_module_dependencies "${module_depends} ${public_module_dependencies}")
qt_path_join(pri_file_name "${target_path}" "qt_lib_${config_module_name}.pri")
@@ -327,10 +413,12 @@ $$QT_MODULE_INCLUDE_BASE/${module_versioned_inner_include_dir}")
qt_internal_map_targets_to_qmake_libs(module_uses ${dep_targets})
list(JOIN module_uses " " joined_module_uses)
- file(GENERATE
- OUTPUT "${pri_file_name}"
- CONTENT
- "QT.${config_module_name}.VERSION = ${PROJECT_VERSION}
+ # Retrieve the public module's runtime dependencies.
+ qt_internal_get_module_run_dependencies(public_module_run_dependencies ${target}
+ PUBLIC
+ PUBLIC_DEPENDENCIES "${public_module_dependencies_list}")
+
+ set(content "QT.${config_module_name}.VERSION = ${PROJECT_VERSION}
QT.${config_module_name}.name = ${module}
QT.${config_module_name}.module = ${module_name_in_pri}
QT.${config_module_name}.libs = $$QT_MODULE_LIB_BASE
@@ -339,7 +427,13 @@ QT.${config_module_name}.includes = ${public_module_includes}
QT.${config_module_name}.frameworks = ${public_module_frameworks}
QT.${config_module_name}.bins = $$QT_MODULE_BIN_BASE${module_plugin_types_assignment}
QT.${config_module_name}.depends = ${public_module_dependencies}
-QT.${config_module_name}.uses = ${joined_module_uses}
+")
+ if(NOT "${public_module_run_dependencies}" STREQUAL "")
+ string(APPEND content
+ "QT.${config_module_name}.run_depends = ${public_module_run_dependencies}\n")
+ endif()
+ string(APPEND content
+ "QT.${config_module_name}.uses = ${joined_module_uses}
QT.${config_module_name}.module_config = ${joined_module_internal_config}${module_build_config}
QT.${config_module_name}.DEFINES = ${joined_target_defines}
QT.${config_module_name}.enabled_features = ${enabled_features}
@@ -347,8 +441,8 @@ QT.${config_module_name}.disabled_features = ${disabled_features}${extra_assignm
QT_CONFIG += ${enabled_features}
QT_MODULES += ${config_module_name_base}
${module_pri_extra_content}
-"
- )
+")
+ file(GENERATE OUTPUT "${pri_file_name}" CONTENT "${content}")
if (NOT arg_NO_PRIVATE_MODULE AND NOT arg_INTERNAL_MODULE)
set(pri_data_cmake_file "qt_lib_${config_module_name}_private.cmake")
@@ -372,22 +466,33 @@ ${module_pri_extra_content}
qt_internal_map_targets_to_qmake_libs(private_module_uses ${dep_targets})
list(JOIN private_module_uses " " joined_private_module_uses)
+ # Retrieve the private module's runtime dependencies.
+ qt_internal_get_module_run_dependencies(private_module_run_dependencies ${target}Private
+ PUBLIC_DEPENDENCIES "${dep_targets}")
+
# Generate a preliminary qt_lib_XXX_private.pri file
- file(GENERATE
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${private_pri_file_name}"
- CONTENT
- "QT.${config_module_name}_private.VERSION = ${PROJECT_VERSION}
+ set(content
+ "QT.${config_module_name}_private.VERSION = ${PROJECT_VERSION}
QT.${config_module_name}_private.name = ${module}
QT.${config_module_name}_private.module =
QT.${config_module_name}_private.libs = $$QT_MODULE_LIB_BASE
QT.${config_module_name}_private.includes = ${private_module_includes}
QT.${config_module_name}_private.frameworks = ${private_module_frameworks}
QT.${config_module_name}_private.depends = ${private_module_dependencies}
-QT.${config_module_name}_private.uses = ${joined_private_module_uses}
+")
+ if(NOT "${private_module_run_dependencies}" STREQUAL "")
+ string(APPEND content
+ "QT.${config_module_name}_private.run_depends = ${private_module_run_dependencies}
+")
+ endif()
+ string(APPEND content
+ "QT.${config_module_name}_private.uses = ${joined_private_module_uses}
QT.${config_module_name}_private.module_config = ${joined_module_internal_config}
QT.${config_module_name}_private.enabled_features = ${enabled_private_features}
-QT.${config_module_name}_private.disabled_features = ${disabled_private_features}"
- )
+QT.${config_module_name}_private.disabled_features = ${disabled_private_features}")
+ file(GENERATE
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${private_pri_file_name}"
+ CONTENT "${content}")
if(QT_GENERATOR_IS_MULTI_CONFIG)
set(configs ${CMAKE_CONFIGURATION_TYPES})
@@ -607,6 +712,10 @@ QT_PATCH_VERSION = ${PROJECT_VERSION_PATCH}
set(compiler_version_major_var_name "QT_APPLE_CLANG_MAJOR_VERSION")
set(compiler_version_minor_var_name "QT_APPLE_CLANG_MINOR_VERSION")
set(compiler_version_patch_var_name "QT_APPLE_CLANG_PATCH_VERSION")
+ elseif(IntelLLVM)
+ set(compiler_version_major_var_name "QT_INTELLLVM_MAJOR_VERSION")
+ set(compiler_version_minor_var_name "QT_INTELLLVM_MINOR_VERSION")
+ set(compiler_version_patch_var_name "QT_INTELLLVM_PATCH_VERSION")
elseif(CLANG)
set(compiler_version_major_var_name "QT_CLANG_MAJOR_VERSION")
set(compiler_version_minor_var_name "QT_CLANG_MINOR_VERSION")
@@ -615,10 +724,6 @@ QT_PATCH_VERSION = ${PROJECT_VERSION_PATCH}
set(compiler_version_major_var_name "QT_GCC_MAJOR_VERSION")
set(compiler_version_minor_var_name "QT_GCC_MINOR_VERSION")
set(compiler_version_patch_var_name "QT_GCC_PATCH_VERSION")
- elseif(ICC)
- set(compiler_version_major_var_name "QT_ICC_MAJOR_VERSION")
- set(compiler_version_minor_var_name "QT_ICC_MINOR_VERSION")
- set(compiler_version_patch_var_name "QT_ICC_PATCH_VERSION")
elseif(MSVC)
set(compiler_version_major_var_name "QT_MSVC_MAJOR_VERSION")
set(compiler_version_minor_var_name "QT_MSVC_MINOR_VERSION")
diff --git a/cmake/QtProcessConfigureArgs.cmake b/cmake/QtProcessConfigureArgs.cmake
index e9aa7d3259..3c730d9444 100644
--- a/cmake/QtProcessConfigureArgs.cmake
+++ b/cmake/QtProcessConfigureArgs.cmake
@@ -160,7 +160,6 @@ defstub(qt_set01)
unset(commandline_known_options)
unset(commandline_custom_handlers)
set(commandline_nr_of_prefixes 0)
-set(commandline_nr_of_assignments 0)
macro(qt_commandline_subconfig subconfig)
list(APPEND commandline_subconfigs "${subconfig}")
@@ -198,13 +197,6 @@ function(qt_commandline_prefix arg var)
set(commandline_nr_of_prefixes ${n} PARENT_SCOPE)
endfunction()
-function(qt_commandline_assignment var internal_var)
- set(idx ${commandline_nr_of_assignments})
- set(commandline_assignment_${idx} "${var}" "${internal_var}" PARENT_SCOPE)
- math(EXPR n "${commandline_nr_of_assignments} + 1")
- set(commandline_nr_of_assignments ${n} PARENT_SCOPE)
-endfunction()
-
# Check the following variable in configure.cmake files to guard code that is not covered by the
# stub functions above.
set(QT_CONFIGURE_RUNNING ON)
@@ -551,6 +543,8 @@ if(options_json_file)
return()
endif()
+set(cmake_var_assignments)
+
while(1)
qtConfHasNextCommandlineArg(has_next)
if(NOT has_next)
@@ -569,24 +563,9 @@ while(1)
continue()
endif()
- if(arg MATCHES "^([A-Z0-9_]+)=(.*)")
- set(lhs "${CMAKE_MATCH_1}")
- set(rhs "${CMAKE_MATCH_2}")
- math(EXPR n "${commandline_nr_of_assignments} - 1")
- foreach(i RANGE ${n})
- list(GET commandline_assignment_${i} 0 var)
- list(GET commandline_assignment_${i} 1 internal_var)
- if(lhs STREQUAL var)
- set(handled TRUE)
- qtConfCommandlineSetInput("${internal_var}" "${rhs}")
- break()
- endif()
- endforeach()
- if(NOT handled)
- message(FATAL_ERROR "Assigning unknown variable '${lhs}' on command line.")
- endif()
- endif()
- if(handled)
+ # Handle variable assignments
+ if(arg MATCHES "^([a-zA-Z0-9_][a-zA-Z0-9_-]*)=(.*)")
+ list(APPEND cmake_var_assignments "${arg}")
continue()
endif()
@@ -744,9 +723,6 @@ function(guess_compiler_from_mkspec)
elseif(mkspec MATCHES "-clang(-|$)" AND NOT mkspec MATCHES "android")
set(c_compiler "clang")
set(cxx_compiler "clang++")
- elseif(mkspec MATCHES "-icc(-|$)")
- set(c_compiler "icc")
- set(cxx_compiler "icpc")
elseif(mkspec MATCHES "-msvc(-|$)")
set(c_compiler "cl")
set(cxx_compiler "cl")
@@ -935,6 +911,11 @@ if(generator)
push(-G "${generator}")
endif()
+# Add CMake variable assignments near the end to allow users to overwrite what configure sets.
+foreach(arg IN LISTS cmake_var_assignments)
+ push("-D${arg}")
+endforeach()
+
push("${MODULE_ROOT}")
# Restore the escaped semicolons in arguments that are lists
diff --git a/cmake/QtPublicWasmToolchainHelpers.cmake b/cmake/QtPublicWasmToolchainHelpers.cmake
new file mode 100644
index 0000000000..8d0d9efdc9
--- /dev/null
+++ b/cmake/QtPublicWasmToolchainHelpers.cmake
@@ -0,0 +1,71 @@
+# Assuming EMSDK == /path/emsdk
+#
+# Then we expect /path/emsdk/.emscripten file to contain the following line
+# EMSCRIPTEN_ROOT = emsdk_path + '/upstream/emscripten'
+#
+# then we set out_var to '/upstream/emscripten', so it's not a full path
+function(__qt_internal_get_emroot_path_suffix_from_emsdk_env out_var)
+ # Query EMSCRIPTEN_ROOT path.
+ file(READ "$ENV{EMSDK}/.emscripten" ver)
+ string(REGEX MATCH "EMSCRIPTEN_ROOT.*$" EMROOT "${ver}")
+ string(REGEX MATCH "'([^' ]*)'" EMROOT2 "${EMROOT}")
+ string(REPLACE "'" "" EMROOT_PATH "${EMROOT2}")
+
+ set(${out_var} "${EMROOT_PATH}" PARENT_SCOPE)
+endfunction()
+
+function(__qt_internal_get_emscripten_cmake_toolchain_file_path_from_emsdk_env emroot_path out_var)
+ set(wasm_toolchain_file "$ENV{EMSDK}/${emroot_path}/cmake/Modules/Platform/Emscripten.cmake")
+ set(${out_var} "${wasm_toolchain_file}" PARENT_SCOPE)
+endfunction()
+
+function(__qt_internal_query_emsdk_version emroot_path is_fatal out_var)
+ # get emscripten version
+ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
+ set(EXECUTE_COMMANDPATH "$ENV{EMSDK}/${emroot_path}/emcc.bat")
+ else()
+ set(EXECUTE_COMMANDPATH "$ENV{EMSDK}/${emroot_path}/emcc")
+ endif()
+
+ file(TO_NATIVE_PATH "${EXECUTE_COMMANDPATH}" EXECUTE_COMMAND)
+ execute_process(COMMAND ${EXECUTE_COMMAND} --version
+ OUTPUT_VARIABLE emOutput
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_VARIABLE emrun_error
+ RESULT_VARIABLE result)
+ message(DEBUG "emcc --version output: ${emOutput}")
+
+ if(NOT emOutput)
+ if(is_fatal)
+ message(FATAL_ERROR
+ "Couldn't determine Emscripten version from running ${EXECUTE_COMMAND} --version. "
+ "Error: ${emrun_error}")
+ endif()
+ set(${out_var} "" PARENT_SCOPE)
+ else()
+ string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" CMAKE_EMSDK_REGEX_VERSION "${emOutput}")
+ set(${out_var} "${CMAKE_EMSDK_REGEX_VERSION}" PARENT_SCOPE)
+ endif()
+endfunction()
+
+function(__qt_internal_get_emcc_recommended_version out_var)
+ # This version of Qt needs this version of emscripten.
+ set(QT_EMCC_RECOMMENDED_VERSION "2.0.14")
+ set(${out_var} "${QT_EMCC_RECOMMENDED_VERSION}" PARENT_SCOPE)
+endfunction()
+
+function(__qt_internal_show_error_no_emscripten_toolchain_file_found_when_building_qt)
+ message(FATAL_ERROR
+ "Cannot find the toolchain file Emscripten.cmake. "
+ "Please specify the toolchain file with -DCMAKE_TOOLCHAIN_FILE=<file> "
+ "or provide a path to a valid emscripten installation via the EMSDK "
+ "environment variable.")
+endfunction()
+
+function(__qt_internal_show_error_no_emscripten_toolchain_file_found_when_using_qt)
+ message(FATAL_ERROR
+ "Cannot find the toolchain file Emscripten.cmake. "
+ "Please specify the toolchain file with -DQT_CHAINLOAD_TOOLCHAIN_FILE=<file> "
+ "or provide a path to a valid emscripten installation via the EMSDK "
+ "environment variable.")
+endfunction()
diff --git a/cmake/QtQmakeHelpers.cmake b/cmake/QtQmakeHelpers.cmake
index 409c8a6cc8..668702f968 100644
--- a/cmake/QtQmakeHelpers.cmake
+++ b/cmake/QtQmakeHelpers.cmake
@@ -13,35 +13,22 @@ function(qt_to_qmake_path_list out_var)
set("${out_var}" "${result}" PARENT_SCOPE)
endfunction()
-macro(qt_add_string_to_qconfig_cpp str)
- string(LENGTH "${str}" length)
- string(APPEND QT_CONFIG_STRS " \"${str}\\0\"\n")
- string(APPEND QT_CONFIG_STR_OFFSETS " ${QT_CONFIG_STR_OFFSET},\n")
- math(EXPR QT_CONFIG_STR_OFFSET "${QT_CONFIG_STR_OFFSET}+${length}+1")
-endmacro()
function(qt_generate_qconfig_cpp in_file out_file)
- set(QT_CONFIG_STR_OFFSET "0")
- set(QT_CONFIG_STR_OFFSETS "")
set(QT_CONFIG_STRS "")
- # Start first part.
- qt_add_string_to_qconfig_cpp("${INSTALL_DOCDIR}")
- qt_add_string_to_qconfig_cpp("${INSTALL_INCLUDEDIR}")
- qt_add_string_to_qconfig_cpp("${INSTALL_LIBDIR}")
- qt_add_string_to_qconfig_cpp("${INSTALL_LIBEXECDIR}")
- qt_add_string_to_qconfig_cpp("${INSTALL_BINDIR}")
- qt_add_string_to_qconfig_cpp("${INSTALL_PLUGINSDIR}")
- qt_add_string_to_qconfig_cpp("${INSTALL_QMLDIR}")
- qt_add_string_to_qconfig_cpp("${INSTALL_ARCHDATADIR}")
- qt_add_string_to_qconfig_cpp("${INSTALL_DATADIR}")
- qt_add_string_to_qconfig_cpp("${INSTALL_TRANSLATIONSDIR}")
- qt_add_string_to_qconfig_cpp("${INSTALL_EXAMPLESDIR}")
- qt_add_string_to_qconfig_cpp("${INSTALL_TESTSDIR}")
-
- # Save first part.
- set(QT_CONFIG_STR_OFFSETS_FIRST "${QT_CONFIG_STR_OFFSETS}")
- set(QT_CONFIG_STRS_FIRST "${QT_CONFIG_STRS}")
+ string(APPEND QT_CONFIG_STRS " R\"qconfig(${INSTALL_DOCDIR})qconfig\",\n")
+ string(APPEND QT_CONFIG_STRS " R\"qconfig(${INSTALL_INCLUDEDIR})qconfig\",\n")
+ string(APPEND QT_CONFIG_STRS " R\"qconfig(${INSTALL_LIBDIR})qconfig\",\n")
+ string(APPEND QT_CONFIG_STRS " R\"qconfig(${INSTALL_LIBEXECDIR})qconfig\",\n")
+ string(APPEND QT_CONFIG_STRS " R\"qconfig(${INSTALL_BINDIR})qconfig\",\n")
+ string(APPEND QT_CONFIG_STRS " R\"qconfig(${INSTALL_PLUGINSDIR})qconfig\",\n")
+ string(APPEND QT_CONFIG_STRS " R\"qconfig(${INSTALL_QMLDIR})qconfig\",\n")
+ string(APPEND QT_CONFIG_STRS " R\"qconfig(${INSTALL_ARCHDATADIR})qconfig\",\n")
+ string(APPEND QT_CONFIG_STRS " R\"qconfig(${INSTALL_DATADIR})qconfig\",\n")
+ string(APPEND QT_CONFIG_STRS " R\"qconfig(${INSTALL_TRANSLATIONSDIR})qconfig\",\n")
+ string(APPEND QT_CONFIG_STRS " R\"qconfig(${INSTALL_EXAMPLESDIR})qconfig\",\n")
+ string(APPEND QT_CONFIG_STRS " R\"qconfig(${INSTALL_TESTSDIR})qconfig\"")
# Settings path / sysconf dir.
set(QT_SYS_CONF_DIR "${INSTALL_SYSCONFDIR}")
@@ -81,10 +68,10 @@ function(qt_generate_qconfig_cpp in_file out_file)
endfunction()
# In the cross-compiling case, creates a wrapper around the host Qt's
-# qmake executable. Also creates a qmake configuration file that sets
+# qmake and qtpaths executables. Also creates a qmake configuration file that sets
# up the host qmake's properties for cross-compiling with this Qt
# build.
-function(qt_generate_qmake_wrapper_for_target)
+function(qt_generate_qmake_and_qtpaths_wrapper_for_target)
if(NOT CMAKE_CROSSCOMPILING)
return()
endif()
@@ -122,9 +109,11 @@ function(qt_generate_qmake_wrapper_for_target)
set(sysrootify_prefix true)
else()
set(sysrootify_prefix false)
- string(APPEND content "[DevicePaths]
+ if(NOT ext_prefix STREQUAL prefix)
+ string(APPEND content "[DevicePaths]
Prefix=${prefix}
")
+ endif()
endif()
string(APPEND content
@@ -138,27 +127,29 @@ TargetSpec=${QT_QMAKE_TARGET_MKSPEC}
HostSpec=${QT_QMAKE_HOST_MKSPEC}
")
file(GENERATE OUTPUT "${qt_conf_path}" CONTENT "${content}")
+ qt_install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${qt_conf_path}"
+ DESTINATION "${INSTALL_BINDIR}")
- qt_path_join(qmake_wrapper_in_file "${CMAKE_CURRENT_SOURCE_DIR}/bin/qmake-wrapper-for-target")
- set(qmake_wrapper "qmake")
+ set(wrapper_prefix)
+ set(wrapper_extension)
if(QT_BUILD_TOOLS_WHEN_CROSSCOMPILING)
- # Avoid collisions with the cross-compiled qmake binary.
- string(PREPEND qmake_wrapper "host-")
+ # Avoid collisions with the cross-compiled qmake/qtpaths binaries.
+ set(wrapper_prefix "host-")
endif()
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
- string(APPEND qmake_wrapper_in_file ".bat")
- string(APPEND qmake_wrapper ".bat")
+ set(wrapper_extension ".bat")
endif()
- string(APPEND qmake_wrapper_in_file ".in")
+ set(wrapper_in_file
+ "${CMAKE_CURRENT_SOURCE_DIR}/bin/qmake-and-qtpaths-wrapper${wrapper_extension}.in")
set(host_qt_bindir "${host_prefix}/${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}")
- qt_path_join(qmake_wrapper "preliminary" "${qmake_wrapper}")
- configure_file("${qmake_wrapper_in_file}" "${qmake_wrapper}" @ONLY)
- qt_install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${qt_conf_path}"
- DESTINATION "${INSTALL_BINDIR}")
- qt_copy_or_install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/${qmake_wrapper}"
- DESTINATION "${INSTALL_BINDIR}")
+ foreach(tool_name qmake qtpaths)
+ set(wrapper "preliminary/${wrapper_prefix}${tool_name}${wrapper_extension}")
+ configure_file("${wrapper_in_file}" "${wrapper}" @ONLY)
+ qt_copy_or_install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/${wrapper}"
+ DESTINATION "${INSTALL_BINDIR}")
+ endforeach()
endfunction()
# Transforms a CMake Qt module name to a qmake Qt module name.
diff --git a/cmake/QtSetup.cmake b/cmake/QtSetup.cmake
index 4fa305431d..5447f1087a 100644
--- a/cmake/QtSetup.cmake
+++ b/cmake/QtSetup.cmake
@@ -225,9 +225,6 @@ include(QtCompilerOptimization)
## Compiler flags:
include(QtCompilerFlags)
-## Set up non-prefix build:
-qt_set_up_nonprefix_build()
-
qt_set_language_standards()
option(QT_USE_CCACHE "Enable the use of ccache")
diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake
index 2c15b85a58..206f3cb921 100644
--- a/cmake/QtTargetHelpers.cmake
+++ b/cmake/QtTargetHelpers.cmake
@@ -120,7 +120,7 @@ function(qt_internal_extend_target target)
message(AUTHOR_WARNING "${warning_message}")
endif()
qt_register_target_dependencies("${target}"
- "${arg_PUBLIC_LIBRARIES}"
+ "${arg_PUBLIC_LIBRARIES};${arg_PRIVATE_MODULE_INTERFACE}"
"${qt_libs_private};${arg_LIBRARIES}")
@@ -787,6 +787,26 @@ function(qt_internal_link_internal_platform_for_object_library target)
target_link_libraries("${target}" PRIVATE Qt::PlatformModuleInternal)
endfunction()
+# Use ${dep_target}'s include dirs when building ${target}.
+#
+# Assumes ${dep_target} is an INTERFACE_LIBRARY that only propagates include dirs and ${target}
+# is a Qt module / plugin.
+#
+# Building ${target} requires ${dep_target}'s include dirs.
+# Using ${target} does not require ${dep_target}'s include dirs.
+#
+# The main use case is adding the private header-only dependency PkgConfig::ATSPI2.
+function(qt_internal_add_target_include_dirs target dep_target)
+ if(NOT TARGET "${target}")
+ message(FATAL_ERROR "${target} is not a valid target.")
+ endif()
+ if(NOT TARGET "${dep_target}")
+ message(FATAL_ERROR "${dep_target} is not a valid target.")
+ endif()
+
+ target_include_directories("${target}" PRIVATE
+ "$<TARGET_PROPERTY:${dep_target},INTERFACE_INCLUDE_DIRECTORIES>")
+endfunction()
# Use ${dep_target}'s include dirs when building ${target} and optionally propagate the include
# dirs to consumers of ${target}.
@@ -809,15 +829,7 @@ endfunction()
#
# The main use case is for propagating WrapVulkanHeaders::WrapVulkanHeaders.
function(qt_internal_add_target_include_dirs_and_optionally_propagate target dep_target)
- if(NOT TARGET "${target}")
- message(FATAL_ERROR "${target} is not a valid target.")
- endif()
- if(NOT TARGET "${dep_target}")
- message(FATAL_ERROR "${dep_target} is not a valid target.")
- endif()
-
- target_include_directories("${target}" PRIVATE
- "$<TARGET_PROPERTY:${dep_target},INTERFACE_INCLUDE_DIRECTORIES>")
+ qt_internal_add_target_include_dirs(${target} ${dep_target})
target_link_libraries("${target}" INTERFACE "$<TARGET_NAME_IF_EXISTS:${dep_target}>")
diff --git a/cmake/QtTestHelpers.cmake b/cmake/QtTestHelpers.cmake
index 3add288b3d..0b4ff0936e 100644
--- a/cmake/QtTestHelpers.cmake
+++ b/cmake/QtTestHelpers.cmake
@@ -285,6 +285,9 @@ function(qt_internal_add_test name)
if (ANDROID)
qt_internal_android_test_arguments("${name}" test_executable extra_test_args)
set(test_working_dir "${CMAKE_CURRENT_BINARY_DIR}")
+ elseif(QNX)
+ set(test_working_dir "")
+ set(test_executable "${name}")
else()
if(arg_QMLTEST AND NOT arg_SOURCES)
set(test_working_dir "${CMAKE_CURRENT_SOURCE_DIR}")
@@ -341,6 +344,9 @@ function(qt_internal_add_test name)
)
if(TARGET "${name}")
add_dependencies("${name}_check" "${name}")
+ if(ANDROID)
+ add_dependencies("${name}_check" "${name}_make_apk")
+ endif()
endif()
if(ANDROID OR IOS OR WINRT)
@@ -508,7 +514,7 @@ function(qt_internal_create_command_script)
is not specified")
endif()
- if(NOT arg_WORKING_DIRECTORY)
+ if(NOT arg_WORKING_DIRECTORY AND NOT QNX)
set(arg_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endif()
diff --git a/cmake/QtToolHelpers.cmake b/cmake/QtToolHelpers.cmake
index 77dae50027..86621f4871 100644
--- a/cmake/QtToolHelpers.cmake
+++ b/cmake/QtToolHelpers.cmake
@@ -58,18 +58,32 @@ function(qt_internal_add_tool target_name)
endif()
set(full_name "${QT_CMAKE_EXPORT_NAMESPACE}::${name}")
- set(imported_tool_target_found FALSE)
+ set(imported_tool_target_already_found FALSE)
+
+ # This condition can only be TRUE if a previous find_package(Qt6${arg_TOOLS_TARGET}Tools)
+ # was already done. That can happen if we are cross compiling or QT_FORCE_FIND_TOOLS was ON.
+ # In such a case, we need to exit early if we're not going to also cross-build the tools.
if(TARGET ${full_name})
get_property(path TARGET ${full_name} PROPERTY LOCATION)
message(STATUS "Tool '${full_name}' was found at ${path}.")
- set(imported_tool_target_found TRUE)
- if(CMAKE_CROSSCOMPILING AND NOT QT_BUILD_TOOLS_WHEN_CROSSCOMPILING)
+ set(imported_tool_target_already_found TRUE)
+ if(NOT QT_WILL_BUILD_TOOLS)
return()
endif()
endif()
- if(arg_TOOLS_TARGET AND (NOT QT_WILL_BUILD_TOOLS OR QT_BUILD_TOOLS_WHEN_CROSSCOMPILING)
- AND NOT imported_tool_target_found)
+ # We need to search for the host Tools package when:
+ # - doing a cross-build and tools are not cross-built
+ # - doing a cross-build and tools ARE cross-built
+ # - QT_FORCE_FIND_TOOLS is ON
+ # This collapses to the condition below.
+ # As an optimiziation, we don't search for the package one more time if the target
+ # was already brought into scope from a previous find_package.
+ set(search_for_host_package FALSE)
+ if(NOT QT_WILL_BUILD_TOOLS OR QT_BUILD_TOOLS_WHEN_CROSSCOMPILING)
+ set(search_for_host_package TRUE)
+ endif()
+ if(search_for_host_package AND NOT imported_tool_target_already_found)
set(tools_package_name "Qt6${arg_TOOLS_TARGET}Tools")
message(STATUS "Searching for tool '${full_name}' in package ${tools_package_name}.")
@@ -78,17 +92,39 @@ function(qt_internal_add_tool target_name)
set(BACKUP_QT_NO_CREATE_TARGETS ${QT_NO_CREATE_TARGETS})
set(QT_NO_CREATE_TARGETS OFF)
- # Only search in path provided by QT_HOST_PATH. We need to do it with CMAKE_PREFIX_PATH
- # instead of PATHS option, because any find_dependency call inside a Tools package would
- # not get the proper prefix when using PATHS.
- set(BACKUP_CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH})
- set(CMAKE_PREFIX_PATH "${QT_HOST_PATH}")
-
- # Search both with sysroots prepended as well as in the host system. When cross compiling
- # the mode_package might be set to ONLY only, and the Qt6 tools packages are actually
- # in the host system.
- set(BACKUP_CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ${CMAKE_FIND_ROOT_PATH_MODE_PACKAGE})
- set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE "BOTH")
+ # When cross-compiling, we want to search for Tools packages in QT_HOST_PATH.
+ # To do that, we override CMAKE_PREFIX_PATH and CMAKE_FIND_ROOT_PATH.
+ #
+ # We don't use find_package + PATHS option because any recursive find_dependency call
+ # inside a Tools package would not inherit the initial PATHS value given.
+ # TODO: Potentially we could set a global __qt_cmake_host_dir var like we currently
+ # do with _qt_cmake_dir in Qt6Config and change all our host tool find_package calls
+ # everywhere to specify that var in PATHS.
+ #
+ # Note though that due to path rerooting issue in
+ # https://gitlab.kitware.com/cmake/cmake/-/issues/21937
+ # we have to append a lib/cmake suffix to CMAKE_PREFIX_PATH so the value does not get
+ # rerooted on top of CMAKE_FIND_ROOT_PATH.
+ # Use QT_HOST_PATH_CMAKE_DIR for the suffix when available (it would be set by
+ # the qt.toolchain.cmake file when building other repos or given by the user when
+ # configuring qtbase) or derive it from from the Qt6HostInfo package which is
+ # found in QtSetup.
+ set(${tools_package_name}_BACKUP_CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH})
+ set(${tools_package_name}_BACKUP_CMAKE_FIND_ROOT_PATH "${CMAKE_FIND_ROOT_PATH}")
+ if(QT_HOST_PATH_CMAKE_DIR)
+ set(CMAKE_PREFIX_PATH "${QT_HOST_PATH_CMAKE_DIR}")
+ elseif(Qt${PROJECT_VERSION_MAJOR}HostInfo_DIR)
+ get_filename_component(qt_host_path_cmake_dir_absolute
+ "${Qt${PROJECT_VERSION_MAJOR}HostInfo_DIR}/.." ABSOLUTE)
+ set(CMAKE_PREFIX_PATH "${qt_host_path_cmake_dir_absolute}")
+ else()
+ # This should never happen, serves as an assert.
+ message(FATAL_ERROR
+ "Neither QT_HOST_PATH_CMAKE_DIR nor "
+ "Qt${PROJECT_VERSION_MAJOR}HostInfo_DIR} available.")
+ endif()
+ list(PREPEND CMAKE_FIND_ROOT_PATH "${QT_HOST_PATH}")
+
find_package(
${tools_package_name}
${PROJECT_VERSION}
@@ -98,8 +134,10 @@ function(qt_internal_add_tool target_name)
NO_CMAKE_PACKAGE_REGISTRY
NO_CMAKE_SYSTEM_PATH
NO_CMAKE_SYSTEM_PACKAGE_REGISTRY)
- set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE "${BACKUP_CMAKE_FIND_ROOT_PATH_MODE_PACKAGE}")
- set(CMAKE_PREFIX_PATH "${BACKUP_CMAKE_PREFIX_PATH}")
+
+ # Restore backups.
+ set(CMAKE_FIND_ROOT_PATH "${${tools_package_name}_BACKUP_CMAKE_FIND_ROOT_PATH}")
+ set(CMAKE_PREFIX_PATH "${${tools_package_name}_BACKUP_CMAKE_PREFIX_PATH}")
set(QT_NO_CREATE_TARGETS ${BACKUP_QT_NO_CREATE_TARGETS})
if(${${tools_package_name}_FOUND} AND TARGET ${full_name})
@@ -262,8 +300,8 @@ function(qt_internal_add_tool target_name)
endfunction()
function(qt_export_tools module_name)
- # Bail out when cross-compiling, unless QT_BUILD_TOOLS_WHEN_CROSSCOMPILING is on.
- if(CMAKE_CROSSCOMPILING AND NOT QT_BUILD_TOOLS_WHEN_CROSSCOMPILING)
+ # Bail out when not building tools.
+ if(NOT QT_WILL_BUILD_TOOLS)
return()
endif()
@@ -370,15 +408,20 @@ endif()
INSTALL_DESTINATION "${config_install_dir}"
)
write_basic_package_version_file(
- "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
ARCH_INDEPENDENT
)
+ qt_internal_write_qt_package_version_file(
+ "${INSTALL_CMAKE_NAMESPACE}${target}"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
+ )
qt_install(FILES
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}Config.cmake"
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersion.cmake"
+ "${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigVersionImpl.cmake"
DESTINATION "${config_install_dir}"
COMPONENT Devel
)
@@ -441,6 +484,14 @@ function(qt_check_if_tools_will_be_built)
set(QT_WILL_BUILD_TOOLS ${will_build_tools} CACHE INTERNAL "Are tools going to be built" FORCE)
endfunction()
+# Use this macro to exit a file or function scope unless we're building tools. This is supposed to
+# be called after qt_internal_add_tools() to avoid special-casing operations on imported targets.
+macro(qt_internal_return_unless_building_tools)
+ if(NOT QT_WILL_BUILD_TOOLS)
+ return()
+ endif()
+endmacro()
+
# Equivalent of qmake's qtNomakeTools(directory1 directory2).
# If QT_BUILD_TOOLS_BY_DEFAULT is true, then targets within the given directories will be excluded
# from the default 'all' target, as well as from install phase. The private variable is checked by
diff --git a/cmake/QtToolchainHelpers.cmake b/cmake/QtToolchainHelpers.cmake
index 5ab1236b8f..de8c1e8f52 100644
--- a/cmake/QtToolchainHelpers.cmake
+++ b/cmake/QtToolchainHelpers.cmake
@@ -2,38 +2,28 @@
# as well as CMake application projects.
# Expects various global variables to be set.
function(qt_internal_create_toolchain_file)
- if(NOT "${QT_HOST_PATH}" STREQUAL "")
- # TODO: Figure out how to make these relocatable.
-
- get_filename_component(__qt_host_path_absolute "${QT_HOST_PATH}" ABSOLUTE)
- set(init_qt_host_path "
- set(__qt_initial_qt_host_path \"${__qt_host_path_absolute}\")
- if(NOT DEFINED QT_HOST_PATH AND EXISTS \"\${__qt_initial_qt_host_path}\")
- set(QT_HOST_PATH \"\${__qt_initial_qt_host_path}\" CACHE PATH \"\" FORCE)
- endif()")
+ set(qt_host_path_required FALSE)
- get_filename_component(__qt_host_path_cmake_dir_absolute
+ if(NOT "${QT_HOST_PATH}" STREQUAL "")
+ # If a QT_HOST_PATH is provided when configuring qtbase, we assume it's a cross build
+ # and thus we require the QT_HOST_PATH to be provided also when using the cross-built Qt.
+ # This tells the Qt toolchain file to do appropriate requirement checks.
+ set(qt_host_path_required TRUE)
+
+ # TODO: Figure out how to make the initial QT_HOST_PATH var relocatable in relation
+ # to the target CMAKE_INSTALL_DIR, if at all possible to do so in a reliable way.
+ get_filename_component(qt_host_path_absolute "${QT_HOST_PATH}" ABSOLUTE)
+ get_filename_component(qt_host_path_cmake_dir_absolute
"${Qt${PROJECT_VERSION_MAJOR}HostInfo_DIR}/.." ABSOLUTE)
- set(init_qt_host_path_cmake_dir
- "
- set(__qt_initial_qt_host_path_cmake_dir \"${__qt_host_path_cmake_dir_absolute}\")
- if(NOT DEFINED QT_HOST_PATH_CMAKE_DIR AND EXISTS \"\${__qt_initial_qt_host_path_cmake_dir}\")
- set(QT_HOST_PATH_CMAKE_DIR \"\${__qt_initial_qt_host_path_cmake_dir}\" CACHE PATH \"\" FORCE)
- endif()")
-
- set(init_qt_host_path_checks "
- if(\"\${QT_HOST_PATH}\" STREQUAL \"\" OR NOT EXISTS \"\${QT_HOST_PATH}\")
- message(FATAL_ERROR \"To use a cross-compiled Qt, please specify a path to a host Qt installation by setting the QT_HOST_PATH cache variable.\")
- endif()
- if(\"\${QT_HOST_PATH_CMAKE_DIR}\" STREQUAL \"\" OR NOT EXISTS \"\${QT_HOST_PATH_CMAKE_DIR}\")
- message(FATAL_ERROR \"To use a cross-compiled Qt, please specify a path to a host Qt installation CMake directory by setting the QT_HOST_PATH_CMAKE_DIR cache variable.\")
- endif()")
endif()
if(CMAKE_TOOLCHAIN_FILE)
file(TO_CMAKE_PATH "${CMAKE_TOOLCHAIN_FILE}" __qt_chainload_toolchain_file)
set(init_original_toolchain_file
- "set(__qt_chainload_toolchain_file \"${__qt_chainload_toolchain_file}\")")
+ "
+set(__qt_initially_configured_toolchain_file \"${__qt_chainload_toolchain_file}\")
+set(__qt_chainload_toolchain_file \"\${__qt_initially_configured_toolchain_file}\")
+")
endif()
if(VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
@@ -223,13 +213,34 @@ function(qt_internal_create_toolchain_file)
" \"Please specify the toolchain file with -DQT_CHAINLOAD_TOOLCHAIN_FILE=<file>.\")")
list(APPEND init_platform " endif()")
list(APPEND init_platform "endif()")
+ elseif(EMSCRIPTEN)
+ list(APPEND init_platform
+"include(\${CMAKE_CURRENT_LIST_DIR}/QtPublicWasmToolchainHelpers.cmake)
+if(DEFINED ENV{EMSDK} AND NOT \"\$ENV{EMSDK}\" STREQUAL \"\")
+ __qt_internal_get_emroot_path_suffix_from_emsdk_env(__qt_toolchain_emroot_path)
+ __qt_internal_get_emscripten_cmake_toolchain_file_path_from_emsdk_env(
+ \"\${__qt_toolchain_emroot_path}\" _qt_candidate_emscripten_toolchain_path)
+ set(__qt_chainload_toolchain_file \"\${_qt_candidate_emscripten_toolchain_path}\")
+endif()
+")
+ list(APPEND init_post_chainload_toolchain "
+if(NOT __qt_chainload_toolchain_file_included)
+ __qt_internal_show_error_no_emscripten_toolchain_file_found_when_using_qt()
+endif()
+")
endif()
string(REPLACE ";" "\n" init_additional_used_variables
"${init_additional_used_variables}")
string(REPLACE ";" "\n" init_vcpkg "${init_vcpkg}")
+
string(REPLACE ";" "\n" init_platform "${init_platform}")
string(REPLACE "LITERAL_SEMICOLON" ";" init_platform "${init_platform}")
+
+ string(REPLACE ";" "\n" init_post_chainload_toolchain "${init_post_chainload_toolchain}")
+ string(REPLACE "LITERAL_SEMICOLON" ";" init_post_chainload_toolchain
+ "${init_post_chainload_toolchain}")
+
qt_compute_relative_path_from_cmake_config_dir_to_prefix()
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/qt.toolchain.cmake.in"
diff --git a/cmake/QtWasmHelpers.cmake b/cmake/QtWasmHelpers.cmake
index 240eaa0540..88161e767c 100644
--- a/cmake/QtWasmHelpers.cmake
+++ b/cmake/QtWasmHelpers.cmake
@@ -3,7 +3,7 @@ function (qt_internal_setup_wasm_target_properties wasmTarget)
target_link_options("${wasmTarget}" INTERFACE
"SHELL:-s ERROR_ON_UNDEFINED_SYMBOLS=1"
- "SHELL:-s EXTRA_EXPORTED_RUNTIME_METHODS=[UTF16ToString,stringToUTF16]"
+ "SHELL:-s EXPORTED_RUNTIME_METHODS=[UTF16ToString,stringToUTF16]"
"SHELL:-s USE_WEBGL2=1"
"--bind"
"SHELL:-s FETCH=1")
@@ -17,14 +17,21 @@ function (qt_internal_setup_wasm_target_properties wasmTarget)
"SHELL:-s MODULARIZE=1"
"SHELL:-s EXPORT_NAME=createQtAppInstance")
- target_compile_options("${wasmTarget}" INTERFACE --bind)
+ #simd
+ if (QT_FEATURE_sse2)
+ target_compile_options("${wasmTarget}" INTERFACE -O2 -msimd128 -msse -msse2)
+ endif()
# Hardcode wasm memory size. Emscripten does not currently support memory growth
# (ALLOW_MEMORY_GROWTH) in pthreads mode, and requires specifying the memory size
# at build time. Further, browsers limit the maximum initial memory size to 1GB.
# QT_WASM_INITIAL_MEMORY must be a multiple of 64KB (i.e. 65536)
- if(NOT DEFINED QT_WASM_INITIAL_MEMORY AND QT_FEATURE_thread)
- set(QT_WASM_INITIAL_MEMORY "1GB")
+ if(NOT DEFINED QT_WASM_INITIAL_MEMORY)
+ if(QT_FEATURE_thread)
+ set(QT_WASM_INITIAL_MEMORY "1GB")
+ else()
+ set(QT_WASM_INITIAL_MEMORY "20MB") # emscripten default is 16MB, we need slightly more sometimes
+ endif()
endif()
if(DEFINED QT_WASM_INITIAL_MEMORY)
@@ -99,7 +106,7 @@ function (qt_internal_setup_wasm_target_properties wasmTarget)
set(QT_CFLAGS_OPTIMIZE_DEBUG "-Os" CACHE STRING INTERNAL FORCE)
set(QT_FEATURE_optimize_debug ON CACHE BOOL INTERNAL FORCE)
- target_link_options("${wasmTarget}" INTERFACE "SHELL:-s ASYNCIFY" "-Os")
+ target_link_options("${wasmTarget}" INTERFACE "SHELL:-s ASYNCIFY" "-Os" "-s" "ASYNCIFY_IMPORTS=[qt_asyncify_suspend_js, qt_asyncify_resume_js]")
target_compile_definitions("${wasmTarget}" INTERFACE QT_HAVE_EMSCRIPTEN_ASYNCIFY)
endif()
endfunction()
diff --git a/cmake/QtWriteArgsFile.cmake b/cmake/QtWriteArgsFile.cmake
index d21d050ed4..666806ffcc 100644
--- a/cmake/QtWriteArgsFile.cmake
+++ b/cmake/QtWriteArgsFile.cmake
@@ -8,7 +8,7 @@
# SKIP_ARGS: Number of arguments to skip from the front of the arguments list.
# IGNORE_ARGS: List of arguments to be ignored, i.e. that are not written.
-cmake_minimum_required(VERSION 3.3)
+cmake_minimum_required(VERSION 3.16)
# Read arguments from IN_FILE and separate them.
file(READ "${IN_FILE}" raw_args)
diff --git a/cmake/ios/MacOSXBundleInfo.plist.in b/cmake/ios/MacOSXBundleInfo.plist.in
index 07da0c65b0..616abe9f10 100644
--- a/cmake/ios/MacOSXBundleInfo.plist.in
+++ b/cmake/ios/MacOSXBundleInfo.plist.in
@@ -19,8 +19,6 @@
<key>CFBundleShortVersionString</key>
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
- <key>CFBundleGetInfoString</key>
- <string>${MACOSX_BUNDLE_INFO_STRING}</string>
<key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
diff --git a/cmake/macos/MacOSXBundleInfo.plist.in b/cmake/macos/MacOSXBundleInfo.plist.in
index 98e73171cb..2ead02b7d5 100644
--- a/cmake/macos/MacOSXBundleInfo.plist.in
+++ b/cmake/macos/MacOSXBundleInfo.plist.in
@@ -22,8 +22,6 @@
<key>LSMinimumSystemVersion</key>
<string>${CMAKE_OSX_DEPLOYMENT_TARGET}</string>
- <key>CFBundleGetInfoString</key>
- <string>${MACOSX_BUNDLE_INFO_STRING}</string>
<key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
diff --git a/cmake/platforms/Platform/Integrity.cmake b/cmake/platforms/Platform/Integrity.cmake
new file mode 100644
index 0000000000..964a01fc2f
--- /dev/null
+++ b/cmake/platforms/Platform/Integrity.cmake
@@ -0,0 +1,8 @@
+# Custom platform module file for INTEGRITY.
+#
+# UNIX must be set here, because this variable is cleared after the toolchain file is loaded.
+#
+# Once the lowest CMake version we support ships an Integrity platform module,
+# we can remove this file.
+
+set(UNIX 1)
diff --git a/cmake/qt.toolchain.cmake.in b/cmake/qt.toolchain.cmake.in
index 9a8019a3da..b8c5852dff 100644
--- a/cmake/qt.toolchain.cmake.in
+++ b/cmake/qt.toolchain.cmake.in
@@ -2,7 +2,11 @@ set(__qt_toolchain_used_variables
QT_CHAINLOAD_TOOLCHAIN_FILE
QT_TOOLCHAIN_INCLUDE_FILE
QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR
- QT_TOOLCHAIN_RELOCATABLE_PREFIX)
+ QT_TOOLCHAIN_RELOCATABLE_PREFIX
+ QT_HOST_PATH
+ QT_HOST_PATH_CMAKE_DIR
+ QT_REQUIRE_HOST_PATH_CHECK
+)
@init_additional_used_variables@
# Make cache variables used by this toolchain file available to the
@@ -19,8 +23,6 @@ if($ENV{_QT_TOOLCHAIN_VARS_INITIALIZED})
endforeach()
endif()
-@init_qt_host_path@
-@init_qt_host_path_cmake_dir@
@init_original_toolchain_file@
@init_vcpkg@
@@ -43,10 +45,13 @@ if(__qt_chainload_toolchain_file)
"'${__qt_chainload_toolchain_file}' does not exist.")
else()
include("${__qt_chainload_toolchain_file}")
+ set(__qt_chainload_toolchain_file_included TRUE)
endif()
unset(__qt_chainload_toolchain_file)
endif()
+@init_post_chainload_toolchain@
+
# Compute dynamically the Qt installation prefix from the location of this file. This allows
# the usage of the toolchain file when the Qt installation is relocated.
get_filename_component(QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX
@@ -67,6 +72,12 @@ get_filename_component(QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR "${CMAKE_CURRENT_LIST_
list(PREPEND CMAKE_PREFIX_PATH "${QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR}")
list(PREPEND CMAKE_FIND_ROOT_PATH "${QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX}")
+# Let CMake load our custom platform modules.
+# CMake-provided platform modules take precedence.
+if(NOT QT_AVOID_CUSTOM_PLATFORM_MODULES)
+ list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/platforms")
+endif()
+
# Handle packages located in QT_ADDITIONAL_PACKAGES_PREFIX_PATH when cross-compiling. Needed for
# Conan.
# We prepend to CMAKE_PREFIX_PATH so that a find_package(Qt6Foo) call works, without having to go
@@ -111,8 +122,6 @@ if(__qt_toolchain_additional_packages_prefixes)
endif()
unset(__qt_toolchain_additional_packages_prefixes)
-@init_qt_host_path_checks@
-
# Allow customization of the toolchain file by placing an additional file next to it.
set(__qt_toolchain_extra_file "${CMAKE_CURRENT_LIST_DIR}/qt.toolchain.extra.cmake")
if(EXISTS "${__qt_toolchain_extra_file}")
@@ -132,10 +141,71 @@ if(QT_TOOLCHAIN_INCLUDE_FILE)
endif()
endif()
+# Set up QT_HOST_PATH and do sanity checks.
+# A host path is required when cross-compiling but optional when doing a native build.
+# Requiredness can be overridden via variable.
+if(DEFINED QT_REQUIRE_HOST_PATH_CHECK)
+ set(__qt_toolchain_host_path_required "${QT_REQUIRE_HOST_PATH_CHECK}")
+else()
+ set(__qt_toolchain_host_path_required "@qt_host_path_required@")
+endif()
+set(__qt_toolchain_initial_qt_host_path
+ "@qt_host_path_absolute@")
+set(__qt_toolchain_initial_qt_host_path_cmake_dir
+ "@qt_host_path_cmake_dir_absolute@")
+
+# Prefer initially configured path if none was explicitly set.
+if(NOT DEFINED QT_HOST_PATH AND __qt_toolchain_initial_qt_host_path
+ AND EXISTS "${__qt_toolchain_initial_qt_host_path}")
+ set(QT_HOST_PATH "${__qt_toolchain_initial_qt_host_path}" CACHE PATH "")
+endif()
+
+if(NOT QT_HOST_PATH STREQUAL "")
+ get_filename_component(__qt_toolchain_host_path_absolute "${QT_HOST_PATH}" ABSOLUTE)
+endif()
+
+if(__qt_toolchain_host_path_required AND
+ ("${QT_HOST_PATH}" STREQUAL "" OR NOT EXISTS "${__qt_toolchain_host_path_absolute}"))
+ message(FATAL_ERROR
+ "To use a cross-compiled Qt, please set the QT_HOST_PATH cache variable to the location "
+ "of your host Qt installation.")
+endif()
+
+# QT_HOST_PATH_CMAKE_DIR is needed to work around the rerooting issue when looking for host tools
+# See REROOT_PATH_ISSUE_MARKER.
+# Prefer initially configured path if none was explicitly set.
+if(__qt_toolchain_host_path_required AND NOT DEFINED QT_HOST_PATH_CMAKE_DIR)
+ if(__qt_toolchain_initial_qt_host_path_cmake_dir
+ AND EXISTS "${__qt_toolchain_initial_qt_host_path_cmake_dir}")
+ set(QT_HOST_PATH_CMAKE_DIR "${__qt_toolchain_initial_qt_host_path_cmake_dir}" CACHE PATH "")
+ else()
+ # First try to auto-compute the location instead of requiring to set QT_HOST_PATH_CMAKE_DIR
+ # explicitly.
+ set(__qt_candidate_host_path_cmake_dir "${QT_HOST_PATH}/lib/cmake")
+ if(__qt_candidate_host_path_cmake_dir AND EXISTS "${__qt_candidate_host_path_cmake_dir}")
+ set(QT_HOST_PATH_CMAKE_DIR
+ "${__qt_candidate_host_path_cmake_dir}" CACHE PATH "")
+ endif()
+ endif()
+endif()
+
+if(NOT QT_HOST_PATH_CMAKE_DIR STREQUAL "")
+ get_filename_component(__qt_toolchain_host_path_cmake_dir_absolute
+ "${QT_HOST_PATH_CMAKE_DIR}" ABSOLUTE)
+endif()
+
+if(__qt_toolchain_host_path_required AND
+ ("${QT_HOST_PATH_CMAKE_DIR}" STREQUAL ""
+ OR NOT EXISTS "${__qt_toolchain_host_path_cmake_dir_absolute}"))
+ message(FATAL_ERROR
+ "To use a cross-compiled Qt, please set the QT_HOST_PATH_CMAKE_DIR cache variable to "
+ "the location of your host Qt installation lib/cmake directory.")
+endif()
+
# Compile tests only see a restricted set of variables.
-# All cache variables, this toolchain file uses, must be made available to compile tests,
-# because this toolchain file will be included there too.
-if(NOT ENV{_QT_TOOLCHAIN_VARS_INITIALIZED})
+# All cache variables, this toolchain file uses, must be made available to project-based
+# try_compile tests because this toolchain file will be included there too.
+if(NOT "$ENV{_QT_TOOLCHAIN_VARS_INITIALIZED}")
set(ENV{_QT_TOOLCHAIN_VARS_INITIALIZED} ON)
foreach(var ${__qt_toolchain_used_variables})
set(ENV{_QT_TOOLCHAIN_${var}} "${${var}}")
diff --git a/cmake/tests/features/CMakeLists.txt b/cmake/tests/features/CMakeLists.txt
index 0fff2b8be9..8fe611b835 100644
--- a/cmake/tests/features/CMakeLists.txt
+++ b/cmake/tests/features/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12.0)
+cmake_minimum_required(VERSION 3.16)
project(FeaturesTest
VERSION 1.0.0
diff --git a/cmake/tests/qt_make_output_file/CMakeLists.txt b/cmake/tests/qt_make_output_file/CMakeLists.txt
index 3620909494..ad1162e538 100644
--- a/cmake/tests/qt_make_output_file/CMakeLists.txt
+++ b/cmake/tests/qt_make_output_file/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12.0)
+cmake_minimum_required(VERSION 3.16)
project(QtMakeOutputFileTest
VERSION 1.0.0
diff --git a/coin/instructions/cmake_documentation_build.yaml b/coin/instructions/cmake_documentation_build.yaml
index 141d0b65b3..2675e63c48 100644
--- a/coin/instructions/cmake_documentation_build.yaml
+++ b/coin/instructions/cmake_documentation_build.yaml
@@ -1,31 +1,28 @@
type: Group
instructions:
- - type: MakeDirectory
- directory: "{{.SourceDir}}_doc_build"
- - type: SetBuildDirectory
- directory: "{{.SourceDir}}_doc_build"
- type: ChangeDirectory
- directory: "{{.BuildDir}}"
+ directory: "{{.SourceDir}}"
+ # If documentation feature is present, Coin installs top-level documentation
+ # built by product(qt5) build into <module_name>_doc_build/doc. Coin will
+ # silently omit installing the top-level documentations if not built by the product.
- type: ExecuteCommand
- command: "rm -f {{.SourceDir}}/CMakeCache.txt" # CMake configure does not apply if not removed.
+ command: "rsync -a {{.SourceDir}}_doc_build/doc {{.SourceDir}}"
maxTimeInSeconds: 300
maxTimeBetweenOutput: 300
- userMessageOnFailure: Failed to remove CMake cache.
+ userMessageOnFailure: Failed to copy top-level docs to build dir.
+ # Filter list is created to exclude everything else than the
+ # generated documentation from the documentation archive.
- type: CreateFileListFromDirectory
- directory: "{{.BuildDir}}/doc"
+ directory: "{{.SourceDir}}/doc"
filterListFileName: "doc_build_filter"
userMessageOnFailure: "Failed to create filter list for docs"
- - type: EnvironmentVariable
- variableName: COIN_CMAKE_ARGS
- variableValue: "-DCMAKE_INSTALL_PREFIX:PATH={{.InstallDir}} {{.SourceDir}}"
- - !include "{{qt/qtbase}}/call_cmake.yaml"
- type: ExecuteCommand
command: "{{.Env.ENV_PREFIX}} cmake --build . --target docs -v"
maxTimeInSeconds: 6000
maxTimeBetweenOutput: 1200
userMessageOnFailure: Failed to generate documentation.
- type: UploadArtifact
- archiveDirectory: "{{.BuildDir}}/doc"
+ archiveDirectory: "{{.SourceDir}}/doc"
transferType: UploadModuleDocumentation
filterListFileName: "doc_build_filter"
maxTimeInSeconds: 1200
diff --git a/coin/instructions/cmake_run_ctest_enforce_exit_code.yaml b/coin/instructions/cmake_run_ctest_enforce_exit_code.yaml
index 5e57b50951..fecf283905 100644
--- a/coin/instructions/cmake_run_ctest_enforce_exit_code.yaml
+++ b/coin/instructions/cmake_run_ctest_enforce_exit_code.yaml
@@ -59,3 +59,45 @@ instructions:
maxTimeBetweenOutput: 900
userMessageOnFailure: >
Failed to run tests.
+
+ - type: Group
+ instructions:
+ - type: EnvironmentVariable
+ variableName: QT_MODULE_TO_TEST
+ variableValue: "{{.SourceDir}}"
+ - type: PrependToEnvironmentVariable
+ variableName: PATH
+ variableValue: "{{.InstallDir}}/bin:"
+ - type: InstallSourceArchive
+ maxTimeInSeconds: 600
+ maxTimeBetweenOutput: 600
+ project: qt/qtqa
+ ref: dev
+ directory: qt/qtqa
+ userMessageOnFailure: "Could not install qt/qtqa source archive. Please investigate why."
+ - type: ChangeDirectory
+ directory: "{{.AgentWorkingDir}}/qt/qtqa/tests/postbuild/bic"
+ - type: ExecuteCommand
+ command: ["{{.InstallDir}}/bin/qmake"]
+ maxTimeInSeconds: 7200
+ maxTimeBetweenOutput: 300
+ userMessageOnFailure: "Failed to execute qmake for bic tests"
+ - type: RunQtUnitTest
+ runTestCommand: ["make", "check", "-j1"]
+ directory: "{{.AgentWorkingDir}}/qt/qtqa/tests/postbuild/bic"
+ testRepetitionAllowance: 0
+ maxTimeInSeconds: 7200
+ maxTimeBetweenOutput: 300
+ userMessageOnFailure: "Running bic tests failed."
+ enable_if:
+ condition: and
+ conditions:
+ - condition: property
+ property: features
+ contains_value: Packaging
+ - condition: property
+ property: target.os
+ equals_value: Linux
+ - condition: property
+ property: features
+ contains_value: EnableBicTests
diff --git a/coin/instructions/cmake_setup_running_qnxqemu_tests_env_vars.yaml b/coin/instructions/cmake_setup_running_qnxqemu_tests_env_vars.yaml
new file mode 100644
index 0000000000..031e3eb4c1
--- /dev/null
+++ b/coin/instructions/cmake_setup_running_qnxqemu_tests_env_vars.yaml
@@ -0,0 +1,40 @@
+type: Group
+instructions:
+ - type: WriteFile
+ fileContents: |
+ #!/usr/bin/python3
+ import subprocess
+ import calendar
+ import datetime
+ import time
+ import sys
+ import os
+ import re
+
+ file=os.path.basename(sys.argv[1])
+ timestamp = str(round(time.time() * 1000))
+ resultdir = os.getenv('COIN_CTEST_RESULTSDIR')
+ results_file = resultdir + "/testresults/" + file +"-" + timestamp + ".xml,xml"
+ testargs = [" -o", results_file, "-o", "-,txt"]
+ if re.search("testlib.selftests.tst_selftests", sys.argv[1]):
+ testargs = []
+ testcmd = sys.argv[1]
+ testcmd += ' '.join(testargs)
+ qemuargs = os.getenv('TESTARGS')
+ sshcmd, ldenv, backend, qpa = qemuargs.split()
+ testdir = sys.argv[1][::-1].split('/', 1)[1][::-1]
+ testcmd = "cd " + testdir + ";" + ldenv + " " + backend + " " + qpa + " " + testcmd
+ proc = subprocess.run(["ssh", sshcmd, testcmd])
+ exit(proc.returncode)
+ filename: "{{.SourceDir}}/coin_qnx_qemu_runner.py"
+ fileMode: 755
+ - type: ExecuteCommand
+ command: "chmod 755 {{.SourceDir}}/coin_qnx_qemu_runner.py"
+ maxTimeInSeconds: 10
+ maxTimeBetweenOutput: 10
+ userMessageOnFailure: >
+ Failed to change file permission.
+ disable_if:
+ condition: property
+ property: host.os
+ equals_value: Windows
diff --git a/coin/instructions/cmake_setup_running_tests_env_vars.yaml b/coin/instructions/cmake_setup_running_tests_env_vars.yaml
index f2c290a3df..c1a83eae07 100644
--- a/coin/instructions/cmake_setup_running_tests_env_vars.yaml
+++ b/coin/instructions/cmake_setup_running_tests_env_vars.yaml
@@ -50,7 +50,7 @@ instructions:
equals_property: target.os
- condition: property
property: target.osVersion
- not_equals_value: QEMU
+ not_in_values: [QEMU, QNX_710]
- type: Group
instructions:
- type: EnvironmentVariable
@@ -64,4 +64,16 @@ instructions:
equals_property: target.os
- condition: property
property: target.osVersion
- not_equals_value: QEMU
+ not_in_values: [QEMU, QNX_710]
+ - type: Group
+ instructions:
+ - !include "{{qt/qtbase}}/cmake_setup_running_qnxqemu_tests_env_vars.yaml"
+ enable_if:
+ condition: and
+ conditions:
+ - condition: property
+ property: target.osVersion
+ equals_value: QNX_710
+ - condition: property
+ property: features
+ not_contains_value: DisableTests
diff --git a/coin/instructions/coin_module_test_docs.yaml b/coin/instructions/coin_module_test_docs.yaml
new file mode 100644
index 0000000000..f42b6ae08f
--- /dev/null
+++ b/coin/instructions/coin_module_test_docs.yaml
@@ -0,0 +1,36 @@
+type: Group
+instructions:
+ - type: EnvironmentVariable
+ variableName: QDOC_NOLINKERRORS
+ variableValue: 1
+ - type: EnvironmentVariable
+ variableName: QDOC_ENABLE_WARNINGLIMIT
+ variableValue: 1
+ - type: SetBuildDirectory
+ directory: "{{.SourceDir}}"
+ - type: ChangeDirectory
+ directory: "{{.BuildDir}}"
+ - type: ExecuteCommand
+ command: "cp -rfs /opt/qt-doctools/. {{.InstallDir}}"
+ userMessageOnFailure: >
+ Failed to create links to provisioned binaries.
+ - type: EnvironmentVariable
+ variableName: COIN_CMAKE_ARGS
+ variableValue: "-DQT_BUILD_TESTS=OFF {{.SourceDir}}"
+ - !include "{{qt/qtbase}}/call_cmake.yaml"
+ - type: ExecuteCommand
+ command: "{{.Env.ENV_PREFIX}} cmake --build . --target generate_docs -v"
+ ignoreExitCode: false
+ maxTimeInSeconds: 1800
+ maxTimeBetweenOutput: 900
+ userMessageOnFailure: >
+ Documentation check failed, see the log for details.
+enable_if:
+ condition: and
+ conditions:
+ - condition: property
+ property: features
+ contains_value: "TestDocs"
+ - condition: property
+ property: host.os
+ equals_property: target.os
diff --git a/coin/instructions/coin_module_test_qnx_start_emulator.yaml b/coin/instructions/coin_module_test_qnx_start_emulator.yaml
new file mode 100644
index 0000000000..39a44f7f99
--- /dev/null
+++ b/coin/instructions/coin_module_test_qnx_start_emulator.yaml
@@ -0,0 +1,90 @@
+type: Group
+instructions:
+ - type: Group
+ instructions:
+ - type: WriteFile
+ fileContents: |
+ #!/bin/bash
+ RESULT=1 # 0 upon success
+ TIMEOUT=60
+ COUNT=0
+ QEMUPID=0
+ QEMUIPADDR="{{.Env.QNX_QEMU_IPADDR}}"
+ mkqnximage --type=qemu --hostname=QNX_QEMU_CI --graphics=no --ip=${QEMUIPADDR} --build --run=-h </dev/null &>/dev/null & disown
+
+ while [[ "QEMUPID" -eq 0 ]]
+ do
+ QEMUPID=`pidof qemu-system-x86_64`
+
+ if [[ "QEMUPID" -eq 0 ]]; then
+ echo "QEMU not yet started, wait 1 sec."
+ COUNT=$((COUNT+1))
+ sleep 1
+ else
+ echo "QEMU running with PID: $QEMUPID"
+ fi
+
+ if [[ "COUNT" -eq "TIMEOUT" ]]; then
+ echo "Timeout waiting QEMU to start"
+ exit 1
+ fi
+ done
+
+ while :; do
+ echo "Waiting QEMU SSH coming up"
+ status=$(ssh -o BatchMode=yes -o ConnectTimeout=1 ${QEMUIPADDR} echo ok 2>&1)
+ RESULT=$?
+ if [ $RESULT -eq 0 ]; then
+ echo "QEMU SSH Connected ok"
+ break
+ fi
+ if [ $RESULT -eq 255 ]; then
+ # connection refused also gets you here
+ if [[ $status == *"Permission denied"* ]] ; then
+ # permission denied indicates the ssh link is okay
+ echo "QEMU SSH server up"
+ RESULT=0
+ break
+ fi
+ fi
+ TIMEOUT=$((TIMEOUT-1))
+ if [ $TIMEOUT -eq 0 ]; then
+ echo "QEMU SSH timed out"
+ exit $RESULT
+ fi
+ sleep 1
+ done
+ exit $RESULT
+ filename: "{{.Env.QNX_QEMU}}/start_qnx_qemu.sh"
+ fileMode: 755
+ - type: ChangeDirectory
+ directory: "{{.Env.QNX_QEMU}}"
+ - type: ExecuteCommand
+ command: "chmod 755 {{.Env.QNX_QEMU}}/start_qnx_qemu.sh"
+ maxTimeInSeconds: 10
+ maxTimeBetweenOutput: 10
+ userMessageOnFailure: >
+ Failed to change file permission.
+ disable_if:
+ condition: property
+ property: host.os
+ equals_value: Windows
+ - type: ExecuteCommand
+ command: "{{.Env.QNX_QEMU}}/start_qnx_qemu.sh"
+ maxTimeInSeconds: 100
+ maxTimeBetweenOutput: 100
+ userMessageOnFailure: >
+ Failed to start QNX qemu, check logs.
+ disable_if:
+ condition: property
+ property: host.os
+ equals_value: Windows
+ enable_if:
+ condition: and
+ conditions:
+ - condition: property
+ property: target.osVersion
+ equals_value: QNX_710
+ - condition: property
+ property: features
+ not_contains_value: DisableTests
diff --git a/coin/instructions/coin_module_test_template_common.yaml b/coin/instructions/coin_module_test_template_common.yaml
index bd610a2281..16fac8dd5d 100644
--- a/coin/instructions/coin_module_test_template_common.yaml
+++ b/coin/instructions/coin_module_test_template_common.yaml
@@ -3,6 +3,7 @@ instructions:
# The build env is needed on MSVC so that tst_qmake can properly build apps / libraries.
- !include "{{qt/qtbase}}/prepare_building_env.yaml"
- !include "{{qt/qtbase}}/coin_module_test_android_start_emulator.yaml"
+ - !include "{{qt/qtbase}}/coin_module_test_qnx_start_emulator.yaml"
# The test env vars are needed to pick the proper prefix.bat file.
- !include "{{qt/qtbase}}/cmake_setup_running_tests_env_vars.yaml"
- !include "{{qt/qtbase}}/coin_module_test_qemu_env_vars.yaml"
diff --git a/coin/instructions/coin_module_test_template_v2.yaml b/coin/instructions/coin_module_test_template_v2.yaml
index 4691eff55a..25622763ff 100644
--- a/coin/instructions/coin_module_test_template_v2.yaml
+++ b/coin/instructions/coin_module_test_template_v2.yaml
@@ -14,7 +14,7 @@ instructions:
equals_property: target.os
- condition: property
property: target.osVersion
- equals_value: QEMU
+ in_values: [QEMU, QNX_710]
disable_if:
condition: property
property: features
diff --git a/coin/instructions/coin_module_test_template_v3.yaml b/coin/instructions/coin_module_test_template_v3.yaml
index c3801c2dc9..4dee84fac9 100644
--- a/coin/instructions/coin_module_test_template_v3.yaml
+++ b/coin/instructions/coin_module_test_template_v3.yaml
@@ -14,7 +14,7 @@ instructions:
equals_property: target.os
- condition: property
property: target.osVersion
- equals_value: QEMU
+ in_values: [QEMU, QNX_710]
- condition: property
property: target.osVersion
equals_value: IOS_ANY
diff --git a/coin/instructions/coin_qtbase_build_template_v2.yaml b/coin/instructions/coin_qtbase_build_template_v2.yaml
index d6c8bea247..571a9f2088 100644
--- a/coin/instructions/coin_qtbase_build_template_v2.yaml
+++ b/coin/instructions/coin_qtbase_build_template_v2.yaml
@@ -26,7 +26,7 @@ instructions:
enable_if:
condition: property
property: target.osVersion
- in_values: [Android_ANY, QEMU, IOS_ANY]
+ in_values: [Android_ANY, QEMU, IOS_ANY, QNX_710]
enable_if:
condition: or
conditions:
diff --git a/coin/instructions/coin_qtbase_test_docs.yaml b/coin/instructions/coin_qtbase_test_docs.yaml
new file mode 100644
index 0000000000..824d8c5677
--- /dev/null
+++ b/coin/instructions/coin_qtbase_test_docs.yaml
@@ -0,0 +1,39 @@
+type: Group
+instructions:
+ - type: EnvironmentVariable
+ variableName: QDOC_NOLINKERRORS
+ variableValue: 1
+ - type: EnvironmentVariable
+ variableName: QDOC_ENABLE_WARNINGLIMIT
+ variableValue: 1
+ - type: SetBuildDirectory
+ directory: "{{.SourceDir}}"
+ - type: ChangeDirectory
+ directory: "{{.BuildDir}}"
+ - type: ExecuteCommand
+ command: "cp -rfs /opt/qt-doctools/. {{.InstallDir}}"
+ userMessageOnFailure: >
+ Failed to create links to provisioned binaries.
+ - type: ExecuteCommand
+ command: "{{.Env.ENV_PREFIX}} cmake {{.Env.CONFIGURE_ARGS}} -DCMAKE_INSTALL_PREFIX:PATH={{.InstallDir}} -DQT_BUILD_TESTS=OFF {{.SourceDir}}"
+ executeCommandArgumentSplitingBehavior: SplitAfterVariableSubstitution
+ maxTimeInSeconds: 6000
+ maxTimeBetweenOutput: 1200
+ userMessageOnFailure: >
+ Failed to call cmake.
+ - type: ExecuteCommand
+ command: "{{.Env.ENV_PREFIX}} cmake --build . --target generate_docs -v"
+ ignoreExitCode: false
+ maxTimeInSeconds: 1800
+ maxTimeBetweenOutput: 900
+ userMessageOnFailure: >
+ Documentation check failed, see the log for details.
+enable_if:
+ condition: and
+ conditions:
+ - condition: property
+ property: features
+ contains_value: "TestDocs"
+ - condition: property
+ property: host.os
+ equals_property: target.os
diff --git a/coin/instructions/prepare_building_env.yaml b/coin/instructions/prepare_building_env.yaml
index 9217ccf132..c4d7b2bf59 100644
--- a/coin/instructions/prepare_building_env.yaml
+++ b/coin/instructions/prepare_building_env.yaml
@@ -201,6 +201,20 @@ instructions:
condition: property
property: host.compiler
equals_value: MSVC2019
+ - type: EnvironmentVariable
+ variableName: VC_SCRIPT
+ variableValue: "%ProgramFiles%\\Microsoft Visual Studio\\2022\\Preview\\VC\\Auxiliary\\Build\\vcvarsall.bat"
+ enable_if:
+ condition: property
+ property: host.compiler
+ equals_value: MSVC2022_PREVIEW
+ - type: EnvironmentVariable
+ variableName: VC_SCRIPT
+ variableValue: "%ProgramFiles%\\Microsoft Visual Studio\\2022\\Professional\\VC\\Auxiliary\\Build\\vcvarsall.bat"
+ enable_if:
+ condition: property
+ property: host.compiler
+ equals_value: MSVC2022
# With MSVC we need setup the environment before every subprocess call, the group below creates a script that
@@ -266,14 +280,14 @@ instructions:
enable_if:
condition: property
property: target.osVersion
- equals_value: QEMU
+ in_values: [QEMU, QNX_710]
- type: EnvironmentVariable
variableName: TARGET_ENV_PREFIX
variableValue: ""
disable_if:
condition: property
property: target.osVersion
- equals_value: QEMU
+ in_values: [QEMU, QNX_710]
# Windows on Arm, cross-compilation with MSVC
- type: Group
@@ -298,6 +312,12 @@ instructions:
property: target.os
equals_value: QNX
instructions:
+ - type: WriteFile
+ fileContents: "#!/bin/bash\nexport TESTARGS={{.Env.TESTARGS}}\nexport TESTRUNNER={{.Env.TESTRUNNER}}\nexport COIN_CTEST_RESULTSDIR={{.Env.COIN_CTEST_RESULTSDIR}}\n$*"
+ filename: "{{.Env.HOME}}/prefix.sh"
+ fileMode: 493
+ maxTimeInSeconds: 20
+ maxTimeBetweenOutput: 20
- type: EnvironmentVariable
variableName: QNX_TARGET
variableValue: "{{.Env.QNX_710}}/target/qnx7"
@@ -319,8 +339,59 @@ instructions:
- type: EnvironmentVariable
variableName: QNX_HOST
variableValue: "{{.Env.QNX_710}}/host/linux/x86_64"
+ - type: AppendToEnvironmentVariable
+ variableName: PATH
+ variableValue: ":{{.Env.QEMUARMV7_TOOLCHAIN_SYSROOT}}/../x86_64-pokysdk-linux/usr/bin:"
enable_if:
condition: property
property: host.os
equals_value: Linux
+ # Enable warnings are errors
+ - type: Group
+ instructions:
+ - type: AppendToEnvironmentVariable
+ variableName: CONFIGURE_ARGS
+ variableValue: " -DWARNINGS_ARE_ERRORS=ON"
+ enable_if:
+ condition: property
+ property: features
+ contains_value: WarningsAreErrors
+
+ # Sccache
+ - type: Group
+ instructions:
+ - type: AppendToEnvironmentVariable
+ variableName: CONFIGURE_ARGS
+ variableValue: " -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache"
+ - type: AppendToEnvironmentVariable
+ variableName: NON_QTBASE_CONFIGURE_ARGS
+ variableValue: " -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache"
+ - type: AppendToEnvironmentVariable
+ variableName: TEST_CONFIGURE_ARGS
+ variableValue: " -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache"
+ - type: AppendToEnvironmentVariable
+ variableName: TARGET_CONFIGURE_ARGS
+ variableValue: " -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache"
+ - type: AppendToEnvironmentVariable
+ variableName: NON_QTBASE_TARGET_CONFIGURE_ARGS
+ variableValue: " -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache"
+ enable_if:
+ condition: property
+ property: features
+ contains_value: Sccache
+
+ - type: SetEnvironmentFromScript
+ command: [C:\Utils\emsdk\emsdk_env.bat]
+ userMessageOnFailure: "Failed to set emscripten environment"
+ maxTimeInSeconds: 60
+ maxTimeBetweenOutput: 60
+ enable_if:
+ condition: and
+ conditions:
+ - condition: property
+ property: target.osVersion
+ contains_value: WebAssembly
+ - condition: property
+ property: host.os
+ contains_value: Windows
diff --git a/coin/module_config.yaml b/coin/module_config.yaml
index 6d7f067ebc..868b37f3dc 100644
--- a/coin/module_config.yaml
+++ b/coin/module_config.yaml
@@ -10,3 +10,4 @@ instructions:
Test:
- !include "{{qt/qtbase}}/coin_module_test_template_v3.yaml"
+ - !include "{{qt/qtbase}}/coin_qtbase_test_docs.yaml"
diff --git a/conanfile.py b/conanfile.py
index 531fa59f3b..9331c8beb4 100644
--- a/conanfile.py
+++ b/conanfile.py
@@ -81,7 +81,9 @@ class QtConfigureOption(object):
if self._binary_option and self.possible_values:
raise QtConanError(
- f"A binary option: '{name}' can not contain values: " f"{self.possible_values}"
+ "A binary option: '{0}' can not contain values: {1}".format(
+ name, self.possible_values
+ )
)
self.default = default
@@ -149,8 +151,8 @@ class QtOptionParser:
configure = root_path.joinpath(script).resolve(strict=True)
else:
raise QtConanError(
- f"Unable to locate 'configure(.bat)' "
- f"from current context: {recipe_folder}"
+ "Unable to locate 'configure(.bat)' "
+ "from current context: {0}".format(recipe_folder)
)
self.write_configure_options(configure, output_file=configure_options)
@@ -163,17 +165,17 @@ class QtOptionParser:
self.set_features(feature_name_prefix="feature-", features=features)
def write_configure_options(self, configure: Path, output_file: Path) -> None:
- print(f"QtOptionParser: writing Qt configure options to: {output_file}")
+ print("QtOptionParser: writing Qt configure options to: {0}".format(output_file))
cmd = [str(configure), "-write-options-for-conan", str(output_file)]
subprocess.run(cmd, check=True, timeout=60 * 2)
def read_configure_options(self, input_file: Path) -> Dict[str, Any]:
- print(f"QtOptionParser: reading Qt configure options from: {input_file}")
+ print("QtOptionParser: reading Qt configure options from: {0}".format(input_file))
with open(str(input_file)) as f:
return json.load(f)
def write_configure_features(self, configure: Path, output_file: Path) -> None:
- print(f"QtOptionParser: writing Qt configure features to: {output_file}")
+ print("QtOptionParser: writing Qt configure features to: {0}".format(output_file))
cmd = [str(configure), "-list-features"]
with open(output_file, "w") as f:
subprocess.run(
@@ -186,7 +188,7 @@ class QtOptionParser:
)
def read_configure_features(self, input_file: Path) -> List[str]:
- print(f"QtOptionParser: reading Qt configure features from: {input_file}")
+ print("QtOptionParser: reading Qt configure features from: {0}".format(input_file))
with open(str(input_file)) as f:
return f.readlines()
@@ -199,13 +201,14 @@ class QtOptionParser:
if not option_type:
raise QtConanError(
- "Qt 'configure(.bat) -write-options-for-conan' produced output that is "
- f"missing 'type'. Unable to set options dynamically. Item: {option_name}"
+ "Qt 'configure(.bat) -write-options-for-conan' produced output "
+ "that is missing 'type'. Unable to set options dynamically. "
+ "Item: {0}".format(option_name)
)
if not isinstance(values, list):
- raise QtConanError(f"The 'values' field is not a list: {option_name}")
+ raise QtConanError("The 'values' field is not a list: {0}".format(option_name))
if option_type == "enum" and not values:
- raise QtConanError(f"The enum values are missing for: {option_name}")
+ raise QtConanError("The enum values are missing for: {0}".format(option_name))
opt = QtConfigureOption(
name=option_name, type=option_type, values=values, default=default
@@ -265,7 +268,9 @@ class QtOptionParser:
return qt_opt
else:
raise QtConanError(
- "Could not find a matching Qt configure option for: " f"{conan_option_name}"
+ "Could not find a matching Qt configure option for: {0}".format(
+ conan_option_name
+ )
)
def _is_excluded_from_configure() -> bool:
@@ -336,12 +341,12 @@ def _build_qtbase(conan_file: ConanFile):
)
cmake_args = parser.get_cmake_args_for_configure(conan_file.options)
if cmake_args:
- cmd += f" -- {' '.join(cmake_args)}"
- conan_file.output.info(f"Calling: {cmd}")
+ cmd += " -- {0}".format(" ".join(cmake_args))
+ conan_file.output.info("Calling: {0}".format(cmd))
conan_file.run(cmd)
cmd = " ".join(["cmake", "--build", ".", "--parallel"])
- conan_file.output.info(f"Calling: {cmd}")
+ conan_file.output.info("Calling: {0}".format(cmd))
conan_file.run(cmd)
@@ -371,7 +376,7 @@ class QtBase(ConanFile):
exports_sources = "*", "!conan*.*"
# use commit ID as the RREV (recipe revision)
revision_mode = "scm"
- python_requires = f"qt-conan-common/{_get_qt_minor_version()}@qt/everywhere"
+ python_requires = "qt-conan-common/{0}@qt/everywhere".format(_get_qt_minor_version())
def set_version(self):
# Executed during "conan export" i.e. in source tree
@@ -389,41 +394,66 @@ class QtBase(ConanFile):
if not value or value == "None":
setattr(self.options, option_name, option_value)
- default_all_os_options = [
- "release",
- "shared",
- "gui",
- "widgets",
- "accessibility",
- "system_proxies",
- "ico",
- ]
- for item in default_all_os_options:
+ def _set_build_type(build_type: str) -> None:
+ if self.settings.build_type != build_type:
+ msg = (
+ "The build_type '{0}' changed to '{1}'. Please check your Settings and "
+ "Options. The used Qt options enforce '{2}' as a build_type. ".format(
+ self.settings.build_type, build_type, build_type
+ )
+ )
+ raise QtConanError(msg)
+ self.settings.build_type = build_type
+
+ def _check_mutually_exclusive_options(options: Dict[str, str]) -> None:
+ if list(options.values()).count("yes") > 1:
+ raise QtConanError(
+ "These Qt options are mutually exclusive: {0}"
+ ". Choose only one of them and try again.".format(list(options.keys()))
+ )
+
+ default_options = ["shared", "gui", "widgets", "accessibility", "system_proxies", "ico"]
+
+ if self.settings.os == "Macos":
+ default_options.append("framework")
+
+ for item in default_options:
_set_default_if_not_set(item, "yes")
- if self.settings.os == "Windows":
- self.options.debug_and_release = "yes"
- elif self.settings.os == "Linux":
- pass
- elif self.settings.os == "Macos":
- self.options.debug_and_release = "yes"
- self.options.framework = "yes"
+ release = self.options.get_safe("release", default="no")
+ debug = self.options.get_safe("debug", default="no")
+ debug_and_release = self.options.get_safe("debug_and_release", default="no")
+ force_debug_info = self.options.get_safe("force_debug_info", default="no")
+ optimize_size = self.options.get_safe("optimize_size", default="no")
- if self.options.get_safe("debug_and_release", default="no") == "yes":
- # Qt build system will build both debug and release binaries
- del self.settings.build_type
+ # these options are mutually exclusive options so do a sanity check
+ _check_mutually_exclusive_options(
+ {"release": release, "debug": debug, "debug_and_release": debug_and_release}
+ )
- # Map Conan build_type to Qt configure(.bat) options
- if self.settings.get_safe("build_type", default="None") == "Release":
+ # Prioritize Qt's configure options over Settings.build_type
+ if debug_and_release == "yes":
+ # Qt build system will build both debug and release binaries
+ if force_debug_info == "yes":
+ _set_build_type("RelWithDebInfo")
+ else:
+ _set_build_type("Release")
+ elif release == "yes":
+ _check_mutually_exclusive_options(
+ {"force_debug_info": force_debug_info, "optimize_size": optimize_size}
+ )
+ if force_debug_info == "yes":
+ _set_build_type("RelWithDebInfo")
+ elif optimize_size == "yes":
+ _set_build_type("MinSizeRel")
+ else:
+ _set_build_type("Release")
+ elif debug == "yes":
+ _set_build_type("Debug")
+ else:
+ # set default that mirror the configure(.bat) default values
self.options.release = "yes"
- self.options.debug = "no"
- elif self.settings.get_safe("build_type", default="None") == "Debug":
- self.options.release = "no"
- self.options.debug = "yes"
- elif self.settings.get_safe("build_type", default="None") == "MinSizeRel":
- self.options.optimize_size = "yes"
- elif self.settings.get_safe("build_type", default="None") == "RelWithDebInfo":
- self.options.force_debug_info = "yes"
+ _set_build_type("Release")
def build(self):
self.python_requires["qt-conan-common"].module.build_env_wrap(self, _build_qtbase)
@@ -440,7 +470,15 @@ class QtBase(ConanFile):
def package_id(self):
# https://docs.conan.io/en/latest/creating_packages/define_abi_compatibility.html
- self.info.requires.package_revision_mode()
+
+ # The package_revision_mode() is too strict for Qt CI. This mode includes artifacts
+ # checksum in package_id which is problematic in Qt CI re-runs (re-run flaky
+ # build) which contain different build timestamps (cmake) which end up in library
+ # files -> different package_id.
+ self.info.requires.recipe_revision_mode()
+
+ # Enable 'qt-conan-common' updates on client side with $conan install .. --update
+ self.info.python_requires.recipe_revision_mode()
# Remove those configure(.bat) options which should not affect package_id.
# These point to local file system paths and in order to re-use pre-built
@@ -448,18 +486,26 @@ class QtBase(ConanFile):
# as those probably differ on each machine
rm_list = [
"sdk",
- "android_sdk_path",
- "android_ndk_path",
+ "android_sdk",
+ "android_ndk",
"android_ndk_platform",
"android_abis",
"android_javac_target",
"android_javac_source",
"qpa",
"translationsdir",
+ "headersclean",
]
for item in rm_list:
if item in self.info.options:
delattr(self.info.options, item)
+ # filter also those cmake options that should not end up in the package_id
+ if hasattr(self.info.options, "cmake_args_qtbase"):
+ _filter = self.python_requires[
+ "qt-conan-common"
+ ].module.filter_cmake_args_for_package_id
+
+ self.info.options.cmake_args_qtbase = _filter(self.info.options.cmake_args_qtbase)
def deploy(self):
self.copy("*") # copy from current package
diff --git a/config.tests/arch/CMakeLists.txt b/config.tests/arch/CMakeLists.txt
index c0873a984f..9ef6e37b3b 100644
--- a/config.tests/arch/CMakeLists.txt
+++ b/config.tests/arch/CMakeLists.txt
@@ -1,6 +1,10 @@
-cmake_minimum_required(VERSION 3.15.0)
+cmake_minimum_required(VERSION 3.16)
project(arch LANGUAGES CXX)
add_executable(architecture_test)
set_property(TARGET architecture_test PROPERTY MACOSX_BUNDLE FALSE)
target_sources(architecture_test PRIVATE arch.cpp)
+
+if(EMSCRIPTEN)
+ target_compile_options(architecture_test PRIVATE -O2 -msimd128 -msse -msse2)
+endif()
diff --git a/config.tests/precompile_header/CMakeLists.txt b/config.tests/precompile_header/CMakeLists.txt
index 40f9e3da81..3009eafd19 100644
--- a/config.tests/precompile_header/CMakeLists.txt
+++ b/config.tests/precompile_header/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.15.0)
+cmake_minimum_required(VERSION 3.16)
project(precompile_header LANGUAGES CXX)
add_executable(precompile_header main.cpp)
diff --git a/config.tests/separate_debug_info/CMakeLists.txt b/config.tests/separate_debug_info/CMakeLists.txt
index 1b98c0dab0..c23b57566e 100644
--- a/config.tests/separate_debug_info/CMakeLists.txt
+++ b/config.tests/separate_debug_info/CMakeLists.txt
@@ -1,7 +1,6 @@
# special case skip regeneration
-cmake_minimum_required(VERSION 3.14.0)
+cmake_minimum_required(VERSION 3.16)
project(objcopytest LANGUAGES CXX)
-include(CMakeFindBinUtils)
add_executable(objcopytest main.cpp)
add_custom_command(
TARGET objcopytest
diff --git a/config.tests/static_link_order/CMakeLists.txt b/config.tests/static_link_order/CMakeLists.txt
index 36ce10e87c..b3c122c300 100644
--- a/config.tests/static_link_order/CMakeLists.txt
+++ b/config.tests/static_link_order/CMakeLists.txt
@@ -7,7 +7,7 @@
# staticlib2.cpp.o.
#
# For now it's only applicable for ld-like linkers. 'lld' has no such issue.
-cmake_minimum_required(VERSION 3.14)
+cmake_minimum_required(VERSION 3.16)
project(static_link_order_test LANGUAGES CXX)
diff --git a/config.tests/x86_simd/CMakeLists.txt b/config.tests/x86_simd/CMakeLists.txt
index b624b7bc95..d70f9b54e0 100644
--- a/config.tests/x86_simd/CMakeLists.txt
+++ b/config.tests/x86_simd/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.14.0)
+cmake_minimum_required(VERSION 3.16)
project(x86_simd LANGUAGES CXX)
include(../../cmake/QtPlatformSupport.cmake)
diff --git a/config_help.txt b/config_help.txt
index fcc1c6c526..839a21bb61 100644
--- a/config_help.txt
+++ b/config_help.txt
@@ -209,7 +209,7 @@ Network options:
-no-openssl .......... Do not use OpenSSL [default on Apple]
-openssl-linked ...... Use OpenSSL and link to libssl [no]
-openssl-runtime ..... Use OpenSSL and dynamically load libssl [auto]
- -schannel ............ Use Secure Channel [no] (Windows only)
+ -schannel ............ Use Secure Channel [auto] (Windows only)
-securetransport ..... Use SecureTransport [auto] (Apple only)
-sctp ................ Enable SCTP support [no]
diff --git a/configure.cmake b/configure.cmake
index 7341594e39..3c0079ef49 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -659,7 +659,9 @@ qt_feature("signaling_nan" PUBLIC
)
qt_feature("sse2" PRIVATE
LABEL "SSE2"
- CONDITION ( ( ( TEST_architecture_arch STREQUAL i386 ) OR ( TEST_architecture_arch STREQUAL x86_64 ) ) AND TEST_subarch_sse2 ) OR QT_FORCE_FEATURE_sse2 # special case
+ CONDITION ( ( ( TEST_architecture_arch STREQUAL i386 )
+ OR ( TEST_architecture_arch STREQUAL x86_64 ) ) AND TEST_subarch_sse2 ) OR QT_FORCE_FEATURE_sse2 OR WASM
+ AUTODETECT NOT WASM
)
qt_feature_definition("sse2" "QT_COMPILER_SUPPORTS_SSE2" VALUE "1")
qt_feature_config("sse2" QMAKE_PRIVATE_CONFIG)
@@ -1017,7 +1019,7 @@ qt_configure_add_summary_entry(
TYPE "featureList"
ARGS "sse2 sse3 ssse3 sse4_1 sse4_2"
MESSAGE "SSE"
- CONDITION ( ( TEST_architecture_arch STREQUAL i386 ) OR ( TEST_architecture_arch STREQUAL x86_64 ) )
+ CONDITION ( ( TEST_architecture_arch STREQUAL i386 ) OR ( TEST_architecture_arch STREQUAL x86_64 ) OR ( TEST_architecture_arch STREQUAL wasm ) )
)
qt_configure_add_summary_entry(
TYPE "featureList"
diff --git a/doc/global/externalsites/external-resources.qdoc b/doc/global/externalsites/external-resources.qdoc
index ffebbe5df0..19cbf87e62 100644
--- a/doc/global/externalsites/external-resources.qdoc
+++ b/doc/global/externalsites/external-resources.qdoc
@@ -233,8 +233,8 @@
*/
/*!
- \externalpage http://msdn.microsoft.com/en-us/directx/default.aspx
- \title Direct X SDK
+ \externalpage https://docs.microsoft.com/en-us/windows/win32/winsock/socket-handles-2
+ \title Winsock 2 Socket Handle
*/
/*!
diff --git a/doc/global/macros.qdocconf b/doc/global/macros.qdocconf
index 0efbf05dfb..8b5f499d07 100644
--- a/doc/global/macros.qdocconf
+++ b/doc/global/macros.qdocconf
@@ -46,8 +46,14 @@ macro.endfloat.HTML = "</div>"
macro.clearfloat.HTML = "<br style=\"clear: both\" />"
macro.emptyspan.HTML = "<span></span>"
-# Expands to the minor version based on the QT_VER environment variable
-macro.QtMinorVersion = "$QT_VER"
+# Used like \brief, but replicates the sentence also as text.
+# Wrap the entire sentence with {}, for example:
+# \summary {Creates a build target.}
+macro.summary = "\\brief \1\n\n\1\n"
+
+# Macros that expand to the major and minor versions based on the QT_VER environment variable
+{macro.QtMajorVersion,macro.QtMinorVersion} = "$QT_VER"
+macro.QtMajorVersion.match = "^(\\d+)\\."
macro.QtMinorVersion.match = "\\d+\\.(\\d+)"
# Embed YouTube content by video ID - Example: \youtube dQw4w9WgXcQ
diff --git a/doc/global/qt-cpp-defines.qdocconf b/doc/global/qt-cpp-defines.qdocconf
index da4e537961..b45df3fce8 100644
--- a/doc/global/qt-cpp-defines.qdocconf
+++ b/doc/global/qt-cpp-defines.qdocconf
@@ -92,6 +92,7 @@ Cpp.ignoretokens += \
Q_EXPORT_PLUGIN \
Q_EXPORT_PLUGIN2 \
Q_GADGET \
+ Q_GADGET_EXPORT \
Q_GFX_INLINE \
Q_GUI_EXPORT \
Q_GUI_EXPORT_INLINE \
diff --git a/doc/global/template/style/offline.css b/doc/global/template/style/offline.css
index acfae7eb10..4075845549 100644
--- a/doc/global/template/style/offline.css
+++ b/doc/global/template/style/offline.css
@@ -114,39 +114,18 @@ a[href*="https://"]::before {
NOTE styles
-------------------------------
*/
-
-.notetitle, .tiptitle, .fastpathtitle {
- font-weight: bold
-}
-
-.attentiontitle, .cautiontitle, .dangertitle, .importanttitle, .remembertitle, .restrictiontitle {
- font-weight: bold
+.admonition {
+ padding: 5px 0 5px 40px;
+ border: #ccc 1px solid;
}
-.note, .tip, .fastpath {
- background: #F2F2F2 url(../images/ico_note.png);
- background-repeat: no-repeat;
- background-position: top left;
- padding: 5px;
- padding-left: 40px;
- padding-bottom: 10px;
- border: #999 1px dotted;
- color: #666666;
- margin: 5px;
+.admonition.note, .admonition.important {
+ background: #f2f2f2 3px 6px no-repeat url(../images/ico_note.png);
}
-.attention, .caution, .danger, .important, .remember, .restriction {
- background: #F2F2F2 url(../images/ico_note_attention.png);
- background-repeat: no-repeat;
- background-position: top left;
- padding: 5px;
- padding-left: 40px;
- padding-bottom: 10px;
- border: #999 1px dotted;
- color: #666666;
- margin: 5px;
+.admonition.warning {
+ background: #f2f2f2 3px 6px no-repeat url(../images/ico_note_attention.png);
}
-
/*
-------------------------------
Top navigation
diff --git a/doc/global/template/style/online.css b/doc/global/template/style/online.css
index 7ad121d51f..23d387430e 100644
--- a/doc/global/template/style/online.css
+++ b/doc/global/template/style/online.css
@@ -987,6 +987,25 @@ pre, .LegaleseLeft {
color:#fff;
white-space: pre-wrap
}
+div.admonition {
+ margin:1.5em 0 1.5em;
+ padding:12px;
+}
+div.admonition.note {
+ background-color:#c5d3f4;
+ border-left:5px solid #7a9ae5;
+}
+div.admonition.warning {
+ background-color:#ffe4e4;
+ border-left:5px solid #ff8383;
+}
+div.admonition.important {
+ background-color:#fef9f3;
+ border-left:5px solid #f6cb97;
+}
+.mainContent .admonition p {
+ margin:0;
+}
pre .str,code .str {
color:#aaaaaa
}
diff --git a/examples/dbus/chat/chat.pro b/examples/dbus/chat/chat.pro
index 631a876954..93d3178177 100644
--- a/examples/dbus/chat/chat.pro
+++ b/examples/dbus/chat/chat.pro
@@ -7,6 +7,8 @@ FORMS += chatmainwindow.ui chatsetnickname.ui
DBUS_ADAPTORS += org.example.chat.xml
DBUS_INTERFACES += org.example.chat.xml
+CONFIG += no_batch # work around QTBUG-96513
+
# install
target.path = $$[QT_INSTALL_EXAMPLES]/dbus/chat
INSTALLS += target
diff --git a/examples/dbus/remotecontrolledcar/car/car.pro b/examples/dbus/remotecontrolledcar/car/car.pro
index 35a186c7fe..5e354e3d0b 100644
--- a/examples/dbus/remotecontrolledcar/car/car.pro
+++ b/examples/dbus/remotecontrolledcar/car/car.pro
@@ -4,6 +4,8 @@ DBUS_ADAPTORS += car.xml
HEADERS += car.h
SOURCES += car.cpp main.cpp
+CONFIG += no_batch # work around QTBUG-96513
+
# install
target.path = $$[QT_INSTALL_EXAMPLES]/dbus/remotecontrolledcar/car
INSTALLS += target
diff --git a/examples/gui/rasterwindow/rasterwindow.h b/examples/gui/rasterwindow/rasterwindow.h
index 58c3ab89b2..279952cf61 100644
--- a/examples/gui/rasterwindow/rasterwindow.h
+++ b/examples/gui/rasterwindow/rasterwindow.h
@@ -53,6 +53,7 @@
//! [1]
#include <QtGui>
+#include <QScopedPointer>
class RasterWindow : public QWindow
{
@@ -73,7 +74,7 @@ protected:
void exposeEvent(QExposeEvent *event) override;
private:
- QBackingStore *m_backingStore;
+ QScopedPointer<QBackingStore> m_backingStore;
};
//! [1]
#endif // RASTERWINDOW_H
diff --git a/examples/network/multistreamclient/timeconsumer.cpp b/examples/network/multistreamclient/timeconsumer.cpp
index 6543e53cfc..3790bbbc3f 100644
--- a/examples/network/multistreamclient/timeconsumer.cpp
+++ b/examples/network/multistreamclient/timeconsumer.cpp
@@ -82,7 +82,7 @@ void TimeConsumer::readDatagram(const QByteArray &ba)
void TimeConsumer::timerTick()
{
QByteArray buf;
- QDataStream ds(&buf, QIODevice::WriteOnly);
+ QDataStream ds(&buf, QIODeviceBase::WriteOnly);
ds << lastTime;
emit writeDatagram(buf);
diff --git a/examples/network/multistreamserver/timeprovider.cpp b/examples/network/multistreamserver/timeprovider.cpp
index fb50baac26..dc8bca9769 100644
--- a/examples/network/multistreamserver/timeprovider.cpp
+++ b/examples/network/multistreamserver/timeprovider.cpp
@@ -71,7 +71,7 @@ void TimeProvider::readDatagram(QSctpSocket &from, const QByteArray &ba)
|| curTime.minute() != clientTime.minute()
|| curTime.hour() != clientTime.hour()) {
QByteArray buf;
- QDataStream out_ds(&buf, QIODevice::WriteOnly);
+ QDataStream out_ds(&buf, QIODeviceBase::WriteOnly);
out_ds << curTime;
emit writeDatagram(&from, buf);
diff --git a/examples/widgets/draganddrop/puzzle/puzzlewidget.cpp b/examples/widgets/draganddrop/puzzle/puzzlewidget.cpp
index 06dda9c29f..361c7e937b 100644
--- a/examples/widgets/draganddrop/puzzle/puzzlewidget.cpp
+++ b/examples/widgets/draganddrop/puzzle/puzzlewidget.cpp
@@ -199,8 +199,8 @@ void PuzzleWidget::paintEvent(QPaintEvent *event)
const QRect PuzzleWidget::targetSquare(const QPoint &position) const
{
- return QRect(position / pieceSize() * pieceSize(),
- QSize(pieceSize(), pieceSize()));
+ QPoint topLeft = QPoint(position.x() / pieceSize(), position.y() / pieceSize()) * pieceSize();
+ return QRect(topLeft, QSize(pieceSize(), pieceSize()));
}
int PuzzleWidget::pieceSize() const
diff --git a/examples/widgets/itemviews/puzzle/puzzlewidget.cpp b/examples/widgets/itemviews/puzzle/puzzlewidget.cpp
index 2c60d28946..e5e0192c96 100644
--- a/examples/widgets/itemviews/puzzle/puzzlewidget.cpp
+++ b/examples/widgets/itemviews/puzzle/puzzlewidget.cpp
@@ -195,8 +195,8 @@ void PuzzleWidget::paintEvent(QPaintEvent *event)
const QRect PuzzleWidget::targetSquare(const QPoint &position) const
{
- return QRect(position / pieceSize() * pieceSize(),
- QSize(pieceSize(), pieceSize()));
+ QPoint topLeft = QPoint(position.x() / pieceSize(), position.y() / pieceSize()) * pieceSize();
+ return QRect(topLeft, QSize(pieceSize(), pieceSize()));
}
int PuzzleWidget::pieceSize() const
diff --git a/examples/widgets/painting/affine/xform.cpp b/examples/widgets/painting/affine/xform.cpp
index d7ed2125d2..a18d6fb71b 100644
--- a/examples/widgets/painting/affine/xform.cpp
+++ b/examples/widgets/painting/affine/xform.cpp
@@ -58,27 +58,22 @@
const int alpha = 155;
XFormView::XFormView(QWidget *parent)
- : ArthurFrame(parent)
+ : ArthurFrame(parent),
+ m_pixmap(QPixmap(":res/affine/bg1.jpg"))
{
setAttribute(Qt::WA_MouseTracking);
- m_type = VectorType;
- m_rotation = 0.0;
- m_scale = 1.0;
- m_shear = 0.0;
-
- m_pixmap = QPixmap(":res/affine/bg1.jpg");
- pts = new HoverPoints(this, HoverPoints::CircleShape);
- pts->setConnectionType(HoverPoints::LineConnection);
- pts->setEditable(false);
- pts->setPointSize(QSize(15, 15));
- pts->setShapeBrush(QBrush(QColor(151, 0, 0, alpha)));
- pts->setShapePen(QPen(QColor(255, 100, 50, alpha)));
- pts->setConnectionPen(QPen(QColor(151, 0, 0, 50)));
- pts->setBoundingRect(QRectF(0, 0, 500, 500));
- ctrlPoints << QPointF(250, 250) << QPointF(350, 250);
- pts->setPoints(ctrlPoints);
- connect(pts, &HoverPoints::pointsChanged,
- this,&XFormView::updateCtrlPoints);
+
+ m_hoverPoints = new HoverPoints(this, HoverPoints::CircleShape);
+ m_hoverPoints->setConnectionType(HoverPoints::LineConnection);
+ m_hoverPoints->setEditable(false);
+ m_hoverPoints->setPointSize(QSize(15, 15));
+ m_hoverPoints->setShapeBrush(QBrush(QColor(151, 0, 0, alpha)));
+ m_hoverPoints->setShapePen(QPen(QColor(255, 100, 50, alpha)));
+ m_hoverPoints->setConnectionPen(QPen(QColor(151, 0, 0, 50)));
+ m_hoverPoints->setBoundingRect(QRectF(0, 0, 500, 500));
+ m_hoverPoints->setPoints(m_controlPoints);
+ connect(m_hoverPoints, &HoverPoints::pointsChanged,
+ this, &XFormView::updateControlPoints);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
}
@@ -122,7 +117,7 @@ void XFormView::mousePressEvent(QMouseEvent *)
void XFormView::resizeEvent(QResizeEvent *e)
{
- pts->setBoundingRect(rect());
+ m_hoverPoints->setBoundingRect(rect());
ArthurFrame::resizeEvent(e);
}
@@ -145,24 +140,24 @@ void XFormView::paint(QPainter *p)
p->restore();
}
-void XFormView::updateCtrlPoints(const QPolygonF &points)
+void XFormView::updateControlPoints(const QPolygonF &points)
{
- QPointF trans = points.at(0) - ctrlPoints.at(0);
+ QPointF trans = points.at(0) - m_controlPoints.at(0);
if (qAbs(points.at(0).x() - points.at(1).x()) < 10
&& qAbs(points.at(0).y() - points.at(1).y()) < 10)
- pts->setPoints(ctrlPoints);
+ m_hoverPoints->setPoints(m_controlPoints);
if (!trans.isNull()) {
- ctrlPoints[0] = points.at(0);
- ctrlPoints[1] += trans;
- pts->setPoints(ctrlPoints);
+ m_controlPoints[0] = points.at(0);
+ m_controlPoints[1] += trans;
+ m_hoverPoints->setPoints(m_controlPoints);
}
- ctrlPoints = points;
+ m_controlPoints = points;
- QLineF line(ctrlPoints.at(0), ctrlPoints.at(1));
+ QLineF line(m_controlPoints.at(0), m_controlPoints.at(1));
m_rotation = 360 - QLineF(0, 0, 1, 0).angleTo(line);
if (trans.isNull())
- emit rotationChanged(int(m_rotation*10));
+ emit rotationChanged(int(m_rotation * 10));
}
void XFormView::setVectorType()
@@ -222,12 +217,12 @@ void XFormView::setRotation(qreal r)
qreal old_rot = m_rotation;
m_rotation = r;
- QPointF center(pts->points().at(0));
+ QPointF center(m_hoverPoints->points().at(0));
QTransform m;
m.translate(center.x(), center.y());
m.rotate(m_rotation - old_rot);
m.translate(-center.x(), -center.y());
- pts->setPoints(pts->points() * m);
+ m_hoverPoints->setPoints(m_hoverPoints->points() * m);
update();
}
@@ -235,12 +230,12 @@ void XFormView::setRotation(qreal r)
void XFormView::timerEvent(QTimerEvent *e)
{
if (e->timerId() == timer.timerId()) {
- QPointF center(pts->points().at(0));
+ QPointF center(m_hoverPoints->points().at(0));
QTransform m;
m.translate(center.x(), center.y());
m.rotate(0.2);
m.translate(-center.x(), -center.y());
- pts->setPoints(pts->points() * m);
+ m_hoverPoints->setPoints(m_hoverPoints->points() * m);
setUpdatesEnabled(false);
static qreal scale_inc = 0.003;
@@ -253,7 +248,7 @@ void XFormView::timerEvent(QTimerEvent *e)
shear_inc = -shear_inc;
setUpdatesEnabled(true);
- pts->firePointChange();
+ m_hoverPoints->firePointChange();
}
}
@@ -271,16 +266,15 @@ void XFormView::reset()
emit rotationChanged(0);
emit scaleChanged(1000);
emit shearChanged(0);
- ctrlPoints = QPolygonF();
- ctrlPoints << QPointF(250, 250) << QPointF(350, 250);
- pts->setPoints(ctrlPoints);
- pts->firePointChange();
+ m_controlPoints = {{250, 250}, {350, 250}};
+ m_hoverPoints->setPoints(m_controlPoints);
+ m_hoverPoints->firePointChange();
}
void XFormView::drawPixmapType(QPainter *painter)
{
QPointF center(m_pixmap.width() / qreal(2), m_pixmap.height() / qreal(2));
- painter->translate(ctrlPoints.at(0) - center);
+ painter->translate(m_controlPoints.at(0) - center);
painter->translate(center);
painter->rotate(m_rotation);
@@ -289,9 +283,11 @@ void XFormView::drawPixmapType(QPainter *painter)
painter->translate(-center);
painter->drawPixmap(QPointF(0, 0), m_pixmap);
- painter->setPen(QPen(QColor(255, 0, 0, alpha), 0.25, Qt::SolidLine, Qt::FlatCap, Qt::BevelJoin));
+ painter->setPen(QPen(QColor(255, 0, 0, alpha), 0.25,
+ Qt::SolidLine, Qt::FlatCap, Qt::BevelJoin));
painter->setBrush(Qt::NoBrush);
- painter->drawRect(QRectF(0, 0, m_pixmap.width(), m_pixmap.height()).adjusted(-2, -2, 2, 2));
+ painter->drawRect(QRectF(0, 0, m_pixmap.width(),
+ m_pixmap.height()).adjusted(-2, -2, 2, 2));
}
void XFormView::drawTextType(QPainter *painter)
@@ -306,7 +302,7 @@ void XFormView::drawTextType(QPainter *painter)
QFontMetrics fm(f);
QRectF br(fm.boundingRect(m_text));
QPointF center(br.center());
- painter->translate(ctrlPoints.at(0) - center);
+ painter->translate(m_controlPoints.at(0) - center);
painter->translate(center);
painter->rotate(m_rotation);
@@ -316,7 +312,8 @@ void XFormView::drawTextType(QPainter *painter)
painter->fillPath(path, Qt::black);
- painter->setPen(QPen(QColor(255, 0, 0, alpha), 0.25, Qt::SolidLine, Qt::FlatCap, Qt::BevelJoin));
+ painter->setPen(QPen(QColor(255, 0, 0, alpha), 0.25,
+ Qt::SolidLine, Qt::FlatCap, Qt::BevelJoin));
painter->setBrush(Qt::NoBrush);
painter->drawRect(br.adjusted(-1, -1, 1, 1));
}
@@ -324,7 +321,7 @@ void XFormView::drawTextType(QPainter *painter)
void XFormView::drawVectorType(QPainter *painter)
{
QPainterPath path;
- painter->translate(ctrlPoints.at(0) - QPointF(250,250));
+ painter->translate(m_controlPoints.at(0) - QPointF(250,250));
painter->scale(0.77, 0.77);
painter->translate(98.9154 + 30 , -217.691 - 20);
@@ -339,10 +336,10 @@ void XFormView::drawVectorType(QPainter *painter)
painter->setPen(Qt::NoPen);
path.moveTo(120, 470);
- path.lineTo(60+245, 470);
- path.lineTo(60+245, 470+350);
- path.lineTo(60, 470+350);
- path.lineTo(60, 470+80);
+ path.lineTo(60 + 245, 470);
+ path.lineTo(60 + 245, 470 + 350);
+ path.lineTo(60, 470 + 350);
+ path.lineTo(60, 470 + 80);
painter->setBrush(Qt::white);
painter->drawPath(path);
diff --git a/examples/widgets/painting/affine/xform.h b/examples/widgets/painting/affine/xform.h
index 1dce3b26da..0c28435057 100644
--- a/examples/widgets/painting/affine/xform.h
+++ b/examples/widgets/painting/affine/xform.h
@@ -88,7 +88,7 @@ public:
void mousePressEvent(QMouseEvent *e) override;
void resizeEvent(QResizeEvent *e) override;
- HoverPoints *hoverPoints() { return pts; }
+ HoverPoints *hoverPoints() { return m_hoverPoints; }
bool animation() const { return timer.isActive(); }
qreal shear() const { return m_shear; }
@@ -104,7 +104,7 @@ public:
public slots:
void setAnimation(bool animate);
- void updateCtrlPoints(const QPolygonF &);
+ void updateControlPoints(const QPolygonF &);
void changeRotation(int rotation);
void changeScale(int scale);
void changeShear(int shear);
@@ -130,12 +130,12 @@ protected:
#endif
private:
- QPolygonF ctrlPoints;
- HoverPoints *pts;
- qreal m_rotation;
- qreal m_scale;
- qreal m_shear;
- XFormType m_type;
+ QPolygonF m_controlPoints{{250, 250}, {350, 250}};
+ HoverPoints *m_hoverPoints;
+ qreal m_rotation = 0;
+ qreal m_scale = 1;
+ qreal m_shear = 0;
+ XFormType m_type = VectorType;
QPixmap m_pixmap;
QString m_text;
QBasicTimer timer;
diff --git a/examples/widgets/painting/deform/pathdeform.cpp b/examples/widgets/painting/deform/pathdeform.cpp
index acf0191260..998b6a53a1 100644
--- a/examples/widgets/painting/deform/pathdeform.cpp
+++ b/examples/widgets/painting/deform/pathdeform.cpp
@@ -481,7 +481,7 @@ void PathDeformRenderer::timerEvent(QTimerEvent *e)
void PathDeformRenderer::mousePressEvent(QMouseEvent *e)
{
- if (m_show_doc) {
+ if (m_showDoc) {
setDescriptionEnabled(false);
return;
}
diff --git a/examples/widgets/painting/shared/arthurwidgets.cpp b/examples/widgets/painting/shared/arthurwidgets.cpp
index 667246b79a..61e73c4a60 100644
--- a/examples/widgets/painting/shared/arthurwidgets.cpp
+++ b/examples/widgets/painting/shared/arthurwidgets.cpp
@@ -70,28 +70,15 @@
extern QPixmap cached(const QString &img);
ArthurFrame::ArthurFrame(QWidget *parent)
- : QWidget(parent)
- , m_prefer_image(false)
+ : QWidget(parent),
+ m_tile(QPixmap(128, 128))
{
-#if QT_CONFIG(opengl)
- m_glWindow = nullptr;
- m_glWidget = nullptr;
- m_use_opengl = false;
-#endif
- m_document = nullptr;
- m_show_doc = false;
-
- m_tile = QPixmap(128, 128);
m_tile.fill(Qt::white);
QPainter pt(&m_tile);
QColor color(230, 230, 230);
pt.fillRect(0, 0, 64, 64, color);
pt.fillRect(64, 64, 64, 64, color);
pt.end();
-
-// QPalette pal = palette();
-// pal.setBrush(backgroundRole(), m_tile);
-// setPalette(pal);
}
@@ -209,7 +196,7 @@ void ArthurFrame::paintEvent(QPaintEvent *e)
painter.restore();
painter.save();
- if (m_show_doc)
+ if (m_showDoc)
paintDescription(&painter);
painter.restore();
@@ -244,9 +231,9 @@ void ArthurFrame::resizeEvent(QResizeEvent *e)
void ArthurFrame::setDescriptionEnabled(bool enabled)
{
- if (m_show_doc != enabled) {
- m_show_doc = enabled;
- emit descriptionEnabledChanged(m_show_doc);
+ if (m_showDoc != enabled) {
+ m_showDoc = enabled;
+ emit descriptionEnabledChanged(m_showDoc);
update();
}
}
@@ -276,9 +263,8 @@ void ArthurFrame::paintDescription(QPainter *painter)
int pageWidth = qMax(width() - 100, 100);
int pageHeight = qMax(height() - 100, 100);
- if (pageWidth != m_document->pageSize().width()) {
+ if (pageWidth != m_document->pageSize().width())
m_document->setPageSize(QSize(pageWidth, pageHeight));
- }
QRect textRect(width() / 2 - pageWidth / 2,
height() / 2 - pageHeight / 2,
@@ -340,7 +326,7 @@ void ArthurFrame::showSource()
if (!f.open(QFile::ReadOnly))
contents = tr("Could not open file: '%1'").arg(m_sourceFileName);
else
- contents = f.readAll();
+ contents = QString::fromUtf8(f.readAll());
}
contents.replace(QLatin1Char('&'), QStringLiteral("&amp;"));
diff --git a/examples/widgets/painting/shared/arthurwidgets.h b/examples/widgets/painting/shared/arthurwidgets.h
index 73e1310c0e..69fee57a27 100644
--- a/examples/widgets/painting/shared/arthurwidgets.h
+++ b/examples/widgets/painting/shared/arthurwidgets.h
@@ -69,7 +69,6 @@ public:
ArthurFrame(QWidget *parent);
virtual void paint(QPainter *) {}
-
void paintDescription(QPainter *p);
void loadDescription(const QString &filename);
@@ -77,13 +76,13 @@ public:
void loadSourceFile(const QString &fileName);
- bool preferImage() const { return m_prefer_image; }
+ bool preferImage() const { return m_preferImage; }
#if QT_CONFIG(opengl)
QOpenGLWindow *glWindow() const { return m_glWindow; }
#endif
public slots:
- void setPreferImage(bool pi) { m_prefer_image = pi; }
+ void setPreferImage(bool pi) { m_preferImage = pi; }
void setDescriptionEnabled(bool enabled);
void showSource();
@@ -101,18 +100,17 @@ protected:
#if QT_CONFIG(opengl)
virtual void createGlWindow();
- QOpenGLWindow *m_glWindow;
- QWidget *m_glWidget;
- bool m_use_opengl;
+ QOpenGLWindow *m_glWindow = nullptr;
+ QWidget *m_glWidget = nullptr;
+ bool m_use_opengl = false;
#endif
QPixmap m_tile;
- bool m_show_doc;
- bool m_prefer_image;
- QTextDocument *m_document;
+ bool m_showDoc = false;
+ bool m_preferImage = false;
+ QTextDocument *m_document = nullptr;;
QString m_sourceFileName;
-
};
#endif
diff --git a/examples/widgets/painting/shared/hoverpoints.cpp b/examples/widgets/painting/shared/hoverpoints.cpp
index 417d593d04..ea59694f92 100644
--- a/examples/widgets/painting/shared/hoverpoints.cpp
+++ b/examples/widgets/painting/shared/hoverpoints.cpp
@@ -57,31 +57,18 @@
#include <QtOpenGL/QOpenGLWindow>
#endif
-#define printf
-
HoverPoints::HoverPoints(QWidget *widget, PointShape shape)
- : QObject(widget)
+ : QObject(widget),
+ m_widget(widget),
+ m_shape(shape)
{
- m_widget = widget;
widget->installEventFilter(this);
widget->setAttribute(Qt::WA_AcceptTouchEvents);
- m_connectionType = CurveConnection;
- m_sortType = NoSort;
- m_shape = shape;
- m_pointPen = QPen(QColor(255, 255, 255, 191), 1);
- m_connectionPen = QPen(QColor(255, 255, 255, 127), 2);
- m_pointBrush = QBrush(QColor(191, 191, 191, 127));
- m_pointSize = QSize(11, 11);
- m_currentIndex = -1;
- m_editable = true;
- m_enabled = true;
-
connect(this, &HoverPoints::pointsChanged,
m_widget, QOverload<>::of(&QWidget::update));
}
-
void HoverPoints::setEnabled(bool enabled)
{
if (m_enabled != enabled) {
@@ -90,191 +77,197 @@ void HoverPoints::setEnabled(bool enabled)
}
}
-
bool HoverPoints::eventFilter(QObject *object, QEvent *event)
{
- if (object == m_widget && m_enabled) {
- switch (event->type()) {
+ if (object != m_widget || !m_enabled)
+ return false;
- case QEvent::MouseButtonPress:
- {
- if (!m_fingerPointMapping.isEmpty())
- return true;
- QMouseEvent *me = (QMouseEvent *) event;
-
- QPointF clickPos = me->position().toPoint();
- int index = -1;
- for (int i=0; i<m_points.size(); ++i) {
- QPainterPath path;
- if (m_shape == CircleShape)
- path.addEllipse(pointBoundingRect(i));
- else
- path.addRect(pointBoundingRect(i));
-
- if (path.contains(clickPos)) {
- index = i;
- break;
- }
+ switch (event->type()) {
+ case QEvent::MouseButtonPress:
+ {
+ if (!m_fingerPointMapping.isEmpty())
+ return true;
+ auto *me = static_cast<const QMouseEvent *>(event);
+ QPointF clickPos = me->position().toPoint();
+ qsizetype index = -1;
+ for (qsizetype i = 0; i < m_points.size(); ++i) {
+ QPainterPath path;
+ const QRectF rect = pointBoundingRect(m_points.at(i));
+ if (m_shape == CircleShape)
+ path.addEllipse(rect);
+ else
+ path.addRect(rect);
+
+ if (path.contains(clickPos)) {
+ index = i;
+ break;
}
+ }
- if (me->button() == Qt::LeftButton) {
- if (index == -1) {
- if (!m_editable)
- return false;
- int pos = 0;
- // Insert sort for x or y
- if (m_sortType == XSort) {
- for (int i=0; i<m_points.size(); ++i)
- if (m_points.at(i).x() > clickPos.x()) {
- pos = i;
- break;
- }
- } else if (m_sortType == YSort) {
- for (int i=0; i<m_points.size(); ++i)
- if (m_points.at(i).y() > clickPos.y()) {
- pos = i;
- break;
- }
+ if (me->button() == Qt::LeftButton) {
+ if (index == -1) {
+ if (!m_editable)
+ return false;
+ qsizetype pos = 0;
+ // Insert sort for x or y
+ switch (m_sortType) {
+ case XSort:
+ for (qsizetype i = 0; i < m_points.size(); ++i) {
+ if (m_points.at(i).x() > clickPos.x()) {
+ pos = i;
+ break;
+ }
}
-
- m_points.insert(pos, clickPos);
- m_locks.insert(pos, 0);
- m_currentIndex = pos;
- firePointChange();
- } else {
- m_currentIndex = index;
- }
- return true;
-
- } else if (me->button() == Qt::RightButton) {
- if (index >= 0 && m_editable) {
- if (m_locks[index] == 0) {
- m_locks.remove(index);
- m_points.remove(index);
+ break;
+ case YSort:
+ for (qsizetype i = 0; i < m_points.size(); ++i) {
+ if (m_points.at(i).y() > clickPos.y()) {
+ pos = i;
+ break;
+ }
}
- firePointChange();
- return true;
+ break;
+ default:
+ break;
}
+
+ m_points.insert(pos, clickPos);
+ m_locks.insert(pos, 0);
+ m_currentIndex = pos;
+ firePointChange();
+ } else {
+ m_currentIndex = index;
}
+ return true;
+ } else if (me->button() == Qt::RightButton) {
+ if (index >= 0 && m_editable) {
+ if (m_locks[index] == 0) {
+ m_locks.remove(index);
+ m_points.remove(index);
+ }
+ firePointChange();
+ return true;
+ }
}
+ }
+ break;
+
+ case QEvent::MouseButtonRelease:
+ if (!m_fingerPointMapping.isEmpty())
+ return true;
+ m_currentIndex = -1;
break;
- case QEvent::MouseButtonRelease:
- if (!m_fingerPointMapping.isEmpty())
- return true;
- m_currentIndex = -1;
- break;
+ case QEvent::MouseMove:
+ if (!m_fingerPointMapping.isEmpty())
+ return true;
+ if (m_currentIndex >= 0) {
+ auto *me = static_cast<const QMouseEvent *>(event);
+ movePoint(m_currentIndex, me->position().toPoint());
+ }
+ break;
- case QEvent::MouseMove:
- if (!m_fingerPointMapping.isEmpty())
- return true;
- if (m_currentIndex >= 0)
- movePoint(m_currentIndex, ((QMouseEvent *)event)->position().toPoint());
- break;
- case QEvent::TouchBegin:
- case QEvent::TouchUpdate:
+ case QEvent::TouchBegin:
+ case QEvent::TouchUpdate:
+ {
+ auto *touchEvent = static_cast<const QTouchEvent*>(event);
+ const auto points = touchEvent->points();
+ const qreal pointSize = qMax(m_pointSize.width(), m_pointSize.height());
+ for (const auto &point : points) {
+ const int id = point.id();
+ switch (point.state()) {
+ case QEventPoint::Pressed:
{
- const QTouchEvent *const touchEvent = static_cast<const QTouchEvent*>(event);
- const auto points = touchEvent->points();
- const qreal pointSize = qMax(m_pointSize.width(), m_pointSize.height());
- for (const auto &point : points) {
- const int id = point.id();
- switch (point.state()) {
- case QEventPoint::Pressed:
- {
- // find the point, move it
- const auto mappedPoints = m_fingerPointMapping.values();
- QSet<int> activePoints = QSet<int>(mappedPoints.begin(), mappedPoints.end());
- int activePoint = -1;
- qreal distance = -1;
- const int pointsCount = m_points.size();
- const int activePointCount = activePoints.size();
- if (pointsCount == 2 && activePointCount == 1) { // only two points
- activePoint = activePoints.contains(0) ? 1 : 0;
- } else {
- for (int i=0; i<pointsCount; ++i) {
- if (activePoints.contains(i))
- continue;
-
- qreal d = QLineF(point.position(), m_points.at(i)).length();
- if ((distance < 0 && d < 12 * pointSize) || d < distance) {
- distance = d;
- activePoint = i;
- }
-
- }
- }
- if (activePoint != -1) {
- m_fingerPointMapping.insert(point.id(), activePoint);
- movePoint(activePoint, point.position());
- }
- }
- break;
- case QEventPoint::Released:
- {
- // move the point and release
- QHash<int,int>::iterator it = m_fingerPointMapping.find(id);
- movePoint(it.value(), point.position());
- m_fingerPointMapping.erase(it);
- }
- break;
- case QEventPoint::Updated:
- {
- // move the point
- const int pointIdx = m_fingerPointMapping.value(id, -1);
- if (pointIdx >= 0) // do we track this point?
- movePoint(pointIdx, point.position());
+ // find the point, move it
+ const auto mappedPoints = m_fingerPointMapping.values();
+ QSet<qsizetype> activePoints(mappedPoints.begin(), mappedPoints.end());
+ qsizetype activePoint = -1;
+ qreal distance = -1;
+ const qsizetype pointsCount = m_points.size();
+ const qsizetype activePointCount = activePoints.size();
+ if (pointsCount == 2 && activePointCount == 1) { // only two points
+ activePoint = activePoints.contains(0) ? 1 : 0;
+ } else {
+ for (qsizetype i = 0; i < pointsCount; ++i) {
+ if (activePoints.contains(i))
+ continue;
+
+ qreal d = QLineF(point.position(), m_points.at(i)).length();
+ if ((distance < 0 && d < 12 * pointSize) || d < distance) {
+ distance = d;
+ activePoint = i;
}
- break;
- default:
- break;
+
}
}
- if (m_fingerPointMapping.isEmpty()) {
- event->ignore();
- return false;
- } else {
- return true;
+ if (activePoint != -1) {
+ m_fingerPointMapping.insert(point.id(), activePoint);
+ movePoint(activePoint, point.position());
}
}
break;
- case QEvent::TouchEnd:
- if (m_fingerPointMapping.isEmpty()) {
- event->ignore();
- return false;
+ case QEventPoint::Released:
+ {
+ // move the point and release
+ const auto it = m_fingerPointMapping.find(id);
+ movePoint(it.value(), point.position());
+ m_fingerPointMapping.erase(it);
}
- return true;
break;
-
- case QEvent::Resize:
- {
- QResizeEvent *e = (QResizeEvent *) event;
- if (e->oldSize().width() == 0 || e->oldSize().height() == 0)
- break;
- qreal stretch_x = e->size().width() / qreal(e->oldSize().width());
- qreal stretch_y = e->size().height() / qreal(e->oldSize().height());
- for (int i=0; i<m_points.size(); ++i) {
- QPointF p = m_points[i];
- movePoint(i, QPointF(p.x() * stretch_x, p.y() * stretch_y), false);
+ case QEventPoint::Updated:
+ {
+ // move the point
+ const qsizetype pointIdx = m_fingerPointMapping.value(id, -1);
+ if (pointIdx >= 0) // do we track this point?
+ movePoint(pointIdx, point.position());
}
-
- firePointChange();
break;
+ default:
+ break;
+ }
}
-
- case QEvent::Paint:
- {
- QWidget *that_widget = m_widget;
- m_widget = nullptr;
- QCoreApplication::sendEvent(object, event);
- m_widget = that_widget;
- paintPoints();
- return true;
+ if (m_fingerPointMapping.isEmpty()) {
+ event->ignore();
+ return false;
+ }
+ return true;
+ }
+ case QEvent::TouchEnd:
+ if (m_fingerPointMapping.isEmpty()) {
+ event->ignore();
+ return false;
}
- default:
+ return true;
+
+ case QEvent::Resize:
+ {
+ auto *e = static_cast<const QResizeEvent *>(event);
+ if (e->oldSize().width() <= 0 || e->oldSize().height() <= 0)
break;
+ qreal stretch_x = e->size().width() / qreal(e->oldSize().width());
+ qreal stretch_y = e->size().height() / qreal(e->oldSize().height());
+ for (qsizetype i = 0; i < m_points.size(); ++i) {
+ QPointF p = m_points.at(i);
+ movePoint(i, QPointF(p.x() * stretch_x, p.y() * stretch_y), false);
}
+
+ firePointChange();
+ break;
+ }
+
+ case QEvent::Paint:
+ {
+ QWidget *that_widget = m_widget;
+ m_widget = nullptr;
+ QCoreApplication::sendEvent(object, event);
+ m_widget = that_widget;
+ paintPoints();
+ return true;
+ }
+
+ default:
+ break;
}
return false;
@@ -304,8 +297,8 @@ void HoverPoints::paintPoints()
if (m_connectionType == CurveConnection) {
QPainterPath path;
path.moveTo(m_points.at(0));
- for (int i=1; i<m_points.size(); ++i) {
- QPointF p1 = m_points.at(i-1);
+ for (qsizetype i = 1; i < m_points.size(); ++i) {
+ QPointF p1 = m_points.at(i - 1);
QPointF p2 = m_points.at(i);
qreal distance = p2.x() - p1.x();
@@ -322,8 +315,8 @@ void HoverPoints::paintPoints()
p.setPen(m_pointPen);
p.setBrush(m_pointBrush);
- for (int i=0; i<m_points.size(); ++i) {
- QRectF bounds = pointBoundingRect(i);
+ for (const auto &point : qAsConst(m_points)) {
+ QRectF bounds = pointBoundingRect(point);
if (m_shape == CircleShape)
p.drawEllipse(bounds);
else
@@ -354,32 +347,28 @@ void HoverPoint