qt5base-lts/mkspecs/features/qt_tool.prf
Oswald Buddenhagen 43a36a682a set QT_PLUGIN_PATH for tools
Change-Id: Ie76b25b605ab4271eff161ee9bfc4f54df640f4a
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-15 09:19:09 +02:00

88 lines
3.1 KiB
Plaintext

TEMPLATE = app
CONFIG += qt warn_on console
isEmpty(QMAKE_INFO_PLIST): CONFIG -= app_bundle
build_all:!build_pass {
CONFIG -= build_all
CONFIG += release
}
target.path = $$[QT_INSTALL_BINS]
INSTALLS += target
# If we are doing a prefix build, create a "module" pri which enables
# qtPrepareTool() to work with the non-installed build.
!build_pass:!exists($$[QT_INSTALL_PREFIX]/.qmake.cache) {
isEmpty(MODULE):MODULE = $$TARGET
MODULE_DEPENDS = $$replace(QT, -private$, )
# Find the module's source root dir.
MODULE_PROFILE_DIR = $$_PRO_FILE_PWD_
for(ever) {
exists($$MODULE_PROFILE_DIR/sync.profile):break()
nmpri = $$dirname(MODULE_PROFILE_DIR)
equals(nmpri, $$MODULE_PROFILE_DIR): \
error("No sync.profile found. This does not look like a Qt module source tree.")
MODULE_PROFILE_DIR = $$nmpri
unset(nmpri)
}
isEmpty(MODULE_BASE_DIR): MODULE_BASE_DIR = $$MODULE_PROFILE_DIR
MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_DIR)
isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR
load(resolve_target)
cmd = $$shell_path($$QMAKE_RESOLVED_TARGET)
deps = $$resolve_depends(QT, "QT.")
!isEmpty(deps) {
plugin_paths =
for(dep, deps) {
deppath += $$shell_path($$eval(QT.$${dep}.libs))
for(rpath, QT.$${dep}.rpath_link): \
deppath += $$shell_path($$rpath)
plugin_paths += $$eval(QT.$${dep}.plugin_path) $$eval(QT.$${dep}.plugins)
}
deppath = $$unique(deppath)
plugin_paths = $$unique(plugin_paths)
pluginpath =
for(ppath, plugin_paths): \
exists($$ppath): \
pluginpath += $$shell_path($$ppath)
equals(QMAKE_DIR_SEP, /) {
equals(QMAKE_HOST.os, Windows): \
var = PATH
else:contains(QMAKE_HOST.os, Linux|FreeBSD): \
var = LD_LIBRARY_PATH
else:equals(QMAKE_HOST.os, Darwin): \
var = DYLD_LIBRARY_PATH
else: \
error("Operating system not supported.")
!isEmpty(pluginpath): pluginpath = "QT_PLUGIN_PATH=$$join(pluginpath, :) "
cmd = "$$var=$$join(deppath, :)${$$var:+:\$$$var} $$pluginpath$$cmd"
} else {
!isEmpty(pluginpath): pluginpath = "(set QT_PLUGIN_PATH=$$join(pluginpath, ;)) & "
# Escape closing parens when expanding %PATH%, otherwise cmd confuses itself.
cmd = "(set PATH=$$join(deppath, ;);%PATH:)=^)%) & $$pluginpath$$cmd"
}
}
TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_$${MODULE}.pri
TOOL_PRI_CONT = "QT_TOOL.$${MODULE}.command = $$val_escape(cmd)"
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, $$list(binary depends)): \
cache(QT_TOOL.$${MODULE}.$$var, transient)
}