summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/qt_build_config.prf
blob: 1e2d5c2423349fb136f04e2cc26ff4210e73ad81 (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
#
#  W A R N I N G
#  -------------
#
# This file is not part of the Qt API.  It exists purely as an
# implementation detail.  It may change from version to version
# without notice, or even be removed.
#
# We mean it.
#

!contains(QMAKE_INTERNAL_INCLUDED_FILES, .*qmodule\\.pri) {
    QMAKE_QT_MODULE = $$[QT_HOST_DATA/get]/mkspecs/qmodule.pri
    !exists($$QMAKE_QT_MODULE)|!include($$QMAKE_QT_MODULE, "", true) {
        error("Cannot load qmodule.pri!")
    } else {
        debug(1, "Loaded qmodule.pri from ($$QMAKE_QT_MODULE)")
    }
} else {
    debug(1, "Not loading qmodule.pri twice")
}

PRECOMPILED_DIR = .pch
OBJECTS_DIR = .obj
MOC_DIR = .moc
RCC_DIR = .rcc
UI_DIR = .uic
intel_icl {
    # ICL 14.0 has a bug that makes it not find #includes in dirs starting with .
    MOC_DIR = tmp/moc
    RCC_DIR = tmp/rcc
    UI_DIR = tmp/uic
}

QMAKE_DIR_REPLACE_SANE = PRECOMPILED_DIR OBJECTS_DIR MOC_DIR RCC_DIR UI_DIR

# force_independent can be set externally. prefix_build not.
!exists($$[QT_HOST_DATA]/.qmake.cache): \
    CONFIG += prefix_build force_independent

!build_pass:!isEmpty(_QMAKE_SUPER_CACHE_):force_independent {
    # When doing a -prefix build of top-level qt5/qt.pro, we need to announce
    # this repo's output dir to the other repos.
    MODULE_BASE_OUTDIR = $$shadowed($$dirname(_QMAKE_CONF_))
    !contains(QTREPOS, $$MODULE_BASE_OUTDIR): \
        cache(QTREPOS, add super, MODULE_BASE_OUTDIR)
    # This repo's module pris' location needs to be made known to qmake.
    isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR
    modpath = $$MODULE_QMAKE_OUTDIR/mkspecs/modules
    !contains(QMAKEMODULES, $$modpath): \
        cache(QMAKEMODULES, add super, modpath)
    unset(modpath)
}

# Apply extra compiler flags passed via configure last.
CONFIG = qt_build_extra $$CONFIG

# Don't actually try to install anything in non-prefix builds.
# This is much easier and safer than making every single INSTALLS
# assignment conditional.
!prefix_build: \
    CONFIG += qt_clear_installs

cross_compile: \
    CONFIG += force_bootstrap

android|ios|winrt: \
    CONFIG += builtin_testdata

CONFIG += \
    create_prl link_prl \
    prepare_docs qt_docs_targets \
    no_private_qt_headers_warning QTDIR_build \
    qt_example_installs \
    # Qt modules get compiled without exceptions enabled by default.
    # However, testcases should be still built with exceptions.
    exceptions_off testcase_exceptions

# Under Windows, this is neither necessary (transitive deps are automatically
# resolved), nor functional (.res files end up in .prl files and break things).
unix: CONFIG += explicitlib


defineTest(qtBuildPart) {
    bp = $$eval($$upper($$section(_QMAKE_CONF_, /, -2, -2))_BUILD_PARTS)
    isEmpty(bp): bp = $$QT_BUILD_PARTS
    contains(bp, $$1): return(true)
    return(false)
}

defineTest(qtNomakeTools) {
    qtBuildPart(tools): return()
    for (d, 1) {
        $${d}.CONFIG += no_default_target no_default_install
        export($${d}.CONFIG)
    }
}