diff options
-rw-r--r-- | examples/examples.pri | 54 | ||||
-rw-r--r-- | src/datavisualization/datavisualization.pro | 4 | ||||
-rw-r--r-- | src/datavisualizationqml2/datavisualizationqml2.pro | 6 | ||||
-rw-r--r-- | src/datavisualizationqml2/datavisualizationqml2_plugin.cpp | 2 | ||||
-rw-r--r-- | src/datavisualizationqml2/datavisualizationqml2_plugin.h | 2 | ||||
-rw-r--r-- | src/datavisualizationqml2/qmldir | 1 | ||||
-rw-r--r-- | tests/tests.pri | 65 |
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 + } } } |