blob: 9847880254ce76c70f52442d8c0d678c8994341d (
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
|
# Custom compiler for qface:
#
# Example input:
# QFACE_SOURCES += my.foo.qface [required]
# QFACE_MODULE_NAME = my_module_name [required]
# QFACE_FORMAT = frontend (or backend, simulator... -- defaults to "frontend")
# QFACE_OUTPUT_DIR = my_output_dir (defaults to current build dir)
#
isEmpty(QFACE_FORMAT): QFACE_FORMAT = frontend
isEmpty(QFACE_OUTPUT_DIR): QFACE_OUTPUT_DIR = $$OUT_PWD
isEmpty(QFACE_SOURCES): error("QFACE_SOURCES must be set!")
!contains(QFACE_SOURCES, .+\\.qface$) {
error("Invalid qface file provided: The file needs to end with .qface")
}
QFACE_PWD = $$dirname(QFACE_SOURCES)
QFACE_FILE = $$basename(QFACE_SOURCES)
QFACE_BASE_NAME = $$replace(QFACE_FILE, .qface, )
isEmpty(QFACE_MODULE_NAME): QFACE_MODULE_NAME = $$QFACE_BASE_NAME
exists($$_PRO_FILE_PWD_/$${QFACE_BASE_NAME}.yaml) {
OTHER_FILES += $$_PRO_FILE_PWD_/$${QFACE_BASE_NAME}.yaml
}
# Detect whether we are using the feature inside the qtivi repository
isEmpty(QTIVI_BUILD_ROOT): VIRTUALENV_PATH = $$[QT_HOST_BINS]/ivigenerator/qtivi_qface_virtualenv
else: VIRTUALENV_PATH = $$QTIVI_BUILD_ROOT/src/tools/ivigenerator/qtivi_qface_virtualenv
isEmpty(QTIVI_ROOT): IVI_GENERATOR_PATH = $$[QT_HOST_BINS]/ivigenerator
else: IVI_GENERATOR_PATH = $$QTIVI_ROOT/src/tools/ivigenerator
win32: VIRTUALENV_ACTIVATION = $$VIRTUALENV_PATH/Scripts/activate &&
else: VIRTUALENV_ACTIVATION = . $$VIRTUALENV_PATH/bin/activate &&
IVI_GENERATOR = $$VIRTUALENV_ACTIVATION python3 $$IVI_GENERATOR_PATH/generate.py
# TODO make this work with multiple input files, or only support one QFACE_SOURCE
qface_sources.output = $$QFACE_OUTPUT_DIR/$${QFACE_MODULE_NAME}.pri
qface_sources.commands = $$IVI_GENERATOR -f $$QFACE_FORMAT ${QMAKE_FILE_NAME} $$QFACE_OUTPUT_DIR
qface_sources.input = QFACE_SOURCES
qface_sources.CONFIG += target_predeps no_link
# Reevaluate the Makefile after the generation has finished
Makefile.target = $$MAKEFILE
Makefile.depends = $$relative_path($$qface_sources.output, $$OUT_PWD)
# After the generation, this should exists and qmake can create the correct build tree
exists($$qface_sources.output) {
include($$qface_sources.output)
}
QMAKE_EXTRA_COMPILERS += qface_sources
QMAKE_EXTRA_TARGETS += Makefile
|