summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/default_post.prf
blob: c56729a70dd9fade900ef9962bef03ebe90a50f3 (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
contains(TEMPLATE, ".*(lib|app)"):CONFIG += have_target

!have_target:!force_qt: CONFIG -= qt

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 {
        DEBUGFILENAME = $${QMAKE_RESOLVED_TARGET}
        PDBFILENAME = $$replace(QMAKE_RESOLVED_TARGET, ...$, pdb)
        DEBUGFILENAME ~= s,/,\\,
        PDBFILENAME ~= s,/,\\,
        QMAKE_CLEAN += $$PDBFILENAME  # for the debug case it is hardcoded in qmake
    } else {
        DEBUGFILENAME = $$QMAKE_RESOLVED_TARGET
    }

    PROJECTPATH = $$OUT_PWD
    win32:PROJECTPATH ~= s,/,\\,

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