summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/qt_module_headers.prf
blob: 0baa9ec7b2a78f29e7db779136b999d02c44e995 (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
#
#  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.
#

load(qt_build_paths)

!build_pass:git_build {
    qtPrepareTool(QMAKE_SYNCQT, syncqt)
    minimal_syncqt {
        QMAKE_SYNCQT += -minimal $$QMAKE_SYNCQT_OPTIONS
    } else {
        contains(QT_CONFIG, private_tests): \   # -developer-build
            QMAKE_SYNCQT += -check-includes
        QMAKE_SYNCQT += -module $$MODULE_INCNAME -version $$VERSION
    }
    QMAKE_SYNCQT += \
        -outdir $$MODULE_BASE_OUTDIR $$MODULE_SYNCQT_DIR
    !silent: message($$QMAKE_SYNCQT)
    system($$QMAKE_SYNCQT)|error("Failed to run: $$QMAKE_SYNCQT")
}

minimal_syncqt: return()

#load up the headers info
git_build: \
    INC_PATH = $$MODULE_BASE_OUTDIR
else: \
    INC_PATH = $$MODULE_BASE_INDIR
include($$INC_PATH/include/$$MODULE_INCNAME/headers.pri, "", true)

for (injection, SYNCQT.INJECTIONS) {
    injects = $$split(injection, :)
    fwd_hdr = $$member(injects, 1)
    MAIN_FWD = $$INC_PATH/include/$$MODULE_INCNAME/$$fwd_hdr
    MAIN_FWD_CONT = '$${LITERAL_HASH}include "$$member(injects, 0)"'
    write_file($$MAIN_FWD, MAIN_FWD_CONT)|error("Aborting.")
    injects = $$member(injects, 2, -1)
    for (inject, injects) {
        CLASS_FWD = $$INC_PATH/include/$$MODULE_INCNAME/$$inject
        CLASS_FWD_CONT = '$${LITERAL_HASH}include "$$fwd_hdr"'
        write_file($$CLASS_FWD, CLASS_FWD_CONT)|error("Aborting.")
    }
}

autogen_warning = \
    "/* This file was generated by qmake with the info from <root>/$$relative_path($$_PRO_FILE_, $$MODULE_BASE_INDIR). */"

# Create a module master depends header
MODULE_MASTER_DEPS_HEADER = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$${MODULE_INCNAME}Depends
!build_pass {
    MODULE_MASTER_DEPS_HEADER_CONT = $$autogen_warning
    for(dep, MODULE_DEPENDS) {
        depname = $$eval(QT.$${dep}.name)
        MODULE_MASTER_DEPS_HEADER_CONT += "$${LITERAL_HASH}include <$$depname/$$depname>"
    }
    write_file($$MODULE_MASTER_DEPS_HEADER, MODULE_MASTER_DEPS_HEADER_CONT)|error("Aborting.")
}
SYNCQT.HEADER_FILES += $$MODULE_MASTER_DEPS_HEADER

CONFIG += qt_install_headers