summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/qml_plugin.prf
blob: 7abd372e497e7db91c7fbc07214c4191e2b6d7c9 (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
#
#  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_config)

TEMPLATE = lib
CONFIG += plugin

if(win32|mac):!macx-xcode {
    contains(QT_CONFIG, debug_and_release):CONFIG += debug_and_release
    contains(QT_CONFIG, build_all):CONFIG += build_all
}
contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
contains(QT_CONFIG, separate_debug_info):CONFIG += separate_debug_info
contains(QT_CONFIG, separate_debug_info_nocopy):CONFIG += separate_debug_info_nocopy
contains(QT_CONFIG, c++11):CONFIG += c++11

isEmpty(CXX_MODULE) {
    CXX_MODULE = $$TARGET
    TARGET = declarative_$${TARGET}
}
isEmpty(TARGETPATH): TARGETPATH = $$eval(QT.$${CXX_MODULE}.name)

QMLTYPEFILE = $$_PRO_FILE_PWD_/plugins.qmltypes
exists($$QMLTYPEFILE): QML_FILES += $$QMLTYPEFILE

# Install rules

qml1_target {
    DESTDIR = $$eval(QT.$${CXX_MODULE}.imports)/$$TARGETPATH
    instbase = $$[QT_INSTALL_IMPORTS]
} else {
    DESTDIR = $$eval(QT.$${CXX_MODULE}.qml)/$$TARGETPATH
    instbase = $$[QT_INSTALL_QML]
}

target.path = $$instbase/$$TARGETPATH
INSTALLS += target

# Some final setup

TARGET = $$qtLibraryTarget($$TARGET)

load(qt_targets)

# plugins.qmltypes is used by Qt Creator for syntax highlighting and the QML code model.  It needs
# to be regenerated whenever the QML elements exported by the plugin change.  This cannot be done
# automatically at compile time because qmlplugindump does not support some QML features and it may
# not be possible when cross-compiling.
#
# To regenerate run 'make qmltypes' which will update the plugins.qmltypes file in the source
# directory.  Then review and commit the changes made to plugins.qmltypes.
#
!cross_compile {
    build_pass|!debug_and_release {
        isEmpty(IMPORT_VERSION): IMPORT_VERSION = $$eval(QT.$${CXX_MODULE}.MAJOR_VERSION).$$eval(QT.$${CXX_MODULE}.MINOR_VERSION)

        load(resolve_target)
        qml1_target: \
            qmlplugindump = qml1plugindump
        else: \
            qmlplugindump = qmlplugindump
        qtPrepareTool(QMLPLUGINDUMP, $$qmlplugindump)
        importpath.value =
        for(qmod, QMAKEMODULES) {
            qmod = $$section(qmod, /, 0, -3)/imports
            qml1_target: qmod = $$qmod/QtDeclarative
            exists($$qmod): importpath.value += $$shell_path($$qmod)
        }
        importpath.name = QML_IMPORT_PATH
        importpath.value = $$unique(importpath.value)
        qtAddToolEnv(QMLPLUGINDUMP, importpath)
        TARGETPATHBASE = $$replace(TARGETPATH, \\.\\d+\$, )
        qmltypes.target = qmltypes
        qmltypes.commands = $$QMLPLUGINDUMP $$replace(TARGETPATHBASE, /, .) $$IMPORT_VERSION > $$QMLTYPEFILE
        qmltypes.depends = $$QMAKE_RESOLVED_TARGET
    } else {
        qmltypes.CONFIG += recursive
    }
    QMAKE_EXTRA_TARGETS += qmltypes
}

load(qml_module)