summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@pelagicore.com>2017-11-07 17:26:39 +0100
committerIikka Eklund <iikka.eklund@qt.io>2017-11-09 12:02:18 +0000
commit419d05c13974266c292a0c145acca0d70b662acf (patch)
tree2e5a496720df63b1e1e3532e67591188536ada06
parenteb1d6585ad60d2606e88aff80503fcfc2c1013b6 (diff)
downloadqtivi-419d05c13974266c292a0c145acca0d70b662acf.tar.gz
Improve the build system to be more modular
The configure output is improved to now show whether a specific module is build or not. Either by showing the summary of features which are build for this module, or by hiding the section and Showing "Module... No" Dependencies between the modules have been added to the configure system to make it possible to disable specific modules and by that also disable all the modules depending on that. The build system has been changed to enable building only the modules which has been selected to be build. Change-Id: Ic70f23c159eee3fe7ce6c63aa6f785c8b754ce31 Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
-rw-r--r--examples/examples.pro2
-rw-r--r--src/doc/qtivi/src/configuration.qdoc15
-rw-r--r--src/geniviextras/configure.json14
-rw-r--r--src/imports/imports.pro4
-rw-r--r--src/ivicore/configure.json12
-rw-r--r--src/ivimedia/configure.json14
-rw-r--r--src/ivivehiclefunctions/configure.json15
-rw-r--r--src/plugins/plugins.pro3
-rw-r--r--src/src.pro33
9 files changed, 89 insertions, 23 deletions
diff --git a/examples/examples.pro b/examples/examples.pro
index 9ac0612..baa862b 100644
--- a/examples/examples.pro
+++ b/examples/examples.pro
@@ -1,6 +1,6 @@
TEMPLATE = subdirs
-SUBDIRS += ivicore
+qtHaveModule(ivicore): SUBDIRS += ivicore
qtHaveModule(ivivehiclefunctions): SUBDIRS += ivivehiclefunctions
qtHaveModule(ivimedia): SUBDIRS += ivimedia
qtHaveModule(geniviextras): SUBDIRS += geniviextras
diff --git a/src/doc/qtivi/src/configuration.qdoc b/src/doc/qtivi/src/configuration.qdoc
index 16053ff..1e85064 100644
--- a/src/doc/qtivi/src/configuration.qdoc
+++ b/src/doc/qtivi/src/configuration.qdoc
@@ -87,6 +87,21 @@ These command-line options can be passed to qmake using the \c QMAKE_EXTRA_ARGS
QMAKE_EXTRA_ARGS="--host-tools-only" qmake <qtivi-src>/qtivi.pro
\endcode
+\section2 Only build what is needed
+
+By default all QtIvi modules are configured to be built, depending on whether all needed dependencies
+are available for the respective module or not. Similar to other Qt Features, every module can be
+requested to be built or skipped explicitly using the "--[no-]feature-<modulename>" arguments when
+invoking \c qmake.
+
+E.g. to disable building QtIvi Media:
+\code
+ QMAKE_EXTRA_ARGS="--no-feature-ivimedia" qmake <qtivi-src>/qtivi.pro
+\endcode
+
+Selecting the needed module explicitly has the advantage to show an error at configuration time
+if not all dependencies are met.
+
\section1 Runtime Configuration
The following environment variables are supported for runtime configurations:
diff --git a/src/geniviextras/configure.json b/src/geniviextras/configure.json
index 38bae96..c98bfe5 100644
--- a/src/geniviextras/configure.json
+++ b/src/geniviextras/configure.json
@@ -46,6 +46,12 @@
"label": "Only build Qt GENIVI Extras",
"condition": "input.geniviextras-only == 'yes'",
"output": [ "privateFeature" ]
+ },
+
+ "geniviextras" : {
+ "label": "Qt GENIVI Extras",
+ "condition": "features.dlt",
+ "output": [ "publicFeature" ]
}
},
@@ -57,7 +63,7 @@
},
{
"type": "note",
- "condition": "!features.dlt_2_12",
+ "condition": "features.dlt && !features.dlt_2_12",
"message": "Old DLT version detected. Not all features of Qt GENIVI Extras can be enabled."
},
{
@@ -70,10 +76,16 @@
"summary": [
{
"section": "Qt GENIVI Extras",
+ "condition": "features.geniviextras",
"entries": [
"dlt",
"dlt_2_12"
]
+ },
+ {
+ "type": "feature",
+ "args": "geniviextras",
+ "condition": "!features.geniviextras"
}
]
}
diff --git a/src/imports/imports.pro b/src/imports/imports.pro
index d70d6d5..996d662 100644
--- a/src/imports/imports.pro
+++ b/src/imports/imports.pro
@@ -1,5 +1,5 @@
TEMPLATE = subdirs
-SUBDIRS = core \
- media
+qtHaveModule(ivicore): SUBDIRS += core
+qtHaveModule(ivimedia): SUBDIRS += media
qtHaveModule(ivivehiclefunctions): SUBDIRS += vehiclefunctions
diff --git a/src/ivicore/configure.json b/src/ivicore/configure.json
index ece6c51..f048156 100644
--- a/src/ivicore/configure.json
+++ b/src/ivicore/configure.json
@@ -48,7 +48,7 @@
"label": "IVI Generator",
"enable": "input.ivigenerator == 'qt' || input.ivigenerator == 'system'",
"disable": "input.ivigenerator == 'no'",
- "condition": "features.python3.&& features.python3-virtualenv || features.system-ivigenerator",
+ "condition": "features.ivicore && features.python3 && features.python3-virtualenv || features.system-ivigenerator",
"output": [ "publicFeature" ]
},
"host-tools-only": {
@@ -60,6 +60,10 @@
"label": "QtSimulator Support",
"condition": "module.simulator",
"output": [ "publicFeature" ]
+ },
+ "ivicore": {
+ "label": "Qt IVI Core",
+ "output": [ "publicFeature" ]
}
},
@@ -82,6 +86,7 @@ The QtSimulator Support is needed for the communication between the simulation b
"summary": [
{
"section": "Qt IVI Core",
+ "condition": "features.ivicore",
"entries": [
{
"section": "Python3",
@@ -95,6 +100,11 @@ The QtSimulator Support is needed for the communication between the simulation b
"ivigenerator",
"simulator"
]
+ },
+ {
+ "type": "feature",
+ "args": "ivicore",
+ "condition": "!features.ivicore"
}
]
}
diff --git a/src/ivimedia/configure.json b/src/ivimedia/configure.json
index 01e3a74..30f31a8 100644
--- a/src/ivimedia/configure.json
+++ b/src/ivimedia/configure.json
@@ -1,6 +1,9 @@
{
"module": "ivimedia",
"testDir": "../../config.tests",
+ "depends": [
+ "ivicore"
+ ],
"libraries": {
"taglib": {
@@ -22,15 +25,26 @@
"privateFeature",
{ "type": "define", "name": "QT_TAGLIB" }
]
+ },
+ "ivimedia" : {
+ "label": "Qt IVI Media",
+ "condition": "features.ivicore",
+ "output": [ "publicFeature" ]
}
},
"summary": [
{
"section": "Qt IVI Media",
+ "condition": "features.ivimedia",
"entries": [
"taglib"
]
+ },
+ {
+ "type": "feature",
+ "args": "ivimedia",
+ "condition": "!features.ivimedia"
}
]
}
diff --git a/src/ivivehiclefunctions/configure.json b/src/ivivehiclefunctions/configure.json
index a20db32..fc5bb7e 100644
--- a/src/ivivehiclefunctions/configure.json
+++ b/src/ivivehiclefunctions/configure.json
@@ -1,10 +1,21 @@
{
"module": "ivivehiclefunctions",
"testDir": "../../config.tests",
+ "depends": [
+ "ivicore"
+ ],
- "features": {},
+ "features": {
+ "ivivehiclefunctions" : {
+ "label": "Qt IVI VehicleFunctions",
+ "condition": "features.ivicore && features.ivigenerator",
+ "output": [ "publicFeature" ]
+ }
+ },
"report": [],
- "summary": []
+ "summary": [
+ "ivivehiclefunctions"
+ ]
}
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index 549db23..af84b4b 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -1,4 +1,3 @@
TEMPLATE = subdirs
-SUBDIRS = ivimedia
-
+qtHaveModule(ivimedia): SUBDIRS += ivimedia
qtHaveModule(ivivehiclefunctions): SUBDIRS += ivivehiclefunctions
diff --git a/src/src.pro b/src/src.pro
index bb21da8..c9e5f76 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -1,20 +1,22 @@
TEMPLATE = subdirs
+SUBDIRS = plugins \
+ imports
+ doc
# Include the config.pri from the build folder as the qtgenivieextras-config.pri is copied
# while syncqt is running for the module and this is not done yet.
include($$OUT_PWD/geniviextras/qtgeniviextras-config.pri)
include($$OUT_PWD/ivicore/qtivicore-config.pri)
-QT_FOR_CONFIG += geniviextras-private ivicore ivicore-private
+include($$OUT_PWD/ivivehiclefunctions/qtivivehiclefunctions-config.pri)
+include($$OUT_PWD/ivimedia/qtivimedia-config.pri)
+QT_FOR_CONFIG += geniviextras geniviextras-private ivicore ivicore-private ivivehiclefunctions ivimedia
!qtConfig(host-tools-only) {
- !qtConfig(geniviextras-only) {
- SUBDIRS = ivicore \
- ivimedia \
- plugins \
- imports \
- doc
-
- qtConfig(ivigenerator): {
+ !qtConfig(geniviextras-only):qtConfig(ivicore) {
+ SUBDIRS += ivicore
+ imports.depends += ivicore
+
+ qtConfig(ivigenerator): qtConfig(ivivehiclefunctions): {
SUBDIRS += ivivehiclefunctions
ivivehiclefunctions.depends = ivicore
!qtConfig(system-ivigenerator): ivivehiclefunctions.depends += sub-ivigenerator
@@ -22,16 +24,19 @@ QT_FOR_CONFIG += geniviextras-private ivicore ivicore-private
imports.depends += ivivehiclefunctions
}
- ivimedia.depends = ivicore
- plugins.depends += ivimedia
- imports.depends += ivimedia
+ qtConfig(ivimedia) {
+ SUBDIRS += ivimedia
+ ivimedia.depends = ivicore
+ plugins.depends += ivimedia
+ imports.depends += ivimedia
+ }
}
- qtConfig(dlt): SUBDIRS += geniviextras
+ qtConfig(geniviextras): SUBDIRS += geniviextras
}
!qtConfig(geniviextras-only) {
- qtConfig(ivigenerator) {
+ qtConfig(ivicore): qtConfig(ivigenerator) {
!qtConfig(system-ivigenerator) {
src_tools_ivigenerator.subdir = tools/ivigenerator
src_tools_ivigenerator.target = sub-ivigenerator