make QMAKE_CXX/CROSS_COMPILE verification work under windows
automatically append the .exe extension. this is done unconditionally, which means that providing it in the spec is wrong by definition. don't use system("which") (which won't do what we want in a windows shell), but scan PATH ourselves. as a bonus, this is also faster. to avoid fetching and splitting the path multiple times, factor out a function in spec_pre.prf. Change-Id: I95f0fa285c158b347d45422111f91540e3a595fd Reviewed-by: Jochen Seemann <seemann.jochen@gmail.com> Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
parent
a989e5c54f
commit
3444e23652
@ -14,17 +14,26 @@ host_build {
|
||||
|
||||
# Provide a function to be used by mkspecs
|
||||
defineTest(deviceSanityCheckCompiler) {
|
||||
equals(QMAKE_HOST.os, Windows): \
|
||||
sfx = .exe
|
||||
else: \
|
||||
sfx =
|
||||
|
||||
# Check if the binary exists with an absolute path. Do this check
|
||||
# before the CROSS_COMPILE empty check below to allow the mkspec
|
||||
# to derive the compiler path from other device options.
|
||||
exists($$QMAKE_CXX):return()
|
||||
exists($$QMAKE_CXX$$sfx):return()
|
||||
|
||||
# Check for possible reasons of failure
|
||||
# check if CROSS_COMPILE device-option is set
|
||||
isEmpty(CROSS_COMPILE):error("CROSS_COMPILE needs to be set via -device-option CROSS_COMPILE=<path>")
|
||||
|
||||
# Check if QMAKE_CXX points to an executable.
|
||||
system("which $$QMAKE_CXX > /dev/null"):return()
|
||||
ensurePathEnv()
|
||||
for (dir, QMAKE_PATH_ENV) {
|
||||
exists($$dir/$${QMAKE_CXX}$$sfx): \
|
||||
return()
|
||||
}
|
||||
|
||||
# QMAKE_CXX does not point to a compiler.
|
||||
error("Compiler $$QMAKE_CXX not found. Check the value of CROSS_COMPILE -device-option")
|
||||
|
@ -23,19 +23,25 @@ QMAKE_H_MOD_MOC = moc_
|
||||
QMAKE_MOD_LEX = _lex
|
||||
QMAKE_MOD_YACC = _yacc
|
||||
|
||||
defineTest(ensurePathEnv) {
|
||||
isEmpty(QMAKE_PATH_ENV) {
|
||||
QMAKE_PATH_ENV = $$(PATH)
|
||||
QMAKE_PATH_ENV = $$split(QMAKE_PATH_ENV, $$QMAKE_DIRLIST_SEP)
|
||||
export(QMAKE_PATH_ENV)
|
||||
}
|
||||
}
|
||||
|
||||
equals(QMAKE_HOST.os, Windows) {
|
||||
QMAKE_EXT_OBJ = .obj
|
||||
QMAKE_EXT_RES = .res
|
||||
QMAKE_SH =
|
||||
PATH = $$(PATH)
|
||||
PATH = $$split(PATH, ;)
|
||||
for(dir, PATH) {
|
||||
ensurePathEnv()
|
||||
for(dir, QMAKE_PATH_ENV) {
|
||||
exists($$dir/sh.exe) {
|
||||
QMAKE_SH = $$dir/sh.exe
|
||||
break()
|
||||
}
|
||||
}
|
||||
unset(PATH)
|
||||
} else {
|
||||
QMAKE_EXT_CPP += .C
|
||||
QMAKE_EXT_H += .H
|
||||
|
Loading…
x
Reference in New Issue
Block a user