summaryrefslogtreecommitdiff
path: root/mkspecs
diff options
context:
space:
mode:
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/features/ivigenerator.prf22
-rw-r--r--mkspecs/features/ivigenerator_qt_module.prf29
2 files changed, 47 insertions, 4 deletions
diff --git a/mkspecs/features/ivigenerator.prf b/mkspecs/features/ivigenerator.prf
index fcd2177..7652375 100644
--- a/mkspecs/features/ivigenerator.prf
+++ b/mkspecs/features/ivigenerator.prf
@@ -1,5 +1,7 @@
# Custom compiler for qface:
#
+# If building a module, use load(ivigenerator_qt_module) instead
+#
# Example input:
# QFACE_SOURCES += my.foo.qface [required]
# QFACE_MODULE_NAME = my_module_name
@@ -25,7 +27,6 @@ QFACE_ABS_PWD = $$absolute_path($$QFACE_PWD, $$_PRO_FILE_PWD_)
QFACE_FILE = $$basename(QFACE_SOURCES)
QFACE_BASE_NAME = $$replace(QFACE_FILE, .qface, )
QFACE_YAML = $$QFACE_ABS_PWD/$${QFACE_BASE_NAME}.yaml
-isEmpty(QFACE_MODULE_NAME): QFACE_MODULE_NAME = $$QFACE_BASE_NAME
# Detect whether we are using the feature inside the qtivi repository
VIRTUALENV_PATH = $$[QT_HOST_BINS]/ivigenerator/qtivi_qface_virtualenv
@@ -54,11 +55,12 @@ else: ENV = LC_ALL="en_US.UTF-8"
# Although this could be extra_compiler it is a normal EXTRA_TARGET for a reason.
# In the debug_and_release configuration, we want to have the generator executed
# during the run of the meta Makefile to only generate the code once.
-PRI_NAME = $$replace(QFACE_MODULE_NAME, "\." , "-")
-PRI = $$QFACE_OUTPUT_DIR/$${PRI_NAME}.pri
+PRI = $$QFACE_OUTPUT_DIR/$$lower($${QFACE_BASE_NAME}).pri
+IVI_GENERATOR_OPTIONS = --format=$$QFACE_FORMAT
+!isEmpty(QFACE_MODULE_NAME): IVI_GENERATOR_OPTIONS += --module=$$QFACE_MODULE
qface_sources.target = $$relative_path($$PRI, $$OUT_PWD)
-qface_sources.commands = $$ENV $$shell_path($$IVI_GENERATOR) -f $$QFACE_FORMAT $$shell_path($$QFACE_ABS_PWD/$${QFACE_FILE}) $$shell_path($$QFACE_OUTPUT_DIR)
+qface_sources.commands = $$ENV $$shell_path($$IVI_GENERATOR) $$IVI_GENERATOR_OPTIONS $$shell_path($$QFACE_ABS_PWD/$${QFACE_FILE}) $$shell_path($$QFACE_OUTPUT_DIR)
qface_sources.depends = $$IVI_GENERATOR_PATH/generate.py
# Add all templates of the generator format as dependency
@@ -73,6 +75,13 @@ exists($$QFACE_YAML) {
OTHER_FILES += $$QFACE_YAML
}
+!isEmpty(QFACE_HEADERS_OUTPUT_DIR) {
+ QFACE_HEADERS_OUTPUT_TARGET = $${QFACE_HEADERS_OUTPUT_DIR}/$$lower($${QFACE_MODULE_NAME})module.h
+ qface_headers.target = $$relative_path($$QFACE_HEADERS_OUTPUT_TARGET, $$OUT_PWD)
+ qface_headers.commands = $${QMAKE_COPY_FILE} $${QFACE_OUTPUT_DIR}/*.h $${QFACE_HEADERS_OUTPUT_DIR}
+ qface_headers.depends = $$relative_path($$PRI, $$OUT_PWD) $$IVI_GENERATOR_PATH/generate.py
+}
+
# Reevaluate the Makefile after the generation has finished
Makefile.target = Makefile
# The relative_path is needed here as qmake will use a relative_path for the output files
@@ -89,6 +98,11 @@ Makefile.depends = $$relative_path($$PRI, $$OUT_PWD)
Makefile.depends = $$shadowed($$IVI_GENERATOR_PATH)/forceRebuild
}
+!isEmpty(QFACE_HEADERS_OUTPUT_TARGET) {
+ Makefile.depends += $$relative_path($$QFACE_HEADERS_OUTPUT_TARGET, $$OUT_PWD)
+ QMAKE_EXTRA_TARGETS += qface_headers
+}
+
# After the generation, this should exists and qmake can create the correct build tree
exists($$PRI) {
# save the state and reset for SOURCES, HEADERS and OTHER_FILES
diff --git a/mkspecs/features/ivigenerator_qt_module.prf b/mkspecs/features/ivigenerator_qt_module.prf
new file mode 100644
index 0000000..bceff89
--- /dev/null
+++ b/mkspecs/features/ivigenerator_qt_module.prf
@@ -0,0 +1,29 @@
+# Custom compiler for qface base modules
+#
+# If not building a module, use CONFIG += ivigenerator instead
+#
+# Example input:
+# QFACE_SOURCES += my.foo.qface [required]
+# QFACE_MODULE_NAME = my_module_name
+# QFACE_FORMAT = frontend (or backend, simulator... -- defaults to "frontend")
+# QFACE_OUTPUT_DIR = my_output_dir (defaults to current build dir)
+#
+
+!contains(QFACE_SOURCES, .+\\.qface$) {
+ error("Invalid qface file provided: The file needs to end with .qface")
+}
+
+QFACE_PWD = $$dirname(QFACE_SOURCES)
+QFACE_ABS_PWD = $$absolute_path($$QFACE_PWD, $$_PRO_FILE_PWD_)
+
+load(qt_build_paths)
+!force_independent {
+ QFACE_HEADERS_REL_DIR = $$relative_path($$QFACE_ABS_PWD, $$QTIVI_ROOT)
+ QFACE_HEADERS_OUTPUT_DIR = $${MODULE_BASE_OUTDIR}/$${QFACE_HEADERS_REL_DIR}
+ !exists(QFACE_HEADERS_OUTPUT_DIR) {
+ mkpath($${QFACE_HEADERS_OUTPUT_DIR})
+ }
+}
+
+load(qt_module)
+load(ivigenerator)