diff options
Diffstat (limited to 'mkspecs')
24 files changed, 209 insertions, 49 deletions
diff --git a/mkspecs/android-clang/qmake.conf b/mkspecs/android-clang/qmake.conf index 31ee5d2637..5cc5a20f71 100644 --- a/mkspecs/android-clang/qmake.conf +++ b/mkspecs/android-clang/qmake.conf @@ -43,6 +43,9 @@ isEmpty(ALL_ANDROID_ABIS): ALL_ANDROID_ABIS = arm64-v8a armeabi-v7a x86_64 x86 CONFIG += $$ANDROID_PLATFORM +ANDROID_MIN_SDK_VERSION = $$replace(ANDROID_PLATFORM, "android-", "") +ANDROID_TARGET_SDK_VERSION = 28 + NDK_LLVM_PATH = $$NDK_ROOT/toolchains/llvm/prebuilt/$$NDK_HOST QMAKE_CC = $$NDK_LLVM_PATH/bin/clang QMAKE_CXX = $$NDK_LLVM_PATH/bin/clang++ diff --git a/mkspecs/common/clang.conf b/mkspecs/common/clang.conf index aead581478..2499c8b6d8 100644 --- a/mkspecs/common/clang.conf +++ b/mkspecs/common/clang.conf @@ -54,3 +54,7 @@ QMAKE_RANLIB_LTCG = true # No need to run, since llvm-ar has "s" QMAKE_CFLAGS_COVERAGE_TRACE_PC_GUARD = -fsanitize-coverage=trace-pc-guard QMAKE_CXXFLAGS_COVERAGE_TRACE_PC_GUARD = -fsanitize-coverage=trace-pc-guard QMAKE_LFLAGS_COVERAGE_TRACE_PC_GUARD = -fsanitize-coverage=trace-pc-guard + +QMAKE_CFLAGS_COVERAGE_SOURCE_BASED = -fprofile-instr-generate -fcoverage-mapping +QMAKE_CXXFLAGS_COVERAGE_SOURCE_BASED = -fprofile-instr-generate -fcoverage-mapping +QMAKE_LFLAGS_COVERAGE_SOURCE_BASED = -fprofile-instr-generate -fcoverage-mapping diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf index 4d82321cba..1f919d270a 100644 --- a/mkspecs/common/gcc-base.conf +++ b/mkspecs/common/gcc-base.conf @@ -93,6 +93,7 @@ QMAKE_CFLAGS_SSE4_1 += -msse4.1 QMAKE_CFLAGS_SSE4_2 += -msse4.2 QMAKE_CFLAGS_F16C += -mf16c QMAKE_CFLAGS_RDRND += -mrdrnd +QMAKE_CFLAGS_RDSEED += -mrdseed QMAKE_CFLAGS_AVX += -mavx QMAKE_CFLAGS_AVX2 += -mavx2 QMAKE_CFLAGS_AVX512F += -mavx512f @@ -104,8 +105,15 @@ QMAKE_CFLAGS_AVX512BW += -mavx512bw QMAKE_CFLAGS_AVX512VL += -mavx512vl QMAKE_CFLAGS_AVX512IFMA += -mavx512ifma QMAKE_CFLAGS_AVX512VBMI += -mavx512vbmi +QMAKE_CFLAGS_AVX512VNNI += -mavx512vnni +QMAKE_CFLAGS_AVX512IFMA += -mavx512ifma +QMAKE_CFLAGS_AVX512VBMI += -mavx512vbmi +QMAKE_CFLAGS_AVX512VBMI2 += -mavx512vbmi2 +QMAKE_CFLAGS_AVX512BITALG += -mavx512bitalg +QMAKE_CFLAGS_AVX512POPCNTDQ += -mavx512vpopcntd QMAKE_CFLAGS_AESNI += -maes QMAKE_CFLAGS_SHANI += -msha +QMAKE_CFLAGS_VAES += -mvaes QMAKE_CFLAGS_NEON += -mfpu=neon QMAKE_CFLAGS_MIPS_DSP += -mdsp QMAKE_CFLAGS_MIPS_DSPR2 += -mdspr2 diff --git a/mkspecs/common/icc-base-unix.conf b/mkspecs/common/icc-base-unix.conf index 54eda984b7..5b4b71ac0d 100644 --- a/mkspecs/common/icc-base-unix.conf +++ b/mkspecs/common/icc-base-unix.conf @@ -48,10 +48,18 @@ QMAKE_CFLAGS_AVX512PF += -march=knl QMAKE_CFLAGS_AVX512DQ += -march=skylake-avx512 QMAKE_CFLAGS_AVX512BW += -march=skylake-avx512 QMAKE_CFLAGS_AVX512VL += -march=skylake-avx512 +QMAKE_CFLAGS_AVX512VNNI += -march=cascadelake +QMAKE_CFLAGS_AVX512IFMA += -march=icelake-client # technically, cannonlake +QMAKE_CFLAGS_AVX512VBMI += -march=icelake-client # ditto +QMAKE_CFLAGS_AVX512VBMI2 += -march=icelake-client +QMAKE_CFLAGS_AVX512BITALG += -march=icelake-client +QMAKE_CFLAGS_AVX512POPCNTDQ += -march=icelake-client QMAKE_CFLAGS_AESNI += -maes QMAKE_CFLAGS_F16C += $$QMAKE_CFLAGS_AVX2 QMAKE_CFLAGS_RDRND += -mrdrnd +QMAKE_CFLAGS_RDSEED += -mrdseed QMAKE_CFLAGS_SHANI += -msha +QMAKE_CFLAGS_VAES += -mvaes QMAKE_CXX = icpc QMAKE_CXXFLAGS = $$QMAKE_CFLAGS diff --git a/mkspecs/common/msvc-based-version.conf b/mkspecs/common/msvc-based-version.conf index 38aecbaf59..b53e3b61aa 100644 --- a/mkspecs/common/msvc-based-version.conf +++ b/mkspecs/common/msvc-based-version.conf @@ -29,4 +29,9 @@ greaterThan(QMAKE_MSC_VER, 1910) { COMPAT_MKSPEC = } +greaterThan(QMAKE_MSC_VER, 1919) { + # Visual Studio 2019 (16.0) / Visual C++ 19.20 and up + MSVC_VER = 16.0 +} + !isEmpty(COMPAT_MKSPEC):!$$COMPAT_MKSPEC: CONFIG += $$COMPAT_MKSPEC diff --git a/mkspecs/common/msvc-version.conf b/mkspecs/common/msvc-version.conf index af33132077..adb45582c7 100644 --- a/mkspecs/common/msvc-version.conf +++ b/mkspecs/common/msvc-version.conf @@ -50,6 +50,7 @@ greaterThan(QMAKE_MSC_VER, 1799) { QMAKE_CFLAGS_F16C = -arch:AVX QMAKE_CFLAGS_RDRND = + QMAKE_CFLAGS_RDSEED = equals(QMAKE_MSC_VER, 1800) { QMAKE_CFLAGS_RELEASE += -Zc:strictStrings diff --git a/mkspecs/common/qcc-base-qnx.conf b/mkspecs/common/qcc-base-qnx.conf index 21ce269006..4725371c29 100644 --- a/mkspecs/common/qcc-base-qnx.conf +++ b/mkspecs/common/qcc-base-qnx.conf @@ -4,6 +4,8 @@ include(qcc-base.conf) +isEmpty(QMAKE_WAYLAND_SCANNER): QMAKE_WAYLAND_SCANNER = $$(QNX_HOST)/usr/bin/wayland-scanner + QMAKE_PLATFORM = qnx $$QMAKE_PLATFORM QMAKE_LFLAGS_SHLIB += -shared diff --git a/mkspecs/common/sanitize.conf b/mkspecs/common/sanitize.conf index 5e09406cfb..8417fa4c2f 100644 --- a/mkspecs/common/sanitize.conf +++ b/mkspecs/common/sanitize.conf @@ -17,6 +17,10 @@ QMAKE_SANITIZE_MEMORY_CFLAGS = -fsanitize=memory QMAKE_SANITIZE_MEMORY_CXXFLAGS = -fsanitize=memory QMAKE_SANITIZE_MEMORY_LFLAGS = -fsanitize=memory +QMAKE_SANITIZE_FUZZERNL_CFLAGS = -fsanitize=fuzzer-no-link +QMAKE_SANITIZE_FUZZERNL_CXXFLAGS = -fsanitize=fuzzer-no-link +QMAKE_SANITIZE_FUZZERNL_LFLAGS = -fsanitize=fuzzer-no-link + QMAKE_SANITIZE_UNDEFINED_CFLAGS = -fsanitize=undefined QMAKE_SANITIZE_UNDEFINED_CXXFLAGS = -fsanitize=undefined QMAKE_SANITIZE_UNDEFINED_LFLAGS = -fsanitize=undefined diff --git a/mkspecs/features/android/android_deployment_settings.prf b/mkspecs/features/android/android_deployment_settings.prf index f375a687a9..7cda5096b1 100644 --- a/mkspecs/features/android/android_deployment_settings.prf +++ b/mkspecs/features/android/android_deployment_settings.prf @@ -53,6 +53,12 @@ contains(TEMPLATE, ".*app"):!build_pass:!android-embedded { !isEmpty(ANDROID_VERSION_CODE): \ FILE_CONTENT += " \"android-version-code\": $$emitString($$ANDROID_VERSION_CODE)," + !isEmpty(ANDROID_MIN_SDK_VERSION): \ + FILE_CONTENT += " \"android-min-sdk-version\": $$emitString($$ANDROID_MIN_SDK_VERSION)," + + !isEmpty(ANDROID_TARGET_SDK_VERSION): \ + FILE_CONTENT += " \"android-target-sdk-version\": $$emitString($$ANDROID_TARGET_SDK_VERSION)," + !isEmpty(ANDROID_EXTRA_LIBS): \ FILE_CONTENT += " \"android-extra-libs\": $$emitString($$join(ANDROID_EXTRA_LIBS, ","))," diff --git a/mkspecs/features/coverage.prf b/mkspecs/features/coverage.prf index b8b37e1b80..5ae746f0b7 100644 --- a/mkspecs/features/coverage.prf +++ b/mkspecs/features/coverage.prf @@ -5,3 +5,9 @@ coverage_trace_pc_guard { QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_COVERAGE_TRACE_PC_GUARD QMAKE_LFLAGS += $$QMAKE_LFLAGS_COVERAGE_TRACE_PC_GUARD } + +coverage_source_based { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_COVERAGE_SOURCE_BASED + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_COVERAGE_SOURCE_BASED + QMAKE_LFLAGS += $$QMAKE_LFLAGS_COVERAGE_SOURCE_BASED +} diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf index 0e71fd0015..24ed125f12 100644 --- a/mkspecs/features/create_cmake.prf +++ b/mkspecs/features/create_cmake.prf @@ -176,7 +176,7 @@ contains(CONFIG, plugin) { list_plugin_extends = for (p, PLUGIN_EXTENDS) { m = $$cmakeModuleName($$p) - list_plugin_extends += Qt5::$$m + list_plugin_extends += Qt::$$m } CMAKE_PLUGIN_EXTENDS = $$join(list_plugin_extends, ";") } @@ -290,6 +290,10 @@ CMAKE_INTERFACE_MODULE_DEPS = $$join(aux_mod_deps, ";") CMAKE_INTERFACE_QT5_MODULE_DEPS = $$join(aux_lib_deps, ";") CMAKE_MODULE_PLUGIN_TYPES = $$join(QT.$${MODULE}.plugin_types, ";") +# Interface libraries have to have all properties starting with "INTERFACE_". +CMAKE_FEATURE_PROPERTY_PREFIX = "" +equals(TEMPLATE, aux): CMAKE_FEATURE_PROPERTY_PREFIX = "INTERFACE_" + mac { !isEmpty(CMAKE_STATIC_TYPE) { CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}_debug.a diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in index 1099a761ce..59b34453f9 100644 --- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in @@ -1,4 +1,3 @@ - if (CMAKE_VERSION VERSION_LESS 3.1.0) message(FATAL_ERROR \"Qt 5 $${CMAKE_MODULE_NAME} module requires at least CMake version 3.1.0\") endif() @@ -415,6 +414,15 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) add_library(Qt5::$${CMAKE_MODULE_NAME} SHARED IMPORTED) !!ENDIF !!ENDIF + + # Add a versionless target, for compatibility with Qt6. + if(NOT \"${QT_NO_CREATE_VERSIONLESS_TARGETS}\" AND NOT TARGET Qt::$${CMAKE_MODULE_NAME}) + add_library(Qt::$${CMAKE_MODULE_NAME} INTERFACE IMPORTED) + set_target_properties(Qt::$${CMAKE_MODULE_NAME} PROPERTIES + INTERFACE_LINK_LIBRARIES \"Qt5::$${CMAKE_MODULE_NAME}\" + ) + endif() + !!IF !equals(TEMPLATE, aux) !!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK) set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY FRAMEWORK 1) @@ -429,6 +437,20 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY INTERFACE_QT_ENABLED_FEATURES $$join(QT.$${MODULE}.enabled_features, ";")) set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY INTERFACE_QT_DISABLED_FEATURES $$join(QT.$${MODULE}.disabled_features, ";")) + # Qt 6 forward compatible properties. + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} + PROPERTY $${CMAKE_FEATURE_PROPERTY_PREFIX}QT_ENABLED_PUBLIC_FEATURES + $$join(QT.$${MODULE}.enabled_features, ";")) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} + PROPERTY $${CMAKE_FEATURE_PROPERTY_PREFIX}QT_DISABLED_PUBLIC_FEATURES + $$join(QT.$${MODULE}.disabled_features, ";")) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} + PROPERTY $${CMAKE_FEATURE_PROPERTY_PREFIX}QT_ENABLED_PRIVATE_FEATURES + $$join(QT.$${MODULE}_private.enabled_features, ";")) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} + PROPERTY $${CMAKE_FEATURE_PROPERTY_PREFIX}QT_DISABLED_PRIVATE_FEATURES + $$join(QT.$${MODULE}_private.disabled_features, ";")) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY INTERFACE_QT_PLUGIN_TYPES \"$${CMAKE_MODULE_PLUGIN_TYPES}\") set(_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIRS_EXIST TRUE) @@ -452,6 +474,14 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) set_property(TARGET Qt5::$${CMAKE_MODULE_NAME}Private PROPERTY INTERFACE_LINK_LIBRARIES Qt5::$${CMAKE_MODULE_NAME} ${_Qt5$${CMAKE_MODULE_NAME}_PRIVATEDEPS} ) + + # Add a versionless target, for compatibility with Qt6. + if(NOT \"${QT_NO_CREATE_VERSIONLESS_TARGETS}\" AND NOT TARGET Qt::$${CMAKE_MODULE_NAME}Private) + add_library(Qt::$${CMAKE_MODULE_NAME}Private INTERFACE IMPORTED) + set_target_properties(Qt::$${CMAKE_MODULE_NAME}Private PROPERTIES + INTERFACE_LINK_LIBRARIES \"Qt5::$${CMAKE_MODULE_NAME}Private\" + ) + endif() endif() !!IF !equals(TEMPLATE, aux) @@ -535,8 +565,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) !!ENDIF // TEMPLATE != aux !!IF isEmpty(CMAKE_INTERNAL_MODULE) - - file(GLOB pluginTargets \"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}_*Plugin.cmake\") + # In Qt 5.15 the glob pattern was relaxed to also catch plugins not literally named "Plugin". + # Define QT5_STRICT_PLUGIN_GLOB or ModuleName_STRICT_PLUGIN_GLOB to revert to old behavior. + if (QT5_STRICT_PLUGIN_GLOB OR Qt5$${CMAKE_MODULE_NAME}_STRICT_PLUGIN_GLOB) + file(GLOB pluginTargets \"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}_*Plugin.cmake\") + else() + file(GLOB pluginTargets \"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}_*.cmake\") + endif() macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION IsDebugAndRelease) @@ -597,10 +632,8 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) include(${pluginTarget}) endforeach() endif() - !!ENDIF // isEmpty(CMAKE_INTERNAL_MODULE) - !!IF !isEmpty(CMAKE_MODULE_EXTRAS) include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}ConfigExtras.cmake\") !!ENDIF @@ -609,6 +642,5 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}Macros.cmake\") !!ENDIF -_qt5_$${CMAKE_MODULE_NAME}_check_file_exists(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}ConfigVersion.cmake\") - + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}ConfigVersion.cmake\") endif() diff --git a/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in b/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in index 7b70cfed09..b550a52c60 100644 --- a/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in +++ b/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in @@ -75,19 +75,30 @@ endif() set(_user_specified_genex \"$<IN_LIST:Qt5::$$CMAKE_PLUGIN_NAME,${_manual_plugins_genex};${_plugin_type_genex}>\" ) +set(_user_specified_genex_versionless + \"$<IN_LIST:Qt::$$CMAKE_PLUGIN_NAME,${_manual_plugins_genex};${_plugin_type_genex}>\" +) string(CONCAT _plugin_genex \"$<$<OR:\" - # Add this plugin if it\'s in the list of manual plugins or plugins for the type + # Add this plugin if it\'s in the list of manually specified plugins or in the list of + # explicitly included plugin types. \"${_user_specified_genex},\" - # Add this plugin if the list of plugins for the type is empty, the PLUGIN_EXTENDS - # is either empty or equal to the module name, and the user hasn\'t blacklisted it + \"${_user_specified_genex_versionless},\" + # Add this plugin if all of the following are true: + # 1) the list of explicitly included plugin types is empty + # 2) the QT_PLUGIN_EXTENDS property for the plugin is empty or equal to the current + # module name + # 3) the user hasn\'t explicitly excluded the plugin. \"$<AND:\" \"$<STREQUAL:${_plugin_type_genex},>,\" \"$<OR:\" - \"$<STREQUAL:$<TARGET_PROPERTY:Qt5::$${CMAKE_PLUGIN_NAME},QT_PLUGIN_EXTENDS>,Qt5::$${CMAKE_MODULE_NAME}>,\" + # FIXME: The value of CMAKE_MODULE_NAME seems to be wrong (e.g for Svg plugin + # it should be Qt::Svg instead of Qt::Gui). + \"$<STREQUAL:$<TARGET_PROPERTY:Qt5::$${CMAKE_PLUGIN_NAME},QT_PLUGIN_EXTENDS>,Qt::$${CMAKE_MODULE_NAME}>,\" \"$<STREQUAL:$<TARGET_PROPERTY:Qt5::$${CMAKE_PLUGIN_NAME},QT_PLUGIN_EXTENDS>,>\" \">,\" - \"$<NOT:$<IN_LIST:Qt5::$${CMAKE_PLUGIN_NAME},${_no_plugins_genex}>>\" + \"$<NOT:$<IN_LIST:Qt5::$${CMAKE_PLUGIN_NAME},${_no_plugins_genex}>>,\" + \"$<NOT:$<IN_LIST:Qt::$${CMAKE_PLUGIN_NAME},${_no_plugins_genex}>>\" \">\" \">:Qt5::$$CMAKE_PLUGIN_NAME>\" ) @@ -100,3 +111,4 @@ set_property(TARGET Qt5::$${CMAKE_PLUGIN_NAME} APPEND PROPERTY INTERFACE_LINK_LI !!ENDIF set_property(TARGET Qt5::$${CMAKE_PLUGIN_NAME} PROPERTY QT_PLUGIN_TYPE \"$$CMAKE_PLUGIN_TYPE\") set_property(TARGET Qt5::$${CMAKE_PLUGIN_NAME} PROPERTY QT_PLUGIN_EXTENDS \"$$CMAKE_PLUGIN_EXTENDS\") +set_property(TARGET Qt5::$${CMAKE_PLUGIN_NAME} PROPERTY QT_PLUGIN_CLASS_NAME \"$$CMAKE_PLUGIN_NAME\") diff --git a/mkspecs/features/metatypes.prf b/mkspecs/features/metatypes.prf new file mode 100644 index 0000000000..555269fa68 --- /dev/null +++ b/mkspecs/features/metatypes.prf @@ -0,0 +1,52 @@ +qtPrepareTool(MOC_COLLECT_JSON, moc) + +QMAKE_MOC_OPTIONS += --output-json + +MOC_JSON_H_BASE = $${QMAKE_H_MOD_MOC} +MOC_JSON_CPP_BASE = $${QMAKE_CPP_MOD_MOC} + +!isEmpty(MOC_DIR) { + MOC_JSON_H_BASE = $$MOC_DIR/$${MOC_JSON_H_BASE} + MOC_JSON_CPP_BASE = $$MOC_DIR/$${MOC_JSON_CPP_BASE} +} + +moc_json_header.input = HEADERS +moc_json_header.output = $${MOC_JSON_H_BASE}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)}.json +moc_json_header.CONFIG = no_link moc_verify +moc_json_header.depends = $${MOC_JSON_H_BASE}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} +moc_json_header.commands = $$escape_expand(\\n) # force creation of rule +moc_json_header.variable_out = MOC_JSON_FILES + +moc_json_source.input = SOURCES +moc_json_source.output = $${MOC_JSON_CPP_BASE}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC}.json +moc_json_source.CONFIG = no_link moc_verify +moc_json_source.depends = $${MOC_JSON_CPP_BASE}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC} +moc_json_source.commands = $$escape_expand(\\n) # force creation of rule +moc_json_source.variable_out = MOC_JSON_FILES + +MOC_COLLECT_JSON_OUTPUT = $$lower($$basename(TARGET))_metatypes.json + +moc_collect_json.CONFIG += no_link combine target_predeps +moc_collect_json.commands = $$MOC_COLLECT_JSON --collect-json -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} +moc_collect_json.input = MOC_JSON_FILES +moc_collect_json.output = $$MOC_COLLECT_JSON_OUTPUT +moc_collect_json.name = Collect moc JSON output into central file + +install_metatypes { + do_install_metatypes.CONFIG += no_check_exist + do_install_metatypes.path = $$[QT_INSTALL_LIBS]/metatypes + do_install_metatypes.files = $$OUT_PWD/$$MOC_COLLECT_JSON_OUTPUT + prefix_build { + load(qt_build_paths) + !isEmpty(MODULE_BASE_OUTDIR) { + metatypes_to_builddir.files = $$do_install_metatypes.files + metatypes_to_builddir.path = $$MODULE_BASE_OUTDIR/lib/metatypes + COPIES += metatypes_to_builddir + } + INSTALLS += do_install_metatypes + } else { + COPIES += do_install_metatypes + } +} + +QMAKE_EXTRA_COMPILERS += moc_collect_json moc_json_header moc_json_source diff --git a/mkspecs/features/qml_plugin.prf b/mkspecs/features/qml_plugin.prf index f1c5658b04..1b67435787 100644 --- a/mkspecs/features/qml_plugin.prf +++ b/mkspecs/features/qml_plugin.prf @@ -68,7 +68,10 @@ load(qt_common) # To regenerate run 'make qmltypes' which will update the plugins.qmltypes file in the source # directory. Then review and commit the changes made to plugins.qmltypes. # -!cross_compile { +# Due to the above mentioned drawbacks, there is a better mechanism available now: qmltyperegistrar +# can generate the .qmltypes files at compile time. It will do this when CONFIG += qmltypes is set. +# Therefore, don't try to generate the qmltypes files via qmlplugindump in that case. +!cross_compile:!qmltypes { qmlplugindump = qmlplugindump importpath.name = QML2_IMPORT_PATH importpath.value = diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf index 3a71376029..fc46bcb74b 100644 --- a/mkspecs/features/qt.prf +++ b/mkspecs/features/qt.prf @@ -279,7 +279,15 @@ contains(all_qt_module_deps, qml): \ for (QMLPATH, QMLPATHS): \ IMPORTPATHS += -importPath $$system_quote($$QMLPATH) - #message(run $$QMLIMPORTSCANNER $$_PRO_FILE_PWD_ $$IMPORTPATHS) + # add qrc files, too + !isEmpty(RESOURCES) { + IMPORTPATHS += -qrcFiles + for (RESOURCE, RESOURCES): \ + IMPORTPATHS += $$absolute_path($$system_quote($$RESOURCE), $$_PRO_FILE_PWD_) + } + + + # message(run $$QMLIMPORTSCANNER $$_PRO_FILE_PWD_ $$IMPORTPATHS) JSON = $$system($$QMLIMPORTSCANNER $$system_quote($$_PRO_FILE_PWD_) $$IMPORTPATHS) parseJson(JSON, IMPORTS)| error("Failed to parse qmlimportscanner output.") diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf index c24f2c6062..ac24b03b6b 100644 --- a/mkspecs/features/qt_common.prf +++ b/mkspecs/features/qt_common.prf @@ -20,12 +20,11 @@ qtConfig(c++1z): CONFIG += c++1z qtConfig(c++2a): CONFIG += c++2a qtConfig(c99): CONFIG += c99 qtConfig(c11): CONFIG += c11 +qtConfig(separate_debug_info): CONFIG += separate_debug_info qtConfig(stack-protector-strong): CONFIG += stack_protector_strong contains(TEMPLATE, .*lib) { # module and plugins - if(!host_build|!cross_compile):qtConfig(reduce_exports): CONFIG += hide_symbols unix:qtConfig(reduce_relocations): CONFIG += bsymbolic_functions - qtConfig(separate_debug_info): CONFIG += separate_debug_info !isEmpty(_QMAKE_SUPER_CACHE_): \ rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]* @@ -58,6 +57,9 @@ contains(TEMPLATE, .*lib) { QMAKE_PRL_INSTALL_REPLACE += qtlibdir_replace } } +contains(TEMPLATE, .*lib)|darwin { + if(!host_build|!cross_compile):qtConfig(reduce_exports): CONFIG += hide_symbols +} # The remainder of this file must not apply to host tools/libraries, # as the host compiler's version and capabilities are not checked. diff --git a/mkspecs/features/sanitizer.prf b/mkspecs/features/sanitizer.prf index c7d72aec80..12ca1a17bd 100644 --- a/mkspecs/features/sanitizer.prf +++ b/mkspecs/features/sanitizer.prf @@ -42,6 +42,12 @@ sanitize_thread { QMAKE_LFLAGS += $$QMAKE_SANITIZE_THREAD_LFLAGS } +sanitize_fuzzer_no_link { + QMAKE_CFLAGS += $$QMAKE_SANITIZE_FUZZERNL_CFLAGS + QMAKE_CXXFLAGS += $$QMAKE_SANITIZE_FUZZERNL_CXXFLAGS + QMAKE_LFLAGS += $$QMAKE_SANITIZE_FUZZERNL_LFLAGS +} + sanitize_undefined { QMAKE_CFLAGS += $$QMAKE_SANITIZE_UNDEFINED_CFLAGS QMAKE_CXXFLAGS += $$QMAKE_SANITIZE_UNDEFINED_CXXFLAGS diff --git a/mkspecs/features/simd.prf b/mkspecs/features/simd.prf index a0b40fcf11..8e041297d2 100644 --- a/mkspecs/features/simd.prf +++ b/mkspecs/features/simd.prf @@ -124,6 +124,7 @@ addSimdCompiler(sse4_1) addSimdCompiler(sse4_2) addSimdCompiler(aesni) addSimdCompiler(shani) +addSimdCompiler(vaes) addSimdCompiler(avx) addSimdCompiler(avx2) addSimdCompiler(avx512f) @@ -133,10 +134,15 @@ addSimdCompiler(avx512pf) addSimdCompiler(avx512dq) addSimdCompiler(avx512bw) addSimdCompiler(avx512vl) +addSimdCompiler(avx512vnni) addSimdCompiler(avx512ifma) addSimdCompiler(avx512vbmi) +addSimdCompiler(avx512vbmi2) +addSimdCompiler(avx512bitalg) +addSimdCompiler(avx512vpopcntd) addSimdCompiler(f16c) addSimdCompiler(rdrnd) +addSimdCompiler(rdseed) addSimdCompiler(neon) addSimdCompiler(mips_dsp) addSimdCompiler(mips_dspr2) diff --git a/mkspecs/features/wasm/default_pre.prf b/mkspecs/features/wasm/default_pre.prf index 2760889929..d092149b32 100644 --- a/mkspecs/features/wasm/default_pre.prf +++ b/mkspecs/features/wasm/default_pre.prf @@ -1,2 +1,2 @@ -load(default_pre) load(emcc_ver) +load(default_pre) diff --git a/mkspecs/features/wasm/emcc_ver.prf b/mkspecs/features/wasm/emcc_ver.prf index 411f53e95d..3605651494 100644 --- a/mkspecs/features/wasm/emcc_ver.prf +++ b/mkspecs/features/wasm/emcc_ver.prf @@ -1,5 +1,5 @@ defineReplace(qtEmccRecommendedVersion) { - return (1.38.27) + return (1.39.8) } defineReplace(qtSystemEmccVersion) { diff --git a/mkspecs/wasm-emscripten/qmake.conf b/mkspecs/wasm-emscripten/qmake.conf index beb08d643c..a1b11e93aa 100644 --- a/mkspecs/wasm-emscripten/qmake.conf +++ b/mkspecs/wasm-emscripten/qmake.conf @@ -32,12 +32,13 @@ EMTERP_FLAGS = \ EMCC_COMMON_LFLAGS += \ -s WASM=1 \ -s FULL_ES2=1 \ + -s FULL_ES3=1 \ -s USE_WEBGL2=1 \ -s NO_EXIT_RUNTIME=0 \ -s ERROR_ON_UNDEFINED_SYMBOLS=1 \ -s EXTRA_EXPORTED_RUNTIME_METHODS=[\"UTF16ToString\",\"stringToUTF16\"] \ - -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=0 \ - --bind + --bind \ + -s FETCH=1 # The -s arguments can also be used with release builds, # but are here in debug for clarity. @@ -51,34 +52,8 @@ EMCC_COMMON_LFLAGS_DEBUG = \ # -s SOCKET_DEBUG \ #print out socket,network data transfer -s GL_DEBUG=1 -# Set up debug/optimization flags -QMAKE_CXXFLAGS_RELEASE -= -O2 -QMAKE_CFLAGS_RELEASE -= -O2 -equals(WASM_OBJECT_FILES, 1) { - QMAKE_LFLAGS_DEBUG += -g - - QMAKE_CXXFLAGS_RELEASE += -O3 - QMAKE_CFLAGS_RELEASE += -O3 - QMAKE_LFLAGS_RELEASE += -O3 - QMAKE_CFLAGS_OPTIMIZE += -O3 - QMAKE_CFLAGS_OPTIMIZE_FULL += -Oz -} else { - # Practical debugging setup: - # "-g4" preserves function names for stack traces - # "-Os" produces reasonably sized binaries - QMAKE_CFLAGS_DEBUG -= -g - QMAKE_CXXFLAGS_DEBUG -= -g - QMAKE_CFLAGS_DEBUG += -Os -g4 - QMAKE_CXXFLAGS_DEBUG += -Os -g4 - QMAKE_LFLAGS_DEBUG += -Os -g4 - - QMAKE_CXXFLAGS_RELEASE += -O3 - QMAKE_CFLAGS_RELEASE += -O3 - QMAKE_LFLAGS_RELEASE += -O3 - QMAKE_CFLAGS_OPTIMIZE += -O3 - QMAKE_CFLAGS_OPTIMIZE_FULL += -Oz -} - +QMAKE_LFLAGS_DEBUG += -g +QMAKE_LFLAGS_RELEASE += -O2 QMAKE_COMPILER += emscripten diff --git a/mkspecs/win32-clang-msvc/qmake.conf b/mkspecs/win32-clang-msvc/qmake.conf index 238e401b84..be7cdaa396 100644 --- a/mkspecs/win32-clang-msvc/qmake.conf +++ b/mkspecs/win32-clang-msvc/qmake.conf @@ -15,6 +15,7 @@ QMAKE_CFLAGS_AVX = -mavx QMAKE_CFLAGS_AVX2 = -mavx2 QMAKE_CFLAGS_F16C = -mf16c QMAKE_CFLAGS_RDRND = -mrdrnd +QMAKE_CFLAGS_RDSEED = -mrdseed QMAKE_CFLAGS_AVX512F = -mavx512f QMAKE_CFLAGS_AVX512ER = -mavx512er QMAKE_CFLAGS_AVX512CD = -mavx512cd diff --git a/mkspecs/win32-icc/qmake.conf b/mkspecs/win32-icc/qmake.conf index 857959dc98..65d1aa1c7e 100644 --- a/mkspecs/win32-icc/qmake.conf +++ b/mkspecs/win32-icc/qmake.conf @@ -38,9 +38,21 @@ QMAKE_CFLAGS_AVX512PF += -QxMIC-AVX512 QMAKE_CFLAGS_AVX512DQ += -QxCORE-AVX512 QMAKE_CFLAGS_AVX512BW += -QxCORE-AVX512 QMAKE_CFLAGS_AVX512VL += -QxCORE-AVX512 +QMAKE_CFLAGS_AVX512VNNI += -QxCASCADELAKE +QMAKE_CFLAGS_AVX512IFMA += -QxICELAKE-CLIENT # technically, cannonlake +QMAKE_CFLAGS_AVX512VBMI += -QxICELAKE-CLIENT # ditto +QMAKE_CFLAGS_AVX512VBMI2 += QxICELAKE-CLIENT +QMAKE_CFLAGS_AVX512BITALG += QxICELAKE-CLIENT +QMAKE_CFLAGS_AVX512POPCNTDQ += QxICELAKE-CLIENT QMAKE_CFLAGS_F16C = $$QMAKE_CFLAGS_AVX2 +QMAKE_CFLAGS_RDRND = $$QMAKE_CFLAGS_AVX2 +# ICC on Windows lacks the mrdseed compiler option that sets the RDSEED macro +QMAKE_CFLAGS_RDSEED = -D__RDSEED__=1 +QMAKE_CFLAGS_ARCH_HASWELL = $$QMAKE_CFLAGS_AVX2 + QMAKE_CFLAGS_AESNI = -QxSSE2 QMAKE_CFLAGS_SHANI = -QxSSE4.2 +QMAKE_CFLAGS_VAES = -QxCORE-AVX512 QMAKE_CXX = $$QMAKE_CC QMAKE_CXXFLAGS += -Qprec -Zm200 -Zc:forScope |