summaryrefslogtreecommitdiffstats
path: root/mkspecs/features
diff options
context:
space:
mode:
Diffstat (limited to 'mkspecs/features')
-rw-r--r--mkspecs/features/java.prf18
-rw-r--r--mkspecs/features/qt_android_deps.prf23
2 files changed, 32 insertions, 9 deletions
diff --git a/mkspecs/features/java.prf b/mkspecs/features/java.prf
index 6cbd690c37..25f6e66427 100644
--- a/mkspecs/features/java.prf
+++ b/mkspecs/features/java.prf
@@ -17,7 +17,10 @@ android {
CONFIG += android_app
}
-isEmpty(CLASS_DIR): CLASS_DIR = .classes
+isEmpty(CLASS_DIR) {
+ bundled_jar_file: CLASS_DIR = .classes.bundled
+ else: CLASS_DIR = .classes
+}
CONFIG -= qt
@@ -47,17 +50,16 @@ QMAKE_LIBS_OPENGL_ES2 =
QMAKE_LIBDIR =
QMAKE_EXTENSION_SHLIB = jar
-# Override linker with dex (for Android) or jar (for other java builds)
-android {
- QMAKE_LINK_O_FLAG = --output=
+# Override linker with dex (for distributable Android archives) or jar (for other java builds)
+android:!bundled_jar_file {
contains(QMAKE_HOST.os, Windows) {
- QMAKE_LINK = $$PWD/data/android/dx $$SDK_ROOT --dex
+ DEX_CMD = $$PWD/data/android/dx $$SDK_ROOT
} else {
- QMAKE_LINK = $$SDK_ROOT/platform-tools/dx --dex
+ DEX_CMD = $$SDK_ROOT/platform-tools/dx
}
+ QMAKE_LINK_SHLIB_CMD = $$DEX_CMD --dex --output $(TARGET) $$CLASS_DIR
} else {
- QMAKE_LINK_O_FLAG = "cf "
- QMAKE_LINK = jar
+ QMAKE_LINK_SHLIB_CMD = jar cf $(TARGET) -C $$CLASS_DIR .
}
# Force link step to always happen, since we are always updating the
diff --git a/mkspecs/features/qt_android_deps.prf b/mkspecs/features/qt_android_deps.prf
index 27814a90a5..ba37649201 100644
--- a/mkspecs/features/qt_android_deps.prf
+++ b/mkspecs/features/qt_android_deps.prf
@@ -17,6 +17,12 @@ ANDROID_DEPENDS_DIR = $$MODULE_QMAKE_OUTDIR/lib/
DEPENDENCY_FILE = $$ANDROID_DEPENDS_DIR$$TARGET-android-dependencies.xml
!build_pass {
+ !isEmpty(MODULE_PLUGIN_TYPES) {
+ for(PLUGIN_TYPE, MODULE_PLUGIN_TYPES) {
+ ANDROID_BUNDLED_FILES += "plugins/$$PLUGIN_TYPE"
+ }
+ }
+
!isEmpty(ANDROID_JAR_DEPENDENCIES) {
for(JAR_FILE, ANDROID_JAR_DEPENDENCIES) {
INIT_CLASS = $$section(JAR_FILE, ":", 1, 1)
@@ -26,6 +32,15 @@ DEPENDENCY_FILE = $$ANDROID_DEPENDS_DIR$$TARGET-android-dependencies.xml
}
}
+ !isEmpty(ANDROID_BUNDLED_JAR_DEPENDENCIES) {
+ for(JAR_FILE, ANDROID_BUNDLED_JAR_DEPENDENCIES) {
+ INIT_CLASS = $$section(JAR_FILE, ":", 1, 1)
+ !isEmpty(INIT_CLASS): INIT_CLASS = "initClass=\"$$INIT_CLASS\""
+ JAR_FILE = $$section(JAR_FILE, ":", 0, 0)
+ FILE_CONTENT += "<jar bundling=\"1\" file=\"$$JAR_FILE\" $$INIT_CLASS />"
+ }
+ }
+
!isEmpty(ANDROID_LIB_DEPENDENCIES) {
for(LIB_FILE, ANDROID_LIB_DEPENDENCIES) {
FILE_CONTENT += "<lib file=\"$$LIB_FILE\" />"
@@ -40,13 +55,19 @@ DEPENDENCY_FILE = $$ANDROID_DEPENDS_DIR$$TARGET-android-dependencies.xml
}
}
+ !isEmpty(ANDROID_BUNDLED_FILES) {
+ for (BUNDLED_FILE, ANDROID_BUNDLED_FILES) {
+ FILE_CONTENT += "<bundled file=\"$$BUNDLED_FILE\" />"
+ }
+ }
+
!isEmpty(FILE_CONTENT) {
FILE_CONTENT = "<rules><dependencies><lib name=\"$$TARGET\"><depends>" $$FILE_CONTENT "</depends></lib></dependencies></rules>"
write_file($$DEPENDENCY_FILE, FILE_CONTENT) | error("Aborting.")
}
}
-!isEmpty(ANDROID_JAR_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCY_REPLACEMENTS) {
+!isEmpty(ANDROID_JAR_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCY_REPLACEMENTS)|!isEmpty(ANDROID_BUNDLED_JAR_DEPENDENCIES)|!isEmpty(ANDROID_BUNDLED_FILES) {
install_dependencies_file.files = $$DEPENDENCY_FILE
install_dependencies_file.path = $$[QT_INSTALL_LIBS]
INSTALLS += install_dependencies_file