summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/qt_tool.prf
blob: 01a26b238ecdddc454f288203952e99112e76943 (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
TEMPLATE = app

CONFIG += qt warn_on console
isEmpty(QMAKE_INFO_PLIST): CONFIG -= app_bundle

!build_pass:contains(QT_CONFIG, build_all): CONFIG += release

target.path = $$[QT_INSTALL_BINS]
INSTALLS += target

# If we are doing a prefix build, create a "module" pri which enables
# qtPrepareTool() to work with the non-installed build.
!build_pass:!exists($$[QT_INSTALL_PREFIX]/.qmake.cache) {

    isEmpty(MODULE):MODULE = $$TARGET

    MODULE_DEPENDS = $$replace(QT, -private$, )

    # Find the module's source root dir.
    MODULE_PROFILE_DIR = $$_PRO_FILE_PWD_
    for(ever) {
        exists($$MODULE_PROFILE_DIR/sync.profile):break()
        nmpri = $$dirname(MODULE_PROFILE_DIR)
        equals(nmpri, $$MODULE_PROFILE_DIR): \
            error("No sync.profile found. This does not look like a Qt module source tree.")
        MODULE_PROFILE_DIR = $$nmpri
        unset(nmpri)
    }

    isEmpty(MODULE_BASE_DIR): MODULE_BASE_DIR = $$MODULE_PROFILE_DIR
    MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_DIR)
    isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR

    load(resolve_target)
    cmd = $$shell_path($$QMAKE_RESOLVED_TARGET)
    qtAddTargetEnv(cmd)

    TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_$${MODULE}.pri

    TOOL_PRI_CONT = "QT_TOOL.$${MODULE}.command = $$val_escape(cmd)"
    write_file($$TOOL_PRI, TOOL_PRI_CONT)|error("Aborting.")

    # Then, inject the new tool into the current cache state
    !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$TOOL_PRI) { # before the actual include()!
        added = $$TOOL_PRI
        cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, added)
        unset(added)
    }
    include($$TOOL_PRI)
    cache(QT_TOOL.$${MODULE}.command, transient)

}