qt5base-lts/mkspecs/features/qt_tool.prf
Oswald Buddenhagen 4a35f21208 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>
2014-05-23 11:39:25 +02:00

66 lines
2.0 KiB
Plaintext

#
# W A R N I N G
# -------------
#
# This file is not part of the Qt API. It exists purely as an
# implementation detail. It may change from version to version
# without notice, or even be removed.
#
# We mean it.
#
load(qt_app)
CONFIG += console
# If we are doing a prefix build, create a "module" pri which enables
# qtPrepareTool() to work with the non-installed build.
# Non-bootstrapped tools always need this because of the environment setup.
!build_pass:if(!host_build|!force_bootstrap|force_independent) {
isEmpty(MODULE):MODULE = $$TARGET
!host_build|!force_bootstrap: MODULE_DEPENDS = $$replace(QT, -private$, _private)
load(qt_build_paths)
load(resolve_target)
TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_tool_$${MODULE}.pri
vars = binary depends
!isEmpty(QT_TOOL_ENV) {
vars += envvars
module_var_names =
module_var_sets =
for(var, QT_TOOL_ENV) {
vars += env.$${var}.name env.$${var}.value
module_var_names += QT_TOOL.$${MODULE}.env.$${var}
module_var_sets += \
"QT_TOOL.$${MODULE}.env.$${var}.name = $$val_escape($${var}.name)" \
"QT_TOOL.$${MODULE}.env.$${var}.value = $$val_escape($${var}.value)"
}
module_envvars = \
"QT_TOOL.$${MODULE}.envvars = $$module_var_names" \
$$module_var_sets
} else {
module_envvars =
}
bin = $$system_path($$QMAKE_RESOLVED_TARGET)
TOOL_PRI_CONT = \
"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.")
# Then, inject the new tool into the current cache state
!contains(QMAKE_INTERNAL_INCLUDED_FILES, $$TOOL_PRI) { # before the actual include()!
added = $$TOOL_PRI
cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, added)
unset(added)
}
include($$TOOL_PRI)
for(var, vars): \
cache(QT_TOOL.$${MODULE}.$$var, transient)
}