e07372ff50
the system path separator and shell are bound to the host system (system() will use cmd even on mingw with sh.exe in path). the makefiles otoh may depend on what the qmakespec defines. consequently, add $$system_path() and $$system_quote() (for use with system() & $$system()). $$native_path() is renamed to $$shell_path() and should be used with $$shell_quote() to produce command lines in makefiles. $$QMAKE_DIR_SEP needs to be applied to Option::dir_sep right after parsing the spec, so it is available to $$shell_{path,quote}(). Change-Id: If3db4849e7f96068cf03a32348a24f3a72d6292c Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
95 lines
3.8 KiB
Plaintext
95 lines
3.8 KiB
Plaintext
contains(TEMPLATE, ".*(lib|app)"):CONFIG += have_target
|
|
|
|
!have_target:!force_qt: CONFIG -= qt
|
|
|
|
!shared:!dll:!static:!staticlib {
|
|
contains(QT_CONFIG, static): CONFIG += static
|
|
else: CONFIG += shared
|
|
}
|
|
|
|
QT_BREAKPAD_ROOT_PATH = $$(QT_BREAKPAD_ROOT_PATH)
|
|
!isEmpty(QT_BREAKPAD_ROOT_PATH): \ # quick test first whether requested ...
|
|
!staticlib:!static:CONFIG(release, debug|release):have_target: \ # is it applicable?
|
|
!contains(TARGET, .*phony_target.*): \ # monster hack, you don't really see this here, right? ;)
|
|
system($$QT_BREAKPAD_ROOT_PATH/qtbreakpadsymbols --breakpad-exists) { # do we really have it?
|
|
CONFIG += breakpad
|
|
CONFIG -= no_debug_info separate_debug_info
|
|
QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
|
|
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO
|
|
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
|
|
}
|
|
|
|
CONFIG(debug, debug|release):load(debug)
|
|
else:load(release)
|
|
debug_and_release:load(debug_and_release)
|
|
incredibuild_xge {
|
|
CONFIG -= incredibuild_xge
|
|
CONFIG = incredibuild_xge $$CONFIG
|
|
}
|
|
|
|
breakpad {
|
|
load(resolve_target)
|
|
win32: QMAKE_CLEAN += $$replace(QMAKE_RESOLVED_TARGET, ...$, pdb) # for the debug case it is hardcoded in qmake
|
|
|
|
DEBUGFILENAME = $$shell_quote($$shell_path($$QMAKE_RESOLVED_TARGET))
|
|
PROJECTPATH = $$shell_quote($$shell_path($$OUT_PWD))
|
|
|
|
!isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)
|
|
QMAKE_POST_LINK = $$QMAKE_POST_LINK$$quote($${QT_BREAKPAD_ROOT_PATH}$${QMAKE_DIR_SEP}qtbreakpadsymbols $$DEBUGFILENAME $$PROJECTPATH)
|
|
!isEmpty(QMAKE_STRIP):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote($$QMAKE_STRIP $$DEBUGFILENAME)
|
|
}
|
|
|
|
QMAKE_INCDIR += $$QMAKE_INCDIR_POST
|
|
QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST
|
|
|
|
# Let every project have a standard GNU `check' target
|
|
!contains(QMAKE_EXTRA_TARGETS, check) {
|
|
# `make check' should iterate through all subdirs
|
|
# (except those with no_default_target or no_check_target)
|
|
contains(TEMPLATE, subdirs) {
|
|
for(subdir, SUBDIRS) {
|
|
subdir_config=$$eval($${subdir}.CONFIG)
|
|
!contains(subdir_config, no_check_target):!contains(subdir_config, no_default_target):check.recurse += $$subdir
|
|
unset(subdir_config)
|
|
}
|
|
!isEmpty(check.recurse) {
|
|
# setup the recurse target only when there is to recurse into
|
|
check.CONFIG = recursive
|
|
check.recurse_target = check
|
|
}
|
|
}
|
|
# `make check' should imply building the project
|
|
else {
|
|
check.depends = first
|
|
}
|
|
QMAKE_EXTRA_TARGETS += check
|
|
}
|
|
|
|
# Let every project have a 'docs' target
|
|
!contains(QMAKE_EXTRA_TARGETS, docs) {
|
|
contains(TEMPLATE, subdirs) {
|
|
# `make docs' should iterate through all subdirs
|
|
# (except those with no_default_target or no_docs_target)
|
|
!contains(CONFIG, no_docs_target):for(subdir, SUBDIRS) {
|
|
subdir_config = $$eval($${subdir}.CONFIG)
|
|
!contains(subdir_config, no_docs_target):!contains(subdir_config, no_default_target):docs.recurse += $$subdir
|
|
unset(subdir_config)
|
|
}
|
|
!isEmpty(docs.recurse) {
|
|
# setup the recurse target only when there is something to recurse into
|
|
docs.CONFIG = recursive
|
|
docs.recurse_target = docs
|
|
}
|
|
} else {
|
|
# apps and libs only generate docs if QMAKE_DOCS is set
|
|
!isEmpty(QMAKE_DOCS) {
|
|
!exists($$QMAKE_DOCS):error("Cannot find documentation specification file $$QMAKE_DOCS")
|
|
qtPrepareTool(QDOC, qdoc)
|
|
for(index, QMAKE_DOCS_INDEX):QDOC_INDEX += -indexdir $$index
|
|
!isEmpty(QMAKE_DOCS_INSTALLDIR):QMAKE_DOCS_OPTIONS += -installdir $$QMAKE_DOCS_INSTALLDIR
|
|
docs.commands += $$QDOC $$QMAKE_DOCS_OPTIONS $$QDOC_INDEX $$QMAKE_DOCS
|
|
}
|
|
}
|
|
QMAKE_EXTRA_TARGETS += docs
|
|
}
|