summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-10 18:55:06 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-06-17 06:47:48 +0000
commited07bdcb5f96d723f9c4c6b689ae95965c57c723 (patch)
tree06600515441cbbd06cd04cbab271c59482e16b1a
parent78731b434e0e99ad108601249108e12d8a49c350 (diff)
make sql drivers independently configurable
our binary packages come without many sql drivers, because they have proprietary dependencies we cannot ship. not every user wants to build all of qt from scratch, so it makes sense to make it possible to "enrich" the existing installation by compiling just the drivers. to enable this, the drivers' configuration must be independent. but note that it's still not possible to configure a single driver - the entire sqldrivers directory is configured at once. a side effect of this is that the availability of the sql plugins cannot be made known with publicFeatures any more, because there is no associated module pri file to put that information into. that should be made inconsequential by making qtHaveModule() work for plugins. Task-number: QTBUG-58372 Change-Id: Ibdebe3199688a57f93cea82dc15623081d1280f5 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--configure.json4
-rw-r--r--src/plugins/sqldrivers/.qmake.conf19
-rw-r--r--src/plugins/sqldrivers/configure.json (renamed from src/sql/configure.json)26
-rw-r--r--src/plugins/sqldrivers/configure.pri (renamed from src/sql/configure.pri)0
-rw-r--r--src/plugins/sqldrivers/qsqldriverbase.pri3
-rw-r--r--src/plugins/sqldrivers/sqldrivers.pro6
-rw-r--r--src/plugins/sqldrivers/sqlite/sqlite.pro5
7 files changed, 45 insertions, 18 deletions
diff --git a/configure.json b/configure.json
index 8b5f07ed54..b572a3d1f5 100644
--- a/configure.json
+++ b/configure.json
@@ -10,11 +10,11 @@
"subconfigs": [
"src/corelib",
"src/network",
- "src/sql",
"src/gui",
"src/xml",
"src/widgets",
- "src/printsupport"
+ "src/printsupport",
+ "src/plugins/sqldrivers"
],
"commandline": {
diff --git a/src/plugins/sqldrivers/.qmake.conf b/src/plugins/sqldrivers/.qmake.conf
new file mode 100644
index 0000000000..15ba71a343
--- /dev/null
+++ b/src/plugins/sqldrivers/.qmake.conf
@@ -0,0 +1,19 @@
+# This file detaches this sub-tree from the rest of qtbase,
+# so it can be configured stand-alone.
+# Of course, under normal circumstances, this _is_ part of qtbase,
+# so we have to make some contortions to restore normality.
+
+isEmpty(_QMAKE_CONF_): return() # Pre-scan during spec loading.
+
+SQLDRV_SRC_TREE = $$dirname(_QMAKE_CONF_)
+QTBASE_SRC_TREE = $$section(SQLDRV_SRC_TREE, /, 0, -4)
+
+QTBASE_BLD_TREE = $$shadowed($$QTBASE_SRC_TREE)
+!isEmpty(QTBASE_BLD_TREE):exists($$QTBASE_BLD_TREE/.qmake.cache) {
+ # This tricks qt_build_config.prf and qt_build_paths.prf
+ _QMAKE_CONF_ = $$QTBASE_SRC_TREE/.qmake.conf
+} else {
+ CONFIG += sqldrivers_standalone
+}
+
+include($$QTBASE_SRC_TREE/.qmake.conf)
diff --git a/src/sql/configure.json b/src/plugins/sqldrivers/configure.json
index dc7fffa02d..5603ceb37b 100644
--- a/src/sql/configure.json
+++ b/src/plugins/sqldrivers/configure.json
@@ -1,9 +1,9 @@
{
- "module": "sql",
+ "module": "sqldrivers",
"depends": [
"core"
],
- "testDir": "../../config.tests",
+ "testDir": "../../../config.tests",
"commandline": {
"assignments": {
@@ -129,42 +129,42 @@
"sql-db2": {
"label": "DB2 (IBM)",
"condition": "libs.db2",
- "output": [ "publicFeature" ]
+ "output": [ "privateFeature" ]
},
"sql-ibase": {
"label": "InterBase",
"condition": "libs.ibase",
- "output": [ "publicFeature" ]
+ "output": [ "privateFeature" ]
},
"sql-mysql": {
"label": "MySql",
"condition": "libs.mysql",
- "output": [ "publicFeature" ]
+ "output": [ "privateFeature" ]
},
"sql-oci": {
"label": "OCI (Oracle)",
"condition": "libs.oci",
- "output": [ "publicFeature" ]
+ "output": [ "privateFeature" ]
},
"sql-odbc": {
"label": "ODBC",
- "condition": "libs.odbc && features.datestring",
- "output": [ "publicFeature" ]
+ "condition": "features.datestring && libs.odbc",
+ "output": [ "privateFeature" ]
},
"sql-psql": {
"label": "PostgreSQL",
"condition": "libs.psql",
- "output": [ "publicFeature" ]
+ "output": [ "privateFeature" ]
},
"sql-sqlite2": {
"label": "SQLite2",
"condition": "libs.sqlite2",
- "output": [ "publicFeature" ]
+ "output": [ "privateFeature" ]
},
"sql-sqlite": {
"label": "SQLite",
"condition": "features.datestring",
- "output": [ "publicFeature" ]
+ "output": [ "privateFeature" ]
},
"system-sqlite": {
"label": " Using system provided SQLite",
@@ -174,8 +174,8 @@
},
"sql-tds": {
"label": "TDS (Sybase)",
- "condition": "libs.tds && features.datestring",
- "output": [ "publicFeature" ]
+ "condition": "features.datestring && libs.tds",
+ "output": [ "privateFeature" ]
}
},
diff --git a/src/sql/configure.pri b/src/plugins/sqldrivers/configure.pri
index 9fb957291f..9fb957291f 100644
--- a/src/sql/configure.pri
+++ b/src/plugins/sqldrivers/configure.pri
diff --git a/src/plugins/sqldrivers/qsqldriverbase.pri b/src/plugins/sqldrivers/qsqldriverbase.pri
index 512c046ec1..4b78fa9454 100644
--- a/src/plugins/sqldrivers/qsqldriverbase.pri
+++ b/src/plugins/sqldrivers/qsqldriverbase.pri
@@ -1,5 +1,8 @@
QT = core core-private sql-private
+# For QMAKE_USE in the parent projects.
+include($$shadowed($$PWD)/qtsqldrivers-config.pri)
+
PLUGIN_TYPE = sqldrivers
load(qt_plugin)
diff --git a/src/plugins/sqldrivers/sqldrivers.pro b/src/plugins/sqldrivers/sqldrivers.pro
index 30fb6019ce..8a9ae46f82 100644
--- a/src/plugins/sqldrivers/sqldrivers.pro
+++ b/src/plugins/sqldrivers/sqldrivers.pro
@@ -1,5 +1,9 @@
TEMPLATE = subdirs
-QT_FOR_CONFIG += sql
+
+sqldrivers_standalone {
+ _QMAKE_CACHE_ = $$shadowed($$SQLDRV_SRC_TREE)/.qmake.conf
+ load(qt_configure)
+}
qtConfig(sql-psql) : SUBDIRS += psql
qtConfig(sql-mysql) : SUBDIRS += mysql
diff --git a/src/plugins/sqldrivers/sqlite/sqlite.pro b/src/plugins/sqldrivers/sqlite/sqlite.pro
index 1066bf7f51..d7e19f97b1 100644
--- a/src/plugins/sqldrivers/sqlite/sqlite.pro
+++ b/src/plugins/sqldrivers/sqlite/sqlite.pro
@@ -1,10 +1,11 @@
TARGET = qsqlite
-QT_FOR_CONFIG += sql-private
-
HEADERS += $$PWD/qsql_sqlite_p.h
SOURCES += $$PWD/qsql_sqlite.cpp $$PWD/smain.cpp
+include($$OUT_PWD/../qtsqldrivers-config.pri)
+QT_FOR_CONFIG += sqldrivers-private
+
qtConfig(system-sqlite) {
QMAKE_USE += sqlite
} else {