summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/default_post.prf
blob: bfabf25f21e1f6107c911b5daeef552e2b2367f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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 force_debug_info
    CONFIG -= no_debug_info separate_debug_info
}

force_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
}

force_debug_info:win32 {
    load(resolve_target)
    QMAKE_CLEAN += $$replace(QMAKE_RESOLVED_TARGET, ...$, pdb)  # for the debug case it is hardcoded in qmake
}

breakpad {
    load(resolve_target)
    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) {
    contains(TEMPLATE, subdirs): \
        prepareRecursiveTarget(check)
    else: \
        check.depends = first # `make check' implies build
    QMAKE_EXTRA_TARGETS += check
}

!contains(QMAKE_EXTRA_TARGETS, docs) {
    contains(TEMPLATE, subdirs) {
        prepare_docs {
            prepareRecursiveTarget(prepare_docs)
            prepareRecursiveTarget(generate_docs)
            html_docs.commands = $(MAKE) -f $(MAKEFILE) prepare_docs && $(MAKE) -f $(MAKEFILE) generate_docs
        } else {
            prepareRecursiveTarget(html_docs)
        }
        prepareRecursiveTarget(qch_docs)
        prepareRecursiveTarget(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_OUTPUTDIR):QMAKE_DOCS_OPTIONS += -outputdir $$QMAKE_DOCS_OUTPUTDIR
            !isEmpty(QMAKE_DOCS_INSTALLDIR):QMAKE_DOCS_OPTIONS += -installdir $$QMAKE_DOCS_INSTALLDIR
            doc_command = $$QDOC $$QMAKE_DOCS_OPTIONS $$QDOC_INDEX $$QMAKE_DOCS
            prepare_docs {
                prepare_docs.commands += $$doc_command -prepare -no-link-errors
                generate_docs.commands += $$doc_command -generate
                html_docs.depends += generate_docs
            } else {
                html_docs.commands += $$doc_command
            }

            qtPrepareTool(QHELPGENERATOR, qhelpgenerator)
            isEmpty(QMAKE_DOCS_TARGET): QMAKE_DOCS_TARGET = $$basename(QMAKE_DOCS_OUTPUTDIR)
            qch_docs.commands = $$QHELPGENERATOR $$QMAKE_DOCS_OUTPUTDIR/$${QMAKE_DOCS_TARGET}.qhp -o $$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch
        }
    }
    docs.commands = $(MAKE) -f $(MAKEFILE) html_docs && $(MAKE) -f $(MAKEFILE) qch_docs
    QMAKE_EXTRA_TARGETS += html_docs qch_docs docs
    prepare_docs: QMAKE_EXTRA_TARGETS += prepare_docs generate_docs
}

!contains(QMAKE_EXTRA_TARGETS, install_docs) {
    contains(TEMPLATE, subdirs) {
        prepareRecursiveTarget(install_html_docs)
        prepareRecursiveTarget(uninstall_html_docs)
        prepareRecursiveTarget(install_qch_docs)
        prepareRecursiveTarget(uninstall_qch_docs)
        prepareRecursiveTarget(install_docs)
        prepareRecursiveTarget(uninstall_docs)
    }
    QMAKE_EXTRA_TARGETS += \
        install_html_docs uninstall_html_docs \
        install_qch_docs uninstall_qch_docs \
        install_docs uninstall_docs
}