summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/toolchain.prf
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-06-19 13:25:11 +0200
committerLiang Qi <liang.qi@qt.io>2017-06-19 16:12:34 +0200
commitce09ef431373f45d14ce0a6e7de24aee3666093d (patch)
tree7c998b21f02db55e233e7eeb1599663f1c6b51ca /mkspecs/features/toolchain.prf
parent7ad55ca65f42351e231f31f7a9253ae6eaf1ebb3 (diff)
parent97eec16e4ff6367c233f8ea6c4a343c286c3a514 (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: src/corelib/io/qprocess_unix.cpp src/corelib/io/qprocess_win.cpp src/plugins/platforms/android/qandroidplatformintegration.h src/plugins/platforms/windows/qwindowscontext.cpp src/plugins/platforms/windows/windows.pri src/tools/uic/cpp/cppwriteinitialization.cpp src/widgets/doc/src/widgets-and-layouts/gallery.qdoc Change-Id: I8d0834c77f350ea7540140c2c7f372814afc2d0f
Diffstat (limited to 'mkspecs/features/toolchain.prf')
-rw-r--r--mkspecs/features/toolchain.prf63
1 files changed, 40 insertions, 23 deletions
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