summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/examples.pri54
-rw-r--r--src/datavisualization/datavisualization.pro4
-rw-r--r--src/datavisualizationqml2/datavisualizationqml2.pro6
-rw-r--r--src/datavisualizationqml2/datavisualizationqml2_plugin.cpp2
-rw-r--r--src/datavisualizationqml2/datavisualizationqml2_plugin.h2
-rw-r--r--src/datavisualizationqml2/qmldir1
-rw-r--r--tests/tests.pri65
7 files changed, 102 insertions, 32 deletions
diff --git a/examples/examples.pri b/examples/examples.pri
index ca91aad0..aca85733 100644
--- a/examples/examples.pri
+++ b/examples/examples.pri
@@ -19,10 +19,18 @@ TEMPLATE = app
QT += datavisualization
+!static:android {
+ # Add Qt library to be loaded in shared android build
+ vis_lib_name = DataVisualization
+ vis_src_lib = lib$${vis_lib_name}.so
+ vis_lib_dir = $$OUT_PWD/../../lib/$$vis_src_lib
+ vis_lib_formatted = $$replace(vis_lib_dir, /, $$QMAKE_DIR_SEP)
+ ANDROID_EXTRA_LIBS = $$vis_lib_formatted
+}
+
contains(TARGET, qml.*) {
uri = QtDataVisualization
lib_name = datavisualizationqml2
- vis_lib_name = DataVisualization
uri_replaced = $$replace(uri, \\., $$QMAKE_DIR_SEP)
make_qmldir_path = $$DESTDIR/$$uri_replaced
@@ -37,28 +45,45 @@ contains(TARGET, qml.*) {
QMAKE_EXTRA_TARGETS += copy_qmldir
PRE_TARGETDEPS += $$copy_qmldir.target
+ static:contains(QT_CONFIG, static) {
+ # Make import scan find our copied qmldir & statically built qml lib
+ LIB_EXTENSION = lib
+ QMLPATHS += $$DESTDIR
+ # We need to copy the qmldir & lib already at qmake run stage as import scan is done then
+ exists($$copy_qmldir.depends): system($$QMAKE_COPY $$copy_qmldir_formatted)
+ } else {
+ win32 {
+ LIB_EXTENSION = dll
+ } else {
+ mac {
+ LIB_EXTENSION = dylib
+ } else {
+ LIB_EXTENSION = so
+ }
+ }
+ }
+
win32 {
CONFIG(debug, release|debug) {
src_dir = debug
- src_lib = $${lib_name}d.dll
+ src_lib = $${lib_name}d.$$LIB_EXTENSION
}
CONFIG(release, release|debug){
src_dir = release
- src_lib = $${lib_name}.dll
+ src_lib = $${lib_name}.$$LIB_EXTENSION
}
} else {
src_dir = .
mac {
CONFIG(debug, release|debug) {
- src_lib = lib$${lib_name}_debug.dylib
+ src_lib = lib$${lib_name}_debug.$$LIB_EXTENSION
}
CONFIG(release, release|debug){
- src_lib = lib$${lib_name}.dylib
+ src_lib = lib$${lib_name}.$$LIB_EXTENSION
}
} else {
# linux, android
- src_lib = lib$${lib_name}.so
- vis_src_lib = lib$${vis_lib_name}.so
+ src_lib = lib$${lib_name}.$$LIB_EXTENSION
}
}
copy_lib.target = $$make_qmldir_path/$$src_lib
@@ -70,14 +95,15 @@ contains(TARGET, qml.*) {
android {
system($$QMAKE_COPY $$copy_qmldir_formatted)
- system($$QMAKE_COPY $$copy_lib_formatted)
android_qmldir.files = $$copy_qmldir.target
android_qmldir.path = /assets/qml/$$uri_replaced
- android_qmlplugin.files = $$copy_lib.target
- android_qmlplugin.path = $$target.path
- vis_lib_dir = $$OUT_PWD/../../lib/$$vis_src_lib
- vis_lib_formatted = $$replace(vis_lib_dir, /, $$QMAKE_DIR_SEP)
- ANDROID_EXTRA_LIBS = $$vis_lib_formatted
- INSTALLS += android_qmldir android_qmlplugin
+ INSTALLS += android_qmldir
+ # No need to do custom install for qml plugin lib when it is statically built into app
+ !static|!contains(QT_CONFIG, static) {
+ system($$QMAKE_COPY $$copy_lib_formatted)
+ android_qmlplugin.files = $$copy_lib.target
+ android_qmlplugin.path = $$target.path
+ INSTALLS += android_qmlplugin
+ }
}
}
diff --git a/src/datavisualization/datavisualization.pro b/src/datavisualization/datavisualization.pro
index 6107eaa6..ff87a2cd 100644
--- a/src/datavisualization/datavisualization.pro
+++ b/src/datavisualization/datavisualization.pro
@@ -4,6 +4,10 @@ TARGET = DataVisualization
QT = core gui
DEFINES += QT_DATAVISUALIZATION_LIBRARY
+
+# Fix exports in static builds for applications linking datavisualization module
+static: MODULE_DEFINES += QT_DATAVISUALIZATION_STATICLIB
+
MODULE_INCNAME = QtDataVisualization
QMAKE_DOCS = $$PWD/doc/qtdatavisualization.qdocconf
diff --git a/src/datavisualizationqml2/datavisualizationqml2.pro b/src/datavisualizationqml2/datavisualizationqml2.pro
index 7c456586..6396b86b 100644
--- a/src/datavisualizationqml2/datavisualizationqml2.pro
+++ b/src/datavisualizationqml2/datavisualizationqml2.pro
@@ -8,7 +8,11 @@ uri = QtDataVisualization
static {
DEFINES += QT_DATAVISUALIZATION_STATICLIB
- CONFIG -= static staticlib
+ # Only build qml plugin static if Qt itself is also built static
+ !contains(QT_CONFIG, static): CONFIG -= static staticlib
+
+ # Insert the plugin URI into its meta data to enable static plugin usage
+ QMAKE_MOC_OPTIONS += -Muri=$$uri
}
INCLUDEPATH += ../../include \
diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp
index 93aa2eea..a103d847 100644
--- a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp
+++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp
@@ -22,7 +22,7 @@
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
-void Datavis3Dqml2Plugin::registerTypes(const char *uri)
+void QtDataVisualizationQml2Plugin::registerTypes(const char *uri)
{
// @uri QtDataVisualization
qmlRegisterUncreatableType<const QAbstractItemModel>(uri, 1, 0, "AbstractItemModel",
diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.h b/src/datavisualizationqml2/datavisualizationqml2_plugin.h
index e01a39f4..fcf5bddf 100644
--- a/src/datavisualizationqml2/datavisualizationqml2_plugin.h
+++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.h
@@ -95,7 +95,7 @@ QML_DECLARE_TYPE(QAbstract3DInputHandler)
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
-class Datavis3Dqml2Plugin : public QQmlExtensionPlugin
+class QtDataVisualizationQml2Plugin : public QQmlExtensionPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
diff --git a/src/datavisualizationqml2/qmldir b/src/datavisualizationqml2/qmldir
index 601861d8..bbd17868 100644
--- a/src/datavisualizationqml2/qmldir
+++ b/src/datavisualizationqml2/qmldir
@@ -1,3 +1,4 @@
module QtDataVisualization
plugin datavisualizationqml2
+classname QtDataVisualizationQml2Plugin
diff --git a/tests/tests.pri b/tests/tests.pri
index fd17b360..d374ea3b 100644
--- a/tests/tests.pri
+++ b/tests/tests.pri
@@ -19,6 +19,15 @@ TEMPLATE = app
QT += datavisualization
+!static:android {
+ # Add Qt library to be loaded in shared android build
+ vis_lib_name = DataVisualization
+ vis_src_lib = lib$${vis_lib_name}.so
+ vis_lib_dir = $$OUT_PWD/../../lib/$$vis_src_lib
+ vis_lib_formatted = $$replace(vis_lib_dir, /, $$QMAKE_DIR_SEP)
+ ANDROID_EXTRA_LIBS = $$vis_lib_formatted
+}
+
contains(TARGET, qml.*) {
uri = QtDataVisualization
lib_name = datavisualizationqml2
@@ -29,46 +38,72 @@ contains(TARGET, qml.*) {
make_qmldir_target = \"$$replace(make_qmldir_path, /, $$QMAKE_DIR_SEP)\"
system($$QMAKE_MKDIR $$make_qmldir_target)
}
- copy_qmldir_examples.target = $$make_qmldir_path/qmldir
- copy_qmldir_examples.depends = $$_PRO_FILE_PWD_/../../src/$$lib_name/qmldir
- copy_qmldir_examples.commands = $(COPY_FILE) \"$$replace(copy_qmldir_examples.depends, /, $$QMAKE_DIR_SEP)\" \"$$replace(copy_qmldir_examples.target, /, $$QMAKE_DIR_SEP)\"
- QMAKE_EXTRA_TARGETS += copy_qmldir_examples
- PRE_TARGETDEPS += $$copy_qmldir_examples.target
+ copy_qmldir.target = $$make_qmldir_path/qmldir
+ copy_qmldir.depends = $$_PRO_FILE_PWD_/../../src/$$lib_name/qmldir
+ copy_qmldir_formatted = \"$$replace(copy_qmldir.depends, /, $$QMAKE_DIR_SEP)\" \"$$replace(copy_qmldir.target, /, $$QMAKE_DIR_SEP)\"
+ copy_qmldir.commands = $(COPY_FILE) $$copy_qmldir_formatted
+ QMAKE_EXTRA_TARGETS += copy_qmldir
+ PRE_TARGETDEPS += $$copy_qmldir.target
+
+ static:contains(QT_CONFIG, static) {
+ # Make import scan find our copied qmldir & statically built qml lib
+ LIB_EXTENSION = lib
+ QMLPATHS += $$DESTDIR
+ # We need to copy the qmldir & lib already at qmake run stage as import scan is done then
+ exists($$copy_qmldir.depends): system($$QMAKE_COPY $$copy_qmldir_formatted)
+ } else {
+ win32 {
+ LIB_EXTENSION = dll
+ } else {
+ mac {
+ LIB_EXTENSION = dylib
+ } else {
+ LIB_EXTENSION = so
+ }
+ }
+ }
win32 {
CONFIG(debug, release|debug) {
src_dir = debug
- src_lib = $${lib_name}d.dll
+ src_lib = $${lib_name}d.$$LIB_EXTENSION
}
CONFIG(release, release|debug){
src_dir = release
- src_lib = $${lib_name}.dll
+ src_lib = $${lib_name}.$$LIB_EXTENSION
}
} else {
src_dir = .
mac {
CONFIG(debug, release|debug) {
- src_lib = lib$${lib_name}_debug.dylib
+ src_lib = lib$${lib_name}_debug.$$LIB_EXTENSION
}
CONFIG(release, release|debug){
- src_lib = lib$${lib_name}.dylib
+ src_lib = lib$${lib_name}.$$LIB_EXTENSION
}
} else {
# linux, android
- src_lib = lib$${lib_name}.so
+ src_lib = lib$${lib_name}.$$LIB_EXTENSION
}
}
copy_lib.target = $$make_qmldir_path/$$src_lib
copy_lib.depends = $$OUT_PWD/../../src/$$lib_name/$$src_dir/$$src_lib
- copy_lib.commands = $(COPY_FILE) \"$$replace(copy_lib.depends, /, $$QMAKE_DIR_SEP)\" \"$$replace(copy_lib.target, /, $$QMAKE_DIR_SEP)\"
+ copy_lib_formatted = \"$$replace(copy_lib.depends, /, $$QMAKE_DIR_SEP)\" \"$$replace(copy_lib.target, /, $$QMAKE_DIR_SEP)\"
+ copy_lib.commands = $(COPY_FILE) $$copy_lib_formatted
QMAKE_EXTRA_TARGETS += copy_lib
PRE_TARGETDEPS += $$copy_lib.target
android {
- android_qmldir.files = $$copy_qmldir_examples.target
+ system($$QMAKE_COPY $$copy_qmldir_formatted)
+ android_qmldir.files = $$copy_qmldir.target
android_qmldir.path = /assets/qml/$$uri_replaced
- android_qmlplugin.files = $$copy_lib.target
- android_qmlplugin.path = $$target.path
- INSTALLS += android_qmldir android_qmlplugin
+ INSTALLS += android_qmldir
+ # No need to do custom install for qml plugin lib when it is statically built into app
+ !static|!contains(QT_CONFIG, static) {
+ system($$QMAKE_COPY $$copy_lib_formatted)
+ android_qmlplugin.files = $$copy_lib.target
+ android_qmlplugin.path = $$target.path
+ INSTALLS += android_qmlplugin
+ }
}
}