summaryrefslogtreecommitdiffstats
path: root/mkspecs/features
diff options
context:
space:
mode:
Diffstat (limited to 'mkspecs/features')
-rw-r--r--mkspecs/features/android/android.prf5
-rw-r--r--mkspecs/features/android/resolve_target.prf1
-rw-r--r--mkspecs/features/data/macros.cpp18
-rw-r--r--mkspecs/features/default_post.prf5
-rw-r--r--mkspecs/features/mac/default_post.prf6
-rw-r--r--mkspecs/features/moc.prf4
-rw-r--r--mkspecs/features/qt_common.prf1
-rw-r--r--mkspecs/features/qt_configure.prf4
-rw-r--r--mkspecs/features/toolchain.prf63
9 files changed, 69 insertions, 38 deletions
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