680b6b2192
Due to the way the DEX_CMD is formatted on Windows this would break every time. Since we actually bundle dx.bat in the repository, there's no need to check for its existence, so the easy fix is just to move the existence check into the code path where it's run from the SDK. Task-number: QTBUG-31405 Change-Id: If1aeb744d3abbd2488153b13aac401436965074e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Ray Donnelly <mingw.android@gmail.com>
75 lines
2.8 KiB
Plaintext
75 lines
2.8 KiB
Plaintext
TEMPLATE = lib
|
|
android {
|
|
isEmpty(SDK_ROOT): SDK_ROOT = $$(ANDROID_SDK_ROOT)
|
|
isEmpty(SDK_ROOT): SDK_ROOT = $$DEFAULT_ANDROID_SDK_ROOT
|
|
isEmpty(API_VERSION) {
|
|
API_VERSION = $$(ANDROID_API_VERSION)
|
|
isEmpty(API_VERSION): API_VERSION = android-10
|
|
}
|
|
|
|
isEmpty(BUILD_TOOLS_REVISION) {
|
|
BUILD_TOOLS_REVISION = $$(ANDROID_BUILD_TOOLS_REVISION)
|
|
isEmpty(BUILD_TOOLS_REVISION): BUILD_TOOLS_REVISION = 17.0.0
|
|
}
|
|
|
|
!exists($$SDK_ROOT/platforms/$$API_VERSION/android.jar) {
|
|
error("The Path $$SDK_ROOT/platforms/$$API_VERSION/android.jar does not exist. Make sure the ANDROID_SDK_ROOT and ANDROID_API_VERSION environment variables are correctly set.")
|
|
}
|
|
JAVACLASSPATH += $$SDK_ROOT/platforms/$$API_VERSION/android.jar
|
|
|
|
# FIXME: This is a hack to work around some hardcoded values in the android.prf. The
|
|
# android.prf should be fixed and this should be removed.
|
|
CONFIG += android_app
|
|
}
|
|
|
|
isEmpty(CLASS_DIR) {
|
|
bundled_jar_file: CLASS_DIR = .classes.bundled
|
|
else: CLASS_DIR = .classes
|
|
}
|
|
|
|
CONFIG -= qt
|
|
|
|
# Without these, qmake adds a name prefix and versioning postfixes (as well as file
|
|
# links) to the target. This is hardcoded in the qmake code, so for now we use
|
|
# the plugin configs to get what we want.
|
|
CONFIG += plugin no_plugin_name_prefix
|
|
|
|
javac.input = JAVASOURCES
|
|
javac.output = $$CLASS_DIR
|
|
javac.CONFIG += combine
|
|
javac.commands = javac -source 6 -target 6 -cp $$shell_quote($$shell_path($$join(JAVACLASSPATH, $$QMAKE_DIRLIST_SEP))) -d $$shell_quote($$CLASS_DIR) ${QMAKE_FILE_IN}
|
|
# Force rebuild every time, because we don't know the paths of the destination files
|
|
# as they depend on the code.
|
|
javac.depends = FORCE
|
|
QMAKE_EXTRA_COMPILERS += javac
|
|
|
|
mkpath($$absolute_path($$CLASS_DIR, $$OUT_PWD)) | error("Aborting.")
|
|
|
|
# Disable all linker flags since we are overriding the regular linker
|
|
QMAKE_LFLAGS =
|
|
QMAKE_CFLAGS =
|
|
QMAKE_LFLAGS_RPATH =
|
|
QMAKE_LFLAGS_PLUGIN =
|
|
QMAKE_LIBS =
|
|
QMAKE_LIBS_OPENGL_ES2 =
|
|
QMAKE_LIBDIR =
|
|
QMAKE_EXTENSION_SHLIB = jar
|
|
|
|
# Override linker with dex (for distributable Android archives) or jar (for other java builds)
|
|
android:!bundled_jar_file {
|
|
contains(QMAKE_HOST.os, Windows) {
|
|
DEX_CMD = $$PWD/data/android/dx $$SDK_ROOT
|
|
} else {
|
|
DEX_CMD = $$SDK_ROOT/platform-tools/dx
|
|
!exists($$DEX_CMD): DEX_CMD = $$SDK_ROOT/build-tools/$$BUILD_TOOLS_REVISION/dx
|
|
!exists($$DEX_CMD): error("The path $$DEX_CMD does not exist. Please set the environment variable ANDROID_BUILD_TOOLS_REVISION to the revision of the build tools installed in your Android SDK.")
|
|
}
|
|
QMAKE_LINK_SHLIB_CMD = $$DEX_CMD --dex --output $(TARGET) $$CLASS_DIR
|
|
} else {
|
|
QMAKE_LINK_SHLIB_CMD = jar cf $(TARGET) -C $$CLASS_DIR .
|
|
}
|
|
|
|
# Force link step to always happen, since we are always updating the
|
|
# .class files
|
|
PRE_TARGETDEPS += FORCE
|