1bd8db01c4
Google moved dx.bat into a new build-tools/VERSION folder meaning our dx.bat no longer found dx.jar. Fix this by passing into our dx.bat, the location of the real dx.bat Removed hardcoded 17.0.0 and %ANDROID_BUILD_TOOLS_REVISION% path searches. Change-Id: I91c12c01745d6f12edbd126102b8f06eba291402 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
81 lines
3.2 KiB
Plaintext
81 lines
3.2 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) {
|
|
# The location where dx.bat expects itself to be found is used as the landmark instead
|
|
# of the base sdk folder.
|
|
# Doing it this way makes this logic more similar to the other platforms and
|
|
# also means that our dx.bat is more like Google's dx.bat
|
|
DEX_BAT = $$SDK_ROOT/platform-tools/dx.bat
|
|
!exists($$DEX_BAT): DEX_BAT = $$SDK_ROOT/build-tools/$$BUILD_TOOLS_REVISION/dx.bat
|
|
DEX_CMD = $$PWD/data/android/dx $$DEX_BAT
|
|
} 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
|