fix quoting and path separators in qtPrepareTool()
we need to store commands with system path separators in the .pri files, as we might clobber windows command arguments if we just converted separators later on. and we can actually do that, as the path separators are actually bound to the host system, not the shell. we also need to shell-quote the commands, as whitespace, and more commonly windows path separators in an msys shell, would break things. we delay this to the last moment possible, as it does depend on the shell. Change-Id: I1fe6b63aebd5663b72492c32928ec397f86e336f Reviewed-by: Sergio Ahumada <sahumada@blackberry.com>bb10
parent
2698509219
commit
4a35f21208
|
|
@ -191,26 +191,30 @@ defineTest(qtAddRpathLink) {
|
|||
|
||||
# variable, default, [suffix for variable for system() use]
|
||||
defineTest(qtPrepareTool) {
|
||||
$$1 = $$eval(QT_TOOL.$${2}.binary)
|
||||
isEmpty($$1) {
|
||||
$$1 = $$[QT_HOST_BINS]/$$2
|
||||
exists($$eval($$1).pl) {
|
||||
$$1 = perl -w $$eval($$1).pl
|
||||
cmd = $$eval(QT_TOOL.$${2}.binary)
|
||||
isEmpty(cmd) {
|
||||
cmd = $$[QT_HOST_BINS]/$$2
|
||||
exists($${cmd}.pl) {
|
||||
cmd = perl -w $$system_path($${cmd}.pl)
|
||||
} else: contains(QMAKE_HOST.os, Windows) {
|
||||
$$1 = $$eval($$1).exe
|
||||
cmd = $$system_path($${cmd}.exe)
|
||||
} else:contains(QMAKE_HOST.os, Darwin) {
|
||||
BUNDLENAME = $$eval($$1).app/Contents/MacOS/$$2
|
||||
BUNDLENAME = $${cmd}.app/Contents/MacOS/$$2
|
||||
exists($$BUNDLENAME) {
|
||||
$$1 = $$BUNDLENAME
|
||||
cmd = $$BUNDLENAME
|
||||
}
|
||||
}
|
||||
}
|
||||
QT_TOOL_ENV += $$eval(QT_TOOL.$${2}.envvars)
|
||||
!isEmpty(3) {
|
||||
$$1$$3 = $$system_path($$eval($$1))
|
||||
$$1$$3 =
|
||||
for (arg, cmd): \
|
||||
$$1$$3 += $$system_quote($$arg)
|
||||
qtAddTargetEnv($$1$$3, QT_TOOL.$${2}.depends, system)
|
||||
}
|
||||
$$1 = $$system_path($$eval($$1))
|
||||
$$1 =
|
||||
for (arg, cmd): \
|
||||
$$1 += $$shell_quote($$arg)
|
||||
qtAddTargetEnv($$1, QT_TOOL.$${2}.depends, )
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -45,8 +45,9 @@ CONFIG += console
|
|||
} else {
|
||||
module_envvars =
|
||||
}
|
||||
bin = $$system_path($$QMAKE_RESOLVED_TARGET)
|
||||
TOOL_PRI_CONT = \
|
||||
"QT_TOOL.$${MODULE}.binary = $$QMAKE_RESOLVED_TARGET" \
|
||||
"QT_TOOL.$${MODULE}.binary = $$val_escape(bin)" \
|
||||
"QT_TOOL.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")" \
|
||||
$$module_envvars
|
||||
write_file($$TOOL_PRI, TOOL_PRI_CONT)|error("Aborting.")
|
||||
|
|
|
|||
Loading…
Reference in New Issue