diff options
Diffstat (limited to 'mkspecs')
-rw-r--r-- | mkspecs/common/msvc-desktop.conf | 4 | ||||
-rw-r--r-- | mkspecs/common/qcc-base.conf | 2 | ||||
-rw-r--r-- | mkspecs/features/android/android.prf | 5 | ||||
-rw-r--r-- | mkspecs/features/android/resolve_target.prf | 1 | ||||
-rw-r--r-- | mkspecs/features/data/macros.cpp | 18 | ||||
-rw-r--r-- | mkspecs/features/default_post.prf | 5 | ||||
-rw-r--r-- | mkspecs/features/mac/default_post.prf | 6 | ||||
-rw-r--r-- | mkspecs/features/moc.prf | 4 | ||||
-rw-r--r-- | mkspecs/features/qt_common.prf | 1 | ||||
-rw-r--r-- | mkspecs/features/qt_configure.prf | 4 | ||||
-rw-r--r-- | mkspecs/features/toolchain.prf | 63 | ||||
-rw-r--r-- | mkspecs/qnx-aarch64le-qcc/qmake.conf | 8 | ||||
-rw-r--r-- | mkspecs/qnx-x86-64-qcc/qmake.conf | 8 |
13 files changed, 73 insertions, 56 deletions
diff --git a/mkspecs/common/msvc-desktop.conf b/mkspecs/common/msvc-desktop.conf index 50745c3621..95db8b93f9 100644 --- a/mkspecs/common/msvc-desktop.conf +++ b/mkspecs/common/msvc-desktop.conf @@ -100,9 +100,9 @@ QMAKE_LIBS_COMPAT = advapi32.lib shell32.lib comdlg32.lib user32.lib gdi32 QMAKE_LIBS_QT_ENTRY = -lqtmain -QMAKE_IDL = midl +QMAKE_IDL = midl /NOLOGO QMAKE_LIB = lib /NOLOGO -QMAKE_RC = rc +QMAKE_RC = rc /NOLOGO VCPROJ_EXTENSION = .vcproj VCSOLUTION_EXTENSION = .sln diff --git a/mkspecs/common/qcc-base.conf b/mkspecs/common/qcc-base.conf index 77e0476777..24ee29b6b8 100644 --- a/mkspecs/common/qcc-base.conf +++ b/mkspecs/common/qcc-base.conf @@ -36,6 +36,8 @@ QMAKE_CFLAGS_AVX2 += -mavx2 QMAKE_CFLAGS_AESNI += -maes QMAKE_CFLAGS_SHANI += -msha +QMAKE_CFLAGS_STACK_PROTECTOR_STRONG = -fstack-protector-strong + QMAKE_CXXFLAGS += $$QMAKE_CFLAGS -lang-c++ QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON diff --git a/mkspecs/features/android/android.prf b/mkspecs/features/android/android.prf index 7d77598e76..45eadc9fdb 100644 --- a/mkspecs/features/android/android.prf +++ b/mkspecs/features/android/android.prf @@ -1,3 +1,6 @@ +android_install:contains(INSTALLS, target):!isEmpty(target.path): \ + CONFIG -= android_install + contains(TEMPLATE, ".*app") { !android_app { !contains(TARGET, ".so"): TARGET = lib$${TARGET}.so @@ -8,7 +11,7 @@ contains(TEMPLATE, ".*app") { INSTALLS *= target } } -} else: contains(TEMPLATE, "lib"):!QTDIR_build:android_install { +} else: contains(TEMPLATE, "lib"):!static:android_install { target.path = /libs/$$ANDROID_TARGET_ARCH/ INSTALLS *= target } diff --git a/mkspecs/features/android/resolve_target.prf b/mkspecs/features/android/resolve_target.prf index 2bbeffcfd0..25682cd894 100644 --- a/mkspecs/features/android/resolve_target.prf +++ b/mkspecs/features/android/resolve_target.prf @@ -1,2 +1,3 @@ +load(resolve_config) load(android) load(resolve_target) diff --git a/mkspecs/features/data/macros.cpp b/mkspecs/features/data/macros.cpp index e677dace12..9dcb8f0914 100644 --- a/mkspecs/features/data/macros.cpp +++ b/mkspecs/features/data/macros.cpp @@ -13,17 +13,17 @@ QMAKE_APPLE_CC = __APPLE_CC__ #endif #ifdef __clang__ #ifdef __APPLE_CC__ -QT_APPLE_CLANG_MAJOR_VERSION = __clang_major__ -QT_APPLE_CLANG_MINOR_VERSION = __clang_minor__ -QT_APPLE_CLANG_PATCH_VERSION = __clang_patchlevel__ +QMAKE_APPLE_CLANG_MAJOR_VERSION = __clang_major__ +QMAKE_APPLE_CLANG_MINOR_VERSION = __clang_minor__ +QMAKE_APPLE_CLANG_PATCH_VERSION = __clang_patchlevel__ #else -QT_CLANG_MAJOR_VERSION = __clang_major__ -QT_CLANG_MINOR_VERSION = __clang_minor__ -QT_CLANG_PATCH_VERSION = __clang_patchlevel__ +QMAKE_CLANG_MAJOR_VERSION = __clang_major__ +QMAKE_CLANG_MINOR_VERSION = __clang_minor__ +QMAKE_CLANG_PATCH_VERSION = __clang_patchlevel__ #endif #endif #ifdef __GNUC__ -QT_GCC_MAJOR_VERSION = __GNUC__ -QT_GCC_MINOR_VERSION = __GNUC_MINOR__ -QT_GCC_PATCH_VERSION = __GNUC_PATCHLEVEL__ +QMAKE_GCC_MAJOR_VERSION = __GNUC__ +QMAKE_GCC_MINOR_VERSION = __GNUC_MINOR__ +QMAKE_GCC_PATCH_VERSION = __GNUC_PATCHLEVEL__ #endif diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf index d18604e0b8..7e027325bd 100644 --- a/mkspecs/features/default_post.prf +++ b/mkspecs/features/default_post.prf @@ -71,6 +71,11 @@ debug { QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_RELEASE } +stack_protector_strong { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_STACK_PROTECTOR_STRONG + QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_STACK_PROTECTOR_STRONG +} + # disable special linker flags for host builds (no proper test for host support yet) !host_build|!cross_compile { use_gold_linker: QMAKE_LFLAGS += $$QMAKE_LFLAGS_USE_GOLD diff --git a/mkspecs/features/mac/default_post.prf b/mkspecs/features/mac/default_post.prf index 2bba73d795..395ac34001 100644 --- a/mkspecs/features/mac/default_post.prf +++ b/mkspecs/features/mac/default_post.prf @@ -162,8 +162,12 @@ macx-xcode { else: \ use_flag = -include + # Only use Xarch with multi-arch, as the option confuses ccache + count(VALID_ARCHS, 1, greaterThan): \ + QMAKE_CFLAGS_USE_PRECOMPILE += \ + -Xarch_$${arch} + QMAKE_CFLAGS_USE_PRECOMPILE += \ - -Xarch_$${arch} \ $${use_flag}${QMAKE_PCH_OUTPUT_$${arch}} } icc_pch_style { diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf index 15eb38af31..955933d874 100644 --- a/mkspecs/features/moc.prf +++ b/mkspecs/features/moc.prf @@ -31,10 +31,10 @@ if(gcc|intel_icl|msvc):!rim_qcc:!uikit:!no_moc_predefs:if(!macos|count(QMAKE_APP moc_predefs.name = "Generate moc_predefs.h" moc_predefs.CONFIG = no_link gcc: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -dM -E -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} - else:intel_icl: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -QdM -P -Za -Fi${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} + else:intel_icl: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -QdM -P -Fi${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} else:msvc { moc_predefs.commands += $$QMAKE_CXX -Bx$$shell_quote($$shell_path($$QMAKE_QMAKE)) $$QMAKE_CXXFLAGS \ - -E -Za ${QMAKE_FILE_IN} 2>NUL >${QMAKE_FILE_OUT} + -E ${QMAKE_FILE_IN} 2>NUL >${QMAKE_FILE_OUT} } else: error("Oops, I messed up") moc_predefs.output = $$MOC_DIR/moc_predefs.h moc_predefs.input = MOC_PREDEF_FILE diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf index ea235514b7..1e138730b3 100644 --- a/mkspecs/features/qt_common.prf +++ b/mkspecs/features/qt_common.prf @@ -17,6 +17,7 @@ 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(stack-protector-strong): CONFIG += stack_protector_strong contains(TEMPLATE, .*lib) { # module and plugins if(!host_build|!cross_compile):qtConfig(reduce_exports): CONFIG += hide_symbols diff --git a/mkspecs/features/qt_configure.prf b/mkspecs/features/qt_configure.prf index 964c2393c2..f3db6b467d 100644 --- a/mkspecs/features/qt_configure.prf +++ b/mkspecs/features/qt_configure.prf @@ -326,7 +326,7 @@ defineTest(qtConfParseCommandLine) { } defineReplace(qtConfToolchainSupportsFlag) { - test_out_dir = $$shadowed($$QMAKE_CONFIG_TESTS_DIR) + test_out_dir = $$OUT_PWD/$$basename(QMAKE_CONFIG_TESTS_DIR) test_cmd_base = "$$QMAKE_CD $$system_quote($$system_path($$test_out_dir)) &&" conftest = "int main() { return 0; }" @@ -849,7 +849,7 @@ defineTest(qtConfTest_compile) { isEmpty(host): host = false test_dir = $$QMAKE_CONFIG_TESTS_DIR/$$test - test_base_out_dir = $$shadowed($$QMAKE_CONFIG_TESTS_DIR) + test_base_out_dir = $$OUT_PWD/$$basename(QMAKE_CONFIG_TESTS_DIR) test_out_dir = $$test_base_out_dir/$$test !isEmpty($${1}.pro): \ test_dir = $$test_dir/$$eval($${1}.pro) diff --git a/mkspecs/features/toolchain.prf b/mkspecs/features/toolchain.prf index 46a9c5707a..34bd8f1d78 100644 --- a/mkspecs/features/toolchain.prf +++ b/mkspecs/features/toolchain.prf @@ -40,19 +40,38 @@ isEmpty($${target_prefix}.INCDIRS) { # QMAKE_DEFAULT_*DIRS, because they're handled in a single build pass. darwin: cxx_flags += -isysroot $$QMAKE_MAC_SDK_PATH - output = $$system("$$cmd_prefix $$QMAKE_CXX $$qtMakeExpand($$cxx_flags) -xc++ -E -v - 2>&1 $$cmd_suffix", lines) + clang: \ + # Need to link to pick up library paths + cxx_flags += $$QMAKE_LFLAGS_SHLIB -o /dev/null -v -Wl,-v + else: \ + # gcc is fine with just preprocessing + cxx_flags += -E -v + + output = $$system("$$cmd_prefix $$QMAKE_CXX $$qtMakeExpand($$cxx_flags) -xc++ - 2>&1 $$cmd_suffix", lines, ec) + !equals(ec, 0): \ + error("Cannot run compiler '$$QMAKE_CXX'. Maybe you forgot to setup the environment?") add_includes = false + add_libraries = false for (line, output) { - line ~= s/^ *// # remove leading spaces + line ~= s/^[ \\t]*// # remove leading spaces contains(line, "LIBRARY_PATH=.*") { line ~= s/^LIBRARY_PATH=// # remove leading LIBRARY_PATH= paths = $$split(line, $$QMAKE_DIRLIST_SEP) for (path, paths): \ QMAKE_DEFAULT_LIBDIRS += $$clean_path($$path) + } else: contains(line, "Library search paths:") { + add_libraries = true } else: contains(line, "$${LITERAL_HASH}include <.*") { # #include <...> search starts here: add_includes = true } else: contains(line, "End of search.*") { add_includes = false + } else: $$add_libraries { + # We assume all library search paths are absolute + !contains(line, "^/.*") { + add_libraries = false + next() + } + QMAKE_DEFAULT_LIBDIRS += $$clean_path($$line) } else: $$add_includes { !contains(line, ".* \\(framework directory\\)"): \ QMAKE_DEFAULT_INCDIRS += $$clean_path($$line) @@ -85,13 +104,19 @@ isEmpty($${target_prefix}.INCDIRS) { # defineReplace(qtVariablesFromMSVC) { - return($$system("$$1 -nologo -E $$2 $$system_quote($$PWD/data/macros.cpp) <NUL 2>NUL", lines)) + ret = $$system("$$1 -nologo -E $$2 $$system_quote($$PWD/data/macros.cpp) <NUL 2>NUL", lines, ec) + !equals(ec, 0): \ + error("Cannot run compiler '$$1'. Maybe you forgot to setup the environment?") + return($$ret) } defineReplace(qtVariablesFromGCC) { null_device = /dev/null equals(QMAKE_HOST.os, Windows): null_device = NUL - return($$system("$$1 -E $$system_quote($$PWD/data/macros.cpp) <$$null_device 2>$$null_device", lines)) + ret = $$system("$$1 -E $$system_quote($$PWD/data/macros.cpp) <$$null_device 2>$$null_device", lines, ec) + !equals(ec, 0): \ + error("Cannot run compiler '$$1'. Maybe you forgot to setup the environment?") + return($$ret) } isEmpty($${target_prefix}.COMPILER_MACROS) { @@ -138,35 +163,27 @@ unset(target_prefix) # Populate QMAKE_COMPILER_DEFINES and some compatibility variables. # The $$format_number() calls strip leading zeros to avoid misinterpretation as octal. QMAKE_COMPILER_DEFINES += __cplusplus=$$QT_COMPILER_STDCXX -!isEmpty(QMAKE_MSC_VER) { +!isEmpty(QMAKE_MSC_VER): \ QMAKE_COMPILER_DEFINES += _MSC_VER=$$QMAKE_MSC_VER _MSC_FULL_VER=$$QMAKE_MSC_FULL_VER - QT_MSVC_MAJOR_VERSION = $$replace(QMAKE_MSC_FULL_VER, "(..)(..)(.*)", "\\1") - QT_MSVC_MINOR_VERSION = $$format_number($$replace(QMAKE_MSC_FULL_VER, "(..)(..)(.*)", "\\2")) - QT_MSVC_PATCH_VERSION = $$replace(QMAKE_MSC_FULL_VER, "(..)(..)(.*)", "\\3")) -} -!isEmpty(QMAKE_ICC_VER) { +!isEmpty(QMAKE_ICC_VER): \ QMAKE_COMPILER_DEFINES += __INTEL_COMPILER=$$QMAKE_ICC_VER __INTEL_COMPILER_UPDATE=$$QMAKE_ICC_UPDATE_VER - QT_ICC_MAJOR_VERSION = $$replace(QMAKE_ICC_VER, "(..)(..)", "\\1") - QT_ICC_MINOR_VERSION = $$format_number($$replace(QMAKE_ICC_VER, "(..)(..)", "\\2")) - QT_ICC_PATCH_VERSION = $$QMAKE_ICC_UPDATE_VER -} !isEmpty(QMAKE_APPLE_CC): \ QMAKE_COMPILER_DEFINES += __APPLE_CC__=$$QMAKE_APPLE_CC !isEmpty(QT_APPLE_CLANG_MAJOR_VERSION): \ QMAKE_COMPILER_DEFINES += __clang__ \ - __clang_major__=$$QT_APPLE_CLANG_MAJOR_VERSION \ - __clang_minor__=$$QT_APPLE_CLANG_MINOR_VERSION \ - __clang_patchlevel__=$$QT_APPLE_CLANG_PATCH_VERSION + __clang_major__=$$QMAKE_APPLE_CLANG_MAJOR_VERSION \ + __clang_minor__=$$QMAKE_APPLE_CLANG_MINOR_VERSION \ + __clang_patchlevel__=$$QMAKE_APPLE_CLANG_PATCH_VERSION !isEmpty(QT_CLANG_MAJOR_VERSION): \ QMAKE_COMPILER_DEFINES += __clang__ \ - __clang_major__=$$QT_CLANG_MAJOR_VERSION \ - __clang_minor__=$$QT_CLANG_MINOR_VERSION \ - __clang_patchlevel__=$$QT_CLANG_PATCH_VERSION + __clang_major__=$$QMAKE_CLANG_MAJOR_VERSION \ + __clang_minor__=$$QMAKE_CLANG_MINOR_VERSION \ + __clang_patchlevel__=$$QMAKE_CLANG_PATCH_VERSION !isEmpty(QT_GCC_MAJOR_VERSION): \ QMAKE_COMPILER_DEFINES += \ - __GNUC__=$$QT_GCC_MAJOR_VERSION \ - __GNUC_MINOR__=$$QT_GCC_MINOR_VERSION \ - __GNUC_PATCHLEVEL__=$$QT_GCC_PATCH_VERSION + __GNUC__=$$QMAKE_GCC_MAJOR_VERSION \ + __GNUC_MINOR__=$$QMAKE_GCC_MINOR_VERSION \ + __GNUC_PATCHLEVEL__=$$QMAKE_GCC_PATCH_VERSION QMAKE_CFLAGS += $$QMAKE_CFLAGS_MSVC_COMPAT QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_MSVC_COMPAT diff --git a/mkspecs/qnx-aarch64le-qcc/qmake.conf b/mkspecs/qnx-aarch64le-qcc/qmake.conf index 5e3123bece..754bc27358 100644 --- a/mkspecs/qnx-aarch64le-qcc/qmake.conf +++ b/mkspecs/qnx-aarch64le-qcc/qmake.conf @@ -7,11 +7,3 @@ DEFINES += _FORTIFY_SOURCE=2 QMAKE_LFLAGS_SHLIB += -Wl,-z,relro -Wl,-z,now include(../common/qcc-base-qnx-aarch64le.conf) - -qtConfig(stack-protector-strong) { - QMAKE_CFLAGS += -fstack-protector-strong - QMAKE_CXXFLAGS += -fstack-protector-strong -} else { - QMAKE_CFLAGS += -fstack-protector -fstack-protector-all - QMAKE_CXXFLAGS += -fstack-protector -fstack-protector-all -} diff --git a/mkspecs/qnx-x86-64-qcc/qmake.conf b/mkspecs/qnx-x86-64-qcc/qmake.conf index 2a01ed1405..c479181342 100644 --- a/mkspecs/qnx-x86-64-qcc/qmake.conf +++ b/mkspecs/qnx-x86-64-qcc/qmake.conf @@ -5,11 +5,3 @@ QMAKE_LFLAGS_SHLIB += -Wl,-z,relro -Wl,-z,now include(../common/qcc-base-qnx-x86-64.conf) - -qtConfig(stack-protector-strong) { - QMAKE_CFLAGS += -fstack-protector-strong - QMAKE_CXXFLAGS += -fstack-protector-strong -} else { - QMAKE_CFLAGS += -fstack-protector -fstack-protector-all - QMAKE_CXXFLAGS += -fstack-protector -fstack-protector-all -} |