diff options
Diffstat (limited to 'mkspecs')
-rw-r--r-- | mkspecs/common/android-base-head.conf | 7 | ||||
-rw-r--r-- | mkspecs/common/android-base-tail.conf | 2 | ||||
-rw-r--r-- | mkspecs/common/clang.conf | 2 | ||||
-rw-r--r-- | mkspecs/common/g++-base.conf | 2 | ||||
-rw-r--r-- | mkspecs/common/gcc-base.conf | 5 | ||||
-rw-r--r-- | mkspecs/common/macx.conf | 2 | ||||
-rw-r--r-- | mkspecs/common/qcc-base-qnx.conf | 10 | ||||
-rw-r--r-- | mkspecs/features/default_post.prf | 15 | ||||
-rw-r--r-- | mkspecs/features/gc_binaries.prf | 3 | ||||
-rw-r--r-- | mkspecs/features/qml_module.prf | 14 | ||||
-rw-r--r-- | mkspecs/features/qt.prf | 11 | ||||
-rw-r--r-- | mkspecs/features/qt_app.prf | 3 | ||||
-rw-r--r-- | mkspecs/features/qt_common.prf | 30 | ||||
-rw-r--r-- | mkspecs/features/qt_configure.prf | 65 | ||||
-rw-r--r-- | mkspecs/features/qt_module.prf | 7 | ||||
-rw-r--r-- | mkspecs/features/qt_module_headers.prf | 7 | ||||
-rw-r--r-- | mkspecs/features/resources.prf | 34 | ||||
-rw-r--r-- | mkspecs/features/testcase.prf | 32 | ||||
-rw-r--r-- | mkspecs/features/uikit/gc_binaries.prf | 2 | ||||
-rw-r--r-- | mkspecs/linux-icc/qmake.conf | 2 | ||||
-rw-r--r-- | mkspecs/macx-clang/Info.plist.disable_highdpi | 8 | ||||
-rw-r--r-- | mkspecs/macx-icc/qmake.conf | 2 |
22 files changed, 207 insertions, 58 deletions
diff --git a/mkspecs/common/android-base-head.conf b/mkspecs/common/android-base-head.conf index 9be6111915..c7c27298b9 100644 --- a/mkspecs/common/android-base-head.conf +++ b/mkspecs/common/android-base-head.conf @@ -75,3 +75,10 @@ equals(ANDROID_TARGET_ARCH, x86_64)|equals(ANDROID_TARGET_ARCH, mips64): \ QMAKE_ANDROID_PLATFORM_LIBDIR = $${QMAKE_ANDROID_PLATFORM_LIBDIR}64 CROSS_COMPILE = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX- + +QMAKE_PCH_OUTPUT_EXT = .gch + +QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE = -include ${QMAKE_PCH_OUTPUT_BASE} +QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE diff --git a/mkspecs/common/android-base-tail.conf b/mkspecs/common/android-base-tail.conf index 7c3ae9566a..e239fa01c5 100644 --- a/mkspecs/common/android-base-tail.conf +++ b/mkspecs/common/android-base-tail.conf @@ -30,6 +30,8 @@ QMAKE_CFLAGS_THREAD = -D_REENTRANT QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden QMAKE_CFLAGS_NEON = -mfpu=neon +QMAKE_CFLAGS_GNUC99 = -std=gnu99 +QMAKE_CFLAGS_GNUC11 = -std=gnu11 QMAKE_CXXFLAGS_CXX11 = -std=c++11 QMAKE_CXXFLAGS_CXX14 = -std=c++14 QMAKE_CXXFLAGS_CXX1Z = -std=c++1z diff --git a/mkspecs/common/clang.conf b/mkspecs/common/clang.conf index e003b947aa..6122a37213 100644 --- a/mkspecs/common/clang.conf +++ b/mkspecs/common/clang.conf @@ -21,6 +21,8 @@ QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_ QMAKE_CFLAGS_USE_PRECOMPILE = -Xclang -include-pch -Xclang ${QMAKE_PCH_OUTPUT} QMAKE_CFLAGS_LTCG = -flto QMAKE_CFLAGS_DISABLE_LTCG = -fno-lto +QMAKE_CFLAGS_GNUC99 = -std=gnu99 +QMAKE_CFLAGS_GNUC11 = -std=gnu11 QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE diff --git a/mkspecs/common/g++-base.conf b/mkspecs/common/g++-base.conf index c42c46b0ec..fa0f0c391d 100644 --- a/mkspecs/common/g++-base.conf +++ b/mkspecs/common/g++-base.conf @@ -27,6 +27,8 @@ QMAKE_CFLAGS_USE_PRECOMPILE = -include ${QMAKE_PCH_OUTPUT_BASE} QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE +QMAKE_CFLAGS_GNUC99 = -std=gnu99 +QMAKE_CFLAGS_GNUC11 = -std=gnu11 QMAKE_CXXFLAGS_CXX11 = -std=c++11 QMAKE_CXXFLAGS_CXX14 = -std=c++1y QMAKE_CXXFLAGS_CXX1Z = -std=c++1z diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf index 234f71d495..e51b173276 100644 --- a/mkspecs/common/gcc-base.conf +++ b/mkspecs/common/gcc-base.conf @@ -50,7 +50,7 @@ QMAKE_CFLAGS_ISYSTEM = -isystem QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden QMAKE_CFLAGS_EXCEPTIONS_OFF += -fno-exceptions -QMAKE_CFLAGS_SPLIT_SECTIONS += -ffunction-sections +QMAKE_CFLAGS_SPLIT_SECTIONS += -ffunction-sections -fdata-sections QMAKE_CFLAGS_LTCG = -flto -fno-fat-lto-objects QMAKE_CFLAGS_LTCG_FATOBJECTS = -ffat-lto-objects QMAKE_CFLAGS_DISABLE_LTCG = -fno-lto @@ -81,6 +81,9 @@ QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO += QMAKE_LFLAGS_EXCEPTIONS_OFF += QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG -fuse-linker-plugin +QMAKE_CFLAGS_C99 = -std=c99 +QMAKE_CFLAGS_C11 = -std=c11 + QMAKE_CFLAGS_SSE2 += -msse2 QMAKE_CFLAGS_SSE3 += -msse3 QMAKE_CFLAGS_SSSE3 += -mssse3 diff --git a/mkspecs/common/macx.conf b/mkspecs/common/macx.conf index 4be0eb3c39..7017d60e71 100644 --- a/mkspecs/common/macx.conf +++ b/mkspecs/common/macx.conf @@ -11,4 +11,6 @@ device.dir_affix = $${device.sdk} device.CONFIG = $${device.sdk} device.deployment_identifier = $${device.sdk} +QMAKE_LIBS_VULKAN = + include(mac.conf) diff --git a/mkspecs/common/qcc-base-qnx.conf b/mkspecs/common/qcc-base-qnx.conf index 148645b4e9..21ce269006 100644 --- a/mkspecs/common/qcc-base-qnx.conf +++ b/mkspecs/common/qcc-base-qnx.conf @@ -42,9 +42,13 @@ QMAKE_INCDIR_POST = $${QNX_DIR}/usr/include $${QNX_DIR}/usr/include/freety QMAKE_LIBDIR_POST = $${QNX_DIR}/$${QNX_CPUDIR}/lib $${QNX_DIR}/$${QNX_CPUDIR}/usr/lib QMAKE_RPATHLINKDIR_POST += $${QNX_DIR}/$${QNX_CPUDIR}/lib $${QNX_DIR}/$${QNX_CPUDIR}/usr/lib -QMAKE_CXXFLAGS_CXX11 = -Wc,-std=gnu++11 -QMAKE_CXXFLAGS_CXX14 = -Wc,-std=gnu++1y -QMAKE_CXXFLAGS_CXX1Z = -Wc,-std=gnu++1z +QMAKE_CXXFLAGS_CXX11 = +QMAKE_CXXFLAGS_CXX14 = +QMAKE_CXXFLAGS_CXX1Z = + +QMAKE_CXXFLAGS_GNUCXX11 = -Wc,-std=gnu++11 +QMAKE_CXXFLAGS_GNUCXX14 = -Wc,-std=gnu++1y +QMAKE_CXXFLAGS_GNUCXX1Z = -Wc,-std=gnu++1z QMAKE_LINK_C = $$QMAKE_CC QMAKE_LINK_C_SHLIB = $$QMAKE_CC diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf index 9eba5bcf00..ad4a5f6365 100644 --- a/mkspecs/features/default_post.prf +++ b/mkspecs/features/default_post.prf @@ -134,7 +134,7 @@ c++11|c++14|c++1z { isEmpty(QMAKE_CXXFLAGS_GNU$$cxxstd) { strict_c++: QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STRICTCXX } else { - !strict_c++: cxxstd = GNU$$cxxstd + !strict_c++|isEmpty(QMAKE_CXXFLAGS_$$cxxstd): cxxstd = GNU$$cxxstd } QMAKE_CXXFLAGS += $$eval(QMAKE_CXXFLAGS_$$cxxstd) @@ -143,6 +143,19 @@ c++11|c++14|c++1z { unset(cxxstd) } +c99|c11 { + c11: cstd = C11 + else: cstd = C99 + + !isEmpty(QMAKE_CFLAGS_GNU$$cstd) { + !strict_c|isEmpty(QMAKE_CFLAGS_$$cstd): cstd = GNU$$cstd + } + + QMAKE_CFLAGS += $$eval(QMAKE_CFLAGS_$$cstd) + + unset(cstd) +} + utf8_source { QMAKE_CFLAGS += $$QMAKE_CFLAGS_UTF8_SOURCE QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_UTF8_SOURCE diff --git a/mkspecs/features/gc_binaries.prf b/mkspecs/features/gc_binaries.prf new file mode 100644 index 0000000000..111d5d95ef --- /dev/null +++ b/mkspecs/features/gc_binaries.prf @@ -0,0 +1,3 @@ +QMAKE_CFLAGS += $$QMAKE_CFLAGS_SPLIT_SECTIONS +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_SPLIT_SECTIONS +QMAKE_LFLAGS += $$QMAKE_LFLAGS_GCSECTIONS diff --git a/mkspecs/features/qml_module.prf b/mkspecs/features/qml_module.prf index 4db0040dc5..65212b2abf 100644 --- a/mkspecs/features/qml_module.prf +++ b/mkspecs/features/qml_module.prf @@ -31,13 +31,17 @@ qml1_target { instbase = $$[QT_INSTALL_QML] } -!qml1_target:static: CONFIG += builtin_resources +!qml1_target:static: \ + CONFIG += builtin_resources +else: \ + CONFIG += install_qml_files builtin_resources { URITARGET = $$replace(URI, "\\.", "_") - # Ensure the QML files are included in the resources. In static builds, - # the QML engine reads also the qmldir file from the resources. - $${URITARGET}.files = $$qmldir_file $$fq_qml_files + # In static builds, the QML engine reads also the qmldir file from the resources. + static: $${URITARGET}.files = $$qmldir_file + # Ensure the QML files are included in the resources. + $${URITARGET}.files += $$fq_qml_files # qt-project.org/imports is the path used for locating imports inside the resources $${URITARGET}.prefix = /qt-project.org/imports/$$TARGETPATH RESOURCES += $${URITARGET} @@ -47,7 +51,7 @@ builtin_resources { qmldir.base = $$_PRO_FILE_PWD_ # Tools need qmldir and plugins.qmltypes always installed on the file system qmldir.files = $$qmldir_file $$fq_aux_qml_files -!builtin_resources: qmldir.files += $$fq_qml_files +install_qml_files: qmldir.files += $$fq_qml_files qmldir.path = $$instbase/$$TARGETPATH INSTALLS += qmldir diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf index b57afcf72d..90e318e2a4 100644 --- a/mkspecs/features/qt.prf +++ b/mkspecs/features/qt.prf @@ -230,7 +230,16 @@ for(ever) { QMAKE_FRAMEWORKPATH *= $$MODULE_FRAMEWORKS !isEmpty(MODULE_MODULE) { contains(MODULE_CONFIG, lib_bundle) { - LIBS$$var_sfx += -framework $$MODULE_MODULE + framework = $$MODULE_MODULE + qtConfig(debug_and_release):!macx-xcode { + platform_target_suffix = $$qtPlatformTargetSuffix() + !isEmpty(platform_target_suffix): \ + # The -framework linker argument supports a name[,suffix] version, + # where if the suffix is specified the framework is first searched + # for the library with the suffix and then without. + framework = $$framework,$$platform_target_suffix + } + LIBS$$var_sfx += -framework $$framework } else { !isEmpty(MODULE_LIBS_ADD): \ LIBS$$var_sfx += -L$$MODULE_LIBS_ADD diff --git a/mkspecs/features/qt_app.prf b/mkspecs/features/qt_app.prf index 883f8ca215..8354f30eea 100644 --- a/mkspecs/features/qt_app.prf +++ b/mkspecs/features/qt_app.prf @@ -20,9 +20,6 @@ isEmpty(QMAKE_TARGET_DESCRIPTION): \ isEmpty(QMAKE_INFO_PLIST): CONFIG -= app_bundle -# This decreases the binary size for tools if statically linked -QMAKE_LFLAGS += $$QMAKE_LFLAGS_GCSECTIONS - host_build: QT -= gui # no host tool will ever use gui host_build:force_bootstrap { !build_pass:qtConfig(release_tools): CONFIG += release diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf index f4ae5bde80..638fbf38be 100644 --- a/mkspecs/features/qt_common.prf +++ b/mkspecs/features/qt_common.prf @@ -17,6 +17,8 @@ DEFINES *= QT_NO_NARROWING_CONVERSIONS_IN_CONNECT qtConfig(c++11): CONFIG += c++11 strict_c++ qtConfig(c++14): CONFIG += c++14 qtConfig(c++1z): CONFIG += c++1z +qtConfig(c99): CONFIG += c99 +qtConfig(c11): CONFIG += c11 qtConfig(stack-protector-strong): CONFIG += stack_protector_strong contains(TEMPLATE, .*lib) { # module and plugins @@ -56,17 +58,27 @@ host_build:cross_compile: return() # -Wvla: use of variable-length arrays (an extension to C++) clang { clang_ver = $${QT_CLANG_MAJOR_VERSION}.$${QT_CLANG_MINOR_VERSION} + apple_ver = $${QT_APPLE_CLANG_MAJOR_VERSION}.$${QT_APPLE_CLANG_MINOR_VERSION} versionAtLeast(clang_ver, 3.5): \ QMAKE_CXXFLAGS_WARN_ON += -Wdate-time - # Clang/LLVM 5.0 and Xcode 9.0 introduced unguarded availability warnings. - # The same construct has been a hard error in Swift from the very beginning. - apple_ver = $${QT_APPLE_CLANG_MAJOR_VERSION}.$${QT_APPLE_CLANG_MINOR_VERSION} - darwin:if(versionAtLeast(clang_ver, 5.0)|versionAtLeast(apple_ver, 9.0)): \ + versionAtLeast(clang_ver, 3.6)|versionAtLeast(apple_ver, 6.3): \ + QMAKE_CXXFLAGS_WARN_ON += -Winconsistent-missing-override + + darwin { QMAKE_CXXFLAGS_WARN_ON += \ - -Werror=unguarded-availability \ - -Werror=unguarded-availability-new \ - -Werror=unsupported-availability-guard + -Wobjc-interface-ivars \ + -Wobjc-method-access \ + -Wobjc-multiple-method-names + + # Clang/LLVM 5.0 and Xcode 9.0 introduced unguarded availability warnings. + # The same construct has been a hard error in Swift from the very beginning. + versionAtLeast(clang_ver, 5.0)|versionAtLeast(apple_ver, 9.0): \ + QMAKE_CXXFLAGS_WARN_ON += \ + -Werror=unguarded-availability \ + -Werror=unguarded-availability-new \ + -Werror=unsupported-availability-guard + } } else: gcc:!intel_icc { QMAKE_CXXFLAGS_WARN_ON += -Wvla # GCC 5 introduced -Wdate-time @@ -82,11 +94,11 @@ warnings_are_errors:warning_clean { # This setting is compiler-dependent anyway because it depends on the version of the # compiler. clang { - # Apple clang 4.0-4.2,5.0-5.1,6.0-6.4,7.0-7.3 + # Apple clang 4.0-4.2,5.0-5.1,6.0-6.4,7.0-7.3,8.0-8.3,9.0-9.2 # Regular clang 3.x-5.0 apple_ver = $${QT_APPLE_CLANG_MAJOR_VERSION}.$${QT_APPLE_CLANG_MINOR_VERSION} reg_ver = $${QT_CLANG_MAJOR_VERSION}.$${QT_CLANG_MINOR_VERSION} - contains(apple_ver, "4\\.[012]|5\\.[01]|6\\.[01234]|7\\.[0123]")|contains(reg_ver, "[34]\\.|5\\.0") { + contains(apple_ver, "4\\.[012]|5\\.[01]|6\\.[01234]|7\\.[0123]|8\\.[0123]|9\\.[012]")|contains(reg_ver, "[34]\\.|5\\.0") { QMAKE_CXXFLAGS_WARN_ON += -Werror -Wno-error=\\$${LITERAL_HASH}warnings -Wno-error=deprecated-declarations $$WERROR } } else:intel_icc:linux { diff --git a/mkspecs/features/qt_configure.prf b/mkspecs/features/qt_configure.prf index 6e29eaa2b7..ba30dad2cc 100644 --- a/mkspecs/features/qt_configure.prf +++ b/mkspecs/features/qt_configure.prf @@ -624,21 +624,35 @@ defineTest(qtConfTest_getPkgConfigVariable) { } defineReplace(qtConfLibraryArgs) { - qmake_args = - libs = $$eval($${1}.libs) - !isEmpty(libs): \ - qmake_args += $$system_quote(LIBS += $$libs) + NAME = $$upper($$eval($${1}.library)) + qmake_args = "QMAKE_LIBS_$${NAME} = $$eval($${1}.libs)" for (b, $${1}.builds._KEYS_): \ - qmake_args += $$system_quote(LIBS_$$upper($$b) += $$eval($${1}.builds.$${b})) + qmake_args += "QMAKE_LIBS_$${NAME}_$$upper($$b) = $$eval($${1}.builds.$${b})" includedir = $$eval($${1}.includedir) !isEmpty(includedir): \ - qmake_args += $$system_quote(INCLUDEPATH *= $$includedir) + qmake_args += "QMAKE_INCDIR_$${NAME} = $$includedir" cflags = $$eval($${1}.cflags) !isEmpty(cflags): \ - qmake_args += $$system_quote(QMAKE_CFLAGS += $$cflags) $$system_quote(QMAKE_CXXFLAGS += $$cflags) + qmake_args += "QMAKE_CFLAGS += $$cflags" "QMAKE_CXXFLAGS += $$cflags" return($$qmake_args) } +defineReplace(qtConfAllLibraryArgs) { + isEmpty(1): return() + dep_uses = + dep_args = + for (use, 1) { + use_cfg = $$section(use, :, 0, 0) + use_lib = $$section(use, :, 1, 1) + dep_uses += $$use_lib + !isEmpty(use_cfg) { + lpfx = $${use_cfg}.libraries.$$use_lib + dep_args += $$qtConfLibraryArgs($${lpfx}.sources.$$eval($${lpfx}.source)) + } + } + return("QMAKE_USE += $$dep_uses" $$dep_args) +} + defineTest(qtConfExportLibrary) { lpfx = $${currentConfig}.libraries.$$1 alias = $$eval($${lpfx}.alias) @@ -708,7 +722,7 @@ defineTest(qtConfHandleLibrary) { export($${lpfx}.result) return() } - use_args = $$eval($${lpfx}.literal_args) + resolved_uses = $$eval($${lpfx}.resolved_uses) qtConfLoadResult($${lpfx}, $$1, "library") { $$eval($${lpfx}.result): \ @@ -741,9 +755,12 @@ defineTest(qtConfHandleLibrary) { next() } + $${lpfx}.source = $$s + export($${lpfx}.source) + # if the library defines a test, use it to verify the source. !isEmpty($${lpfx}.test)|!isEmpty($${lpfx}.test._KEYS_) { - $${lpfx}.literal_args = $$qtConfLibraryArgs($$spfx) $$use_args + $${lpfx}.resolved_uses = $$currentConfig:$$1 $$resolved_uses $${lpfx}.host = $$eval($${spfx}.host) !qtConfTest_compile($$lpfx) { qtLog(" => source failed verification.") @@ -759,9 +776,6 @@ defineTest(qtConfHandleLibrary) { for (b, $${spfx}.builds._KEYS_): \ $${lpfx}.cache += sources.$${s}.builds.$${b} - $${lpfx}.source = $$s - export($${lpfx}.source) - # immediately output the library as well. qtConfExportLibrary($$1) @@ -855,21 +869,30 @@ defineTest(qtConfTestPrepare_compile) { !defined(QMAKE_LIBS_$$nu, var): \ error("Test $$1 tries to use undeclared library '$$u'") # using an external library by exported name. - $${1}.literal_args += $$system_quote(QMAKE_USE += $$u) + $${1}.resolved_uses += :$$u } else { lpfx = $${libConfig}.libraries.$${u} - isEmpty($${lpfx}.source): \ + !equals($${lpfx}.result, true): \ return(false) - $${1}.literal_args += $$qtConfLibraryArgs($${lpfx}.sources.$$eval($${lpfx}.source)) + $${1}.resolved_uses += $$libConfig:$$u } } - export($${1}.literal_args) + export($${1}.resolved_uses) return(true) } defineTest(qtConfPrepareCompileTestSource) { test_dir = $$2 + test_lang = $$eval($${1}.lang) + isEmpty(test_lang): test_lang = "c++" + + equals(test_lang, "c++"): suffix = "cpp" + else: equals(test_lang, "c"): suffix = "c" + else: equals(test_lang, "objc"): suffix = "m" + else: equals(test_lang, "objc++"): suffix = "mm" + else: error("Unknown language '$$test_lang' in compile test $$1") + # Create source code contents = "/* Generated by configure */" # Custom code before includes @@ -893,10 +916,10 @@ defineTest(qtConfPrepareCompileTestSource) { " /* END TEST */" \ " return 0;" \ "}" - write_file($$test_dir/main.cpp, contents)|error() + write_file($$test_dir/main.$$suffix, contents)|error() # Create stub .pro file - contents = "SOURCES = main.cpp" + contents = "SOURCES = main.$$suffix" # Custom project code for (ent, $$qtConfScalarOrList($${1}.qmake)): \ contents += $$ent @@ -982,8 +1005,12 @@ defineTest(qtConfTest_compile) { mkpath($$test_out_dir)|error() write_file($$test_base_out_dir/.qmake.cache)|error() + $${1}.literal_args += $$qtConfAllLibraryArgs($$eval($${1}.resolved_uses)) + # add possible command line args - qmake_args += $$qtConfPrepareArgs($$eval($${1}.args)) $$eval($${1}.literal_args) + qmake_args += \ + $$qtConfPrepareArgs($$eval($${1}.args)) \ + $$qtSystemQuote($$eval($${1}.literal_args)) qtRunLoggedCommand("$$test_cmd_base $$qmake_args $$system_quote($$test_dir)") { qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE"): \ diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index f8729de947..d4b660b77a 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -13,8 +13,9 @@ isEmpty(MODULE):MODULE = $$section($$list($$basename(_PRO_FILE_)), ., 0, 0) isEmpty(VERSION): VERSION = $$MODULE_VERSION isEmpty(VERSION): error("Module does not define version.") -exists($$OUT_PWD/qt$${MODULE}-config.pri) { - include($$OUT_PWD/qt$${MODULE}-config.pri) +isEmpty(MODULE_CFG_FILE): MODULE_CFG_FILE = qt$${MODULE}-config +exists($$OUT_PWD/$${MODULE_CFG_FILE}.pri) { + include($$OUT_PWD/$${MODULE_CFG_FILE}.pri) CONFIG += generated_privates } @@ -28,8 +29,6 @@ host_build|staticlib: CONFIG += static host_build { QT -= gui # no host module will ever use gui - QMAKE_CFLAGS += $$QMAKE_CFLAGS_SPLIT_SECTIONS - QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_SPLIT_SECTIONS force_bootstrap { !build_pass:qtConfig(release_tools): CONFIG += release contains(QT, core(-private)?|xml) { diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf index e45ac94966..bbded56b42 100644 --- a/mkspecs/features/qt_module_headers.prf +++ b/mkspecs/features/qt_module_headers.prf @@ -121,11 +121,12 @@ alien_syncqt: return() MODULE_INC_OUTDIR = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME -exists($$OUT_PWD/qt$${MODULE}-config.h) { +isEmpty(MODULE_CFG_FILE): MODULE_CFG_FILE = qt$${MODULE}-config +exists($$OUT_PWD/$${MODULE_CFG_FILE}.h) { fwd_rel = $$relative_path($$OUT_PWD, $$MODULE_INC_OUTDIR) SYNCQT.INJECTIONS += \ - $$fwd_rel/qt$${MODULE}-config.h:qt$${MODULE}-config.h \ - $$fwd_rel/qt$${MODULE}-config_p.h:$$MODULE_VERSION/$$MODULE_INCNAME/private/qt$${MODULE}-config_p.h + $$fwd_rel/$${MODULE_CFG_FILE}.h:$${MODULE_CFG_FILE}.h \ + $$fwd_rel/$${MODULE_CFG_FILE}_p.h:$$MODULE_VERSION/$$MODULE_INCNAME/private/$${MODULE_CFG_FILE}_p.h } for (injection, SYNCQT.INJECTIONS) { diff --git a/mkspecs/features/resources.prf b/mkspecs/features/resources.prf index ff45446219..9fed6387c8 100644 --- a/mkspecs/features/resources.prf +++ b/mkspecs/features/resources.prf @@ -72,6 +72,40 @@ for(resource, RESOURCES) { RESOURCES += $$resource_file } +!isEmpty(RESOURCES):contains(TEMPLATE, .*lib):plugin:static { + pluginName = $$lower($$replace(_PRO_FILE_, .*/([^/.]+)\\.[^/.]+, \\1)) + + resource_init_function = $${pluginName}_plugin_resource_init + DEFINES += "QT_PLUGIN_RESOURCE_INIT_FUNCTION=$$resource_init_function" + + RESOURCE_INIT_CPP = $$OUT_PWD/$${pluginName}_plugin_resources.cpp + + GENERATED_SOURCES += $$RESOURCE_INIT_CPP + QMAKE_DISTCLEAN += $$RESOURCE_INIT_CPP + + !build_pass { + RESOURCE_INIT_CONT = \ + "// This file is autogenerated by qmake. It contains a function that" \ + "// references all resources the plugin includes and the function is" \ + "// referenced by Qt_(MOC_)EXPORT_PLUGIN to ensure the inclusion in" \ + "// the statically linked plugin." \ + "$${LITERAL_HASH}include <QtCore/qglobal.h>" \ + "void $${resource_init_function}() " \ + "{" \ + + for (resource, RESOURCES) { + resource_name = $$section($$list($$basename(resource)), ., 0, 0) + resource_name = $$replace(resource_name, [^a-zA-Z0-9_], _) + RESOURCE_INIT_CONT += " Q_INIT_RESOURCE($$resource_name);" + } + + RESOURCE_INIT_CONT += \ + "}" + + write_file($$RESOURCE_INIT_CPP, RESOURCE_INIT_CONT)|error() + } +} + rcc.input = RESOURCES rcc.name = RCC ${QMAKE_FILE_IN} rcc.depend_command = $$QMAKE_RCC_DEP -list $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} diff --git a/mkspecs/features/testcase.prf b/mkspecs/features/testcase.prf index 8d51c9d028..9179470986 100644 --- a/mkspecs/features/testcase.prf +++ b/mkspecs/features/testcase.prf @@ -9,6 +9,18 @@ testcase_exceptions: CONFIG += exceptions # Set in qt_build_config.prf testcase_no_bundle: CONFIG -= app_bundle +# Allow testcases to mark themselves as not supporting high-DPI +testcase_lowdpi { + macos { + !isEmpty(QMAKE_INFO_PLIST): \ + error("QMAKE_INFO_PLIST already set, can't apply testcase_lowdpi") + + QMAKE_INFO_PLIST = $$QMAKESPEC/Info.plist.disable_highdpi + } else { + # TODO: Add support for other platforms if possible + } +} + benchmark: type = benchmark else: type = check @@ -183,20 +195,26 @@ isEmpty(BUILDS)|build_pass { } builtin_testdata { - ALL_TESTDATA = $$TESTDATA $$GENERATED_TESTDATA - - # BLACKLIST needs to be added to the testdata - BLACKLISTPATH = $$_PRO_FILE_PWD_/BLACKLIST - exists($$BLACKLISTPATH): ALL_TESTDATA *= $$BLACKLISTPATH - # RESOURCES does not support wildcards (for good reasons) - for(td, ALL_TESTDATA): \ + for (td, TESTDATA): \ testdata.files += $$files($$absolute_path($$td, $$_PRO_FILE_PWD_)) + # BLACKLIST needs to be added to the testdata + BLACKLISTPATH = $$_PRO_FILE_PWD_/BLACKLIST + exists($$BLACKLISTPATH): \ + testdata.files *= $$BLACKLISTPATH !isEmpty(testdata.files) { testdata.base = $$_PRO_FILE_PWD_ RESOURCES += testdata } + # Extra compilers don't create wildcards to start with. + for (td, GENERATED_TESTDATA): \ + gentestdata.files += $$absolute_path($$td, $$OUT_PWD) + !isEmpty(gentestdata.files) { + gentestdata.base = $$OUT_PWD + RESOURCES += gentestdata + } + !isEmpty(TEST_HELPER_INSTALLS): \ error("This platform does not support tests which require helpers.") } diff --git a/mkspecs/features/uikit/gc_binaries.prf b/mkspecs/features/uikit/gc_binaries.prf new file mode 100644 index 0000000000..c4f7445951 --- /dev/null +++ b/mkspecs/features/uikit/gc_binaries.prf @@ -0,0 +1,2 @@ +# bitcode (release mode) is incompatible with splitting sections. +!bitcode|!release: load(gc_binaries) diff --git a/mkspecs/linux-icc/qmake.conf b/mkspecs/linux-icc/qmake.conf index ec09afe381..57638326a0 100644 --- a/mkspecs/linux-icc/qmake.conf +++ b/mkspecs/linux-icc/qmake.conf @@ -26,7 +26,7 @@ QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB QMAKE_CFLAGS_YACC = QMAKE_CFLAGS_ISYSTEM = -isystem QMAKE_CFLAGS_THREAD = -D_REENTRANT -QMAKE_CFLAGS_SPLIT_SECTIONS = -ffunction-sections +QMAKE_CFLAGS_SPLIT_SECTIONS = -ffunction-sections -fdata-sections QMAKE_CFLAGS_LTCG = -ipo -fno-fat-lto-objects QMAKE_CFLAGS_LTCG_FATOBJECTS = -ffat-lto-objects QMAKE_CFLAGS_DISABLE_LTCG = -no-ipo diff --git a/mkspecs/macx-clang/Info.plist.disable_highdpi b/mkspecs/macx-clang/Info.plist.disable_highdpi new file mode 100644 index 0000000000..a9b89888ad --- /dev/null +++ b/mkspecs/macx-clang/Info.plist.disable_highdpi @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>NSHighResolutionCapable</key> + <string>NO</string> +</dict> +</plist> diff --git a/mkspecs/macx-icc/qmake.conf b/mkspecs/macx-icc/qmake.conf index fa3944f843..e11782e885 100644 --- a/mkspecs/macx-icc/qmake.conf +++ b/mkspecs/macx-icc/qmake.conf @@ -25,7 +25,7 @@ QMAKE_CFLAGS_SHLIB = -fPIC QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses QMAKE_CFLAGS_THREAD = -QMAKE_CFLAGS_SPLIT_SECTIONS = -ffunction-sections +QMAKE_CFLAGS_SPLIT_SECTIONS = -ffunction-sections -fdata-sections QMAKE_CFLAGS_LTCG = -ipo QMAKE_CFLAGS_DISABLE_LTCG = -no-ipo |