assemble the complete tool commands already in qt_tool.prf

this saves some repeated calculations. also, it's nicer to have most
logic in one place.

Change-Id: Iea362d40f5e6203709ced94d29ca61a4163b8e69
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
This commit is contained in:
Oswald Buddenhagen 2012-08-08 11:33:26 +02:00 committed by Qt by Nokia
parent ff13798708
commit 6f4ff81380
2 changed files with 25 additions and 27 deletions

View File

@ -155,7 +155,7 @@ defineTest(qtAddModules) {
# variable, default # variable, default
defineTest(qtPrepareTool) { defineTest(qtPrepareTool) {
$$1 = $$eval(QT_TOOL.$${2}.binary) $$1 = $$eval(QT_TOOL.$${2}.command)
isEmpty($$1) { isEmpty($$1) {
MODBASE = $$[QT_HOST_BINS/get] MODBASE = $$[QT_HOST_BINS/get]
count(ARGS, 2, greaterThan) { count(ARGS, 2, greaterThan) {
@ -175,30 +175,8 @@ defineTest(qtPrepareTool) {
$$1 = $$BUNDLENAME $$1 = $$BUNDLENAME
} }
} }
}
$$1 = $$shell_path($$eval($$1)) $$1 = $$shell_path($$eval($$1))
deps = $$resolve_depends(QT_TOOL.$${2}.depends, "QT.")
!isEmpty(deps) {
for(dep, deps): \
deppath += $$shell_path($$eval(QT.$${dep}.libs))
deppath = $$unique(deppath)
equals(QMAKE_DIR_SEP, /) {
equals(QMAKE_HOST.os, Windows): \
var = PATH
else:contains(QMAKE_HOST.os, Linux): \
var = LD_LIBRARY_PATH
else:equals(QMAKE_HOST.os, Darwin): \
var = DYLD_LIBRARY_PATH
else: \
error("Operating system not supported.")
$$1 = "$$var=$$join(deppath, :)${$$var:+:\$$$var} $$eval($$1)"
} else {
# Escape closing parens when expanding %PATH%, otherwise cmd confuses itself.
$$1 = "(set PATH=$$join(deppath, ;);%PATH:)=^)%) & $$eval($$1)"
} }
}
export($$1) export($$1)
} }

View File

@ -35,12 +35,32 @@ INSTALLS += target
isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR
load(resolve_target) load(resolve_target)
cmd = $$shell_path($$QMAKE_RESOLVED_TARGET)
deps = $$resolve_depends(QT, "QT.")
!isEmpty(deps) {
for(dep, deps) {
deppath += $$shell_path($$eval(QT.$${dep}.libs))
}
deppath = $$unique(deppath)
equals(QMAKE_DIR_SEP, /) {
equals(QMAKE_HOST.os, Windows): \
var = PATH
else:contains(QMAKE_HOST.os, Linux): \
var = LD_LIBRARY_PATH
else:equals(QMAKE_HOST.os, Darwin): \
var = DYLD_LIBRARY_PATH
else: \
error("Operating system not supported.")
cmd = "$$var=$$join(deppath, :)${$$var:+:\$$$var} $$cmd"
} else {
# Escape closing parens when expanding %PATH%, otherwise cmd confuses itself.
cmd = "(set PATH=$$join(deppath, ;);%PATH:)=^)%) & $$cmd"
}
}
TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_$${MODULE}.pri TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_$${MODULE}.pri
TOOL_PRI_CONT = \ TOOL_PRI_CONT = "QT_TOOL.$${MODULE}.command = $$val_escape(cmd)"
"QT_TOOL.$${MODULE}.binary = $$QMAKE_RESOLVED_TARGET" \
"QT_TOOL.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")"
write_file($$TOOL_PRI, TOOL_PRI_CONT)|error("Aborting.") write_file($$TOOL_PRI, TOOL_PRI_CONT)|error("Aborting.")
# Then, inject the new tool into the current cache state # Then, inject the new tool into the current cache state