fix QMAKE_DEFAULT_*DIRS resolution with apple SDK, take 2
the code got factored out to an own toolchain.prf file, which is
load()ed from default_pre.prf, so no change at first.
however, on mac, we shadow toolchain.prf, and make it load() sdk.prf
first.
a side effect, it has become harder to disable the use of an sdk
altogether: putting CONFIG-=sdk into a project file or the qmake
command line has no effect now. instead, it's possible to put it into
.qmake.{conf,cache}.
to make it simpler again, it's conceivable to finally add qmake -pre,
which would allow setting variables before default_pre.prf is executed.
take 2: there was nothing wrong with the original patch, but in 5.8,
CONFIG+=simulator_and_device moved from qconfig.pri to various prf files
that would do it according to the simulator_and_device configure
feature, which would be way too late for the "pulled ahead" sdk.prf
loading. as simulator_and_device is now gone entirely, it is safe to
re-apply this patch (mostly) as-is.
Task-number: QTBUG-56144
Change-Id: I6cf484982eaed8af39f7a539c60f5a087a299914
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-14 11:14:13 +00:00
|
|
|
|
2016-10-17 19:18:57 +00:00
|
|
|
defineReplace(qtMakeExpand) {
|
|
|
|
out = "$$1"
|
|
|
|
for(ever) {
|
2016-10-20 08:10:25 +00:00
|
|
|
m = $$replace(out, ".*\\$\\(EXPORT_([^)]+)\\).*", \\1)
|
2016-10-17 19:18:57 +00:00
|
|
|
equals(m, $$out): \
|
|
|
|
return($$out)
|
2016-10-20 08:10:25 +00:00
|
|
|
out = $$replace(out, "\\$\\(EXPORT_$$m\\)", $$eval($$m))
|
2016-10-17 19:18:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
fix QMAKE_DEFAULT_*DIRS resolution with apple SDK, take 2
the code got factored out to an own toolchain.prf file, which is
load()ed from default_pre.prf, so no change at first.
however, on mac, we shadow toolchain.prf, and make it load() sdk.prf
first.
a side effect, it has become harder to disable the use of an sdk
altogether: putting CONFIG-=sdk into a project file or the qmake
command line has no effect now. instead, it's possible to put it into
.qmake.{conf,cache}.
to make it simpler again, it's conceivable to finally add qmake -pre,
which would allow setting variables before default_pre.prf is executed.
take 2: there was nothing wrong with the original patch, but in 5.8,
CONFIG+=simulator_and_device moved from qconfig.pri to various prf files
that would do it according to the simulator_and_device configure
feature, which would be way too late for the "pulled ahead" sdk.prf
loading. as simulator_and_device is now gone entirely, it is safe to
re-apply this patch (mostly) as-is.
Task-number: QTBUG-56144
Change-Id: I6cf484982eaed8af39f7a539c60f5a087a299914
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-14 11:14:13 +00:00
|
|
|
isEmpty(QMAKE_DEFAULT_INCDIRS):!host_build {
|
|
|
|
#
|
|
|
|
# Get default include and library paths from compiler
|
|
|
|
#
|
|
|
|
gcc {
|
|
|
|
!equals(QMAKE_HOST.os, Windows) {
|
|
|
|
cmd_prefix = "LC_ALL=C"
|
|
|
|
cmd_suffix = "</dev/null >/dev/null"
|
|
|
|
} else {
|
|
|
|
cmd_prefix = "set LC_ALL=C&"
|
|
|
|
cmd_suffix = "<NUL >NUL"
|
|
|
|
}
|
2016-10-17 19:18:57 +00:00
|
|
|
output = $$system("$$cmd_prefix $$QMAKE_CXX $$qtMakeExpand($$QMAKE_CXXFLAGS) -xc++ -E -v - 2>&1 $$cmd_suffix", lines)
|
fix QMAKE_DEFAULT_*DIRS resolution with apple SDK, take 2
the code got factored out to an own toolchain.prf file, which is
load()ed from default_pre.prf, so no change at first.
however, on mac, we shadow toolchain.prf, and make it load() sdk.prf
first.
a side effect, it has become harder to disable the use of an sdk
altogether: putting CONFIG-=sdk into a project file or the qmake
command line has no effect now. instead, it's possible to put it into
.qmake.{conf,cache}.
to make it simpler again, it's conceivable to finally add qmake -pre,
which would allow setting variables before default_pre.prf is executed.
take 2: there was nothing wrong with the original patch, but in 5.8,
CONFIG+=simulator_and_device moved from qconfig.pri to various prf files
that would do it according to the simulator_and_device configure
feature, which would be way too late for the "pulled ahead" sdk.prf
loading. as simulator_and_device is now gone entirely, it is safe to
re-apply this patch (mostly) as-is.
Task-number: QTBUG-56144
Change-Id: I6cf484982eaed8af39f7a539c60f5a087a299914
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-14 11:14:13 +00:00
|
|
|
add_includes = false
|
|
|
|
for (line, output) {
|
|
|
|
line ~= s/^ *// # 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, "$${LITERAL_HASH}include <.*") { # #include <...> search starts here:
|
|
|
|
add_includes = true
|
|
|
|
} else: contains(line, "End of search.*") {
|
|
|
|
add_includes = false
|
|
|
|
} else: $$add_includes {
|
|
|
|
!contains(line, ".* \\(framework directory\\)"): \
|
|
|
|
QMAKE_DEFAULT_INCDIRS += $$clean_path($$line)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
QMAKE_DEFAULT_LIBDIRS = $$unique(QMAKE_DEFAULT_LIBDIRS)
|
|
|
|
} else: msvc {
|
|
|
|
LIB = $$getenv("LIB")
|
|
|
|
QMAKE_DEFAULT_LIBDIRS = $$split(LIB, $$QMAKE_DIRLIST_SEP)
|
|
|
|
INCLUDE = $$getenv("INCLUDE")
|
|
|
|
QMAKE_DEFAULT_INCDIRS = $$split(INCLUDE, $$QMAKE_DIRLIST_SEP)
|
|
|
|
}
|
|
|
|
|
|
|
|
unix {
|
|
|
|
isEmpty(QMAKE_DEFAULT_INCDIRS): QMAKE_DEFAULT_INCDIRS = /usr/include /usr/local/include
|
|
|
|
isEmpty(QMAKE_DEFAULT_LIBDIRS): QMAKE_DEFAULT_LIBDIRS = /lib /usr/lib
|
|
|
|
}
|
|
|
|
|
|
|
|
!isEmpty(QMAKE_DEFAULT_INCDIRS): cache(QMAKE_DEFAULT_INCDIRS, set stash)
|
|
|
|
!isEmpty(QMAKE_DEFAULT_LIBDIRS): cache(QMAKE_DEFAULT_LIBDIRS, set stash)
|
|
|
|
}
|