summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/default_post.prf
blob: d6caf870f72b92c5887ffb1fa52e75d6ec7ab457 (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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# This file is loaded by qmake right after loading the actual project file.

contains(TEMPLATE, ".*(lib|app)"):CONFIG += have_target

!have_target:!force_qt: CONFIG -= qt

load(resolve_config)

exclusive_builds: load(exclusive_builds_post)

# If the TARGET looks like a path, split it into DESTDIR and the resulting TARGET
target_dir_part = $$dirname(TARGET)
!isEmpty(target_dir_part) {
    isEmpty(DESTDIR): \
        DESTDIR = $$target_dir_part
    else: \
        DESTDIR = $$DESTDIR/$$target_dir_part

    TARGET = $$basename(TARGET)
    DESTDIR = $$clean_path($$DESTDIR)
}

QT_BREAKPAD_ROOT_PATH = $$(QT_BREAKPAD_ROOT_PATH)
!isEmpty(QT_BREAKPAD_ROOT_PATH): \   # quick test first whether requested ...
        !static: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|debug: \
    CONFIG += 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
}

optimize_size {
    !isEmpty(QMAKE_CFLAGS_OPTIMIZE):!isEmpty(QMAKE_CFLAGS_OPTIMIZE_SIZE)  {
        QMAKE_CFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE
        QMAKE_CXXFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE
        QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_SIZE
        QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_SIZE
    }
} else: optimize_full {
    !isEmpty(QMAKE_CFLAGS_OPTIMIZE):!isEmpty(QMAKE_CFLAGS_OPTIMIZE_FULL)  {
        QMAKE_CFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE
        QMAKE_CXXFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE
        QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_FULL
        QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_FULL
    }
}

optimize_debug {
    QMAKE_CFLAGS_DEBUG += $$QMAKE_CFLAGS_OPTIMIZE_DEBUG
    QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_OPTIMIZE_DEBUG
}

debug {
    QMAKE_CFLAGS += $$QMAKE_CFLAGS_DEBUG
    QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_DEBUG
    QMAKE_LFLAGS += $$QMAKE_LFLAGS_DEBUG
    QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_DEBUG
} else {
    QMAKE_CFLAGS += $$QMAKE_CFLAGS_RELEASE
    QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RELEASE
    QMAKE_LFLAGS += $$QMAKE_LFLAGS_RELEASE
    QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_RELEASE
}

# disable special linker flags for host builds (no proper test for host support yet)
!host_build|!cross_compile {
    use_gold_linker: QMAKE_LFLAGS += $$QMAKE_LFLAGS_USE_GOLD
    enable_new_dtags: QMAKE_LFLAGS += $$QMAKE_LFLAGS_NEW_DTAGS
}

dll:win32: QMAKE_LFLAGS += $$QMAKE_LFLAGS_DLL
static:mac: QMAKE_LFLAGS += $$QMAKE_LFLAGS_STATIC_LIB
staticlib:unix {
    QMAKE_CFLAGS += $$QMAKE_CFLAGS_STATIC_LIB
    QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STATIC_LIB
}

incredibuild_xge {
    CONFIG -= incredibuild_xge
    CONFIG = incredibuild_xge $$CONFIG
}

silent {
    # Ensure that we process silent.prf last, as it will mangle QMAKE_CXX
    # and friends in a way that some of the other features (sdk.prf and
    # simd.prf eg) do not handle.
    CONFIG -= silent
    CONFIG = silent $$CONFIG
}

breakpad {
    load(resolve_target)
    DEBUGFILENAME = $$shell_quote($$system_path($$QMAKE_RESOLVED_TARGET))
    PROJECTPATH = $$shell_quote($$system_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)
}

!c++11:!c++14:!c++1z {
    # Qt requires C++11 since 5.7, check if we need to force a compiler option
    QT_COMPILER_STDCXX_no_L = $$replace(QT_COMPILER_STDCXX, "L$", "")
    !greaterThan(QT_COMPILER_STDCXX_no_L, 199711): CONFIG += c++11
}
c++11|c++14|c++1z {
    # Disable special compiler flags for host builds
    !host_build|!cross_compile {
        c++1z:       cxxstd = CXX1Z
        else: c++14: cxxstd = CXX14
        else:        cxxstd = CXX11
    } else {
        # Fall back to c++11, because since 5.7 c++11 is required everywhere,
        # including host builds
        cxxstd = CXX11
    }

    # Check if we should disable the GNU extensions or not
    !strict_c++:!isEmpty(QMAKE_CXXFLAGS_GNU$$cxxstd): cxxstd = GNU$$cxxstd

    QMAKE_CXXFLAGS += $$eval(QMAKE_CXXFLAGS_$$cxxstd)
    QMAKE_LFLAGS += $$eval(QMAKE_LFLAGS_$$cxxstd)

    unset(cxxstd)
}

utf8_source {
    QMAKE_CFLAGS += $$QMAKE_CFLAGS_UTF8_SOURCE
    QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_UTF8_SOURCE
}

!precompile_header: SOURCES += $$NO_PCH_SOURCES

QMAKE_INCDIR += $$QMAKE_INCDIR_POST
QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST