e5024c219f
"system" refers to the system's native shell, which is what qmake's system() invokes, and whose convention by far most commands invoked from a makefile will need. "shell" refers to the shell invoked by make, which diverges from the system shell only when qmake/mingw32-make is called from an msys shell. its conventions need to be used for anything the shell itself does (e.g., assembling env variables, but also command line argument unquoting) and the commands the mkspec sets according to the shell (e.g., QMAKE_MOVE). Change-Id: I0000aa9417c199cf8a810619d31ded24bb0675f9 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
88 lines
3.5 KiB
Plaintext
88 lines
3.5 KiB
Plaintext
TEMPLATE = lib
|
|
android {
|
|
isEmpty(SDK_ROOT): SDK_ROOT = $$(ANDROID_SDK_ROOT)
|
|
isEmpty(SDK_ROOT): SDK_ROOT = $$DEFAULT_ANDROID_SDK_ROOT
|
|
|
|
API_VERSION_TO_USE = $$(ANDROID_API_VERSION)
|
|
isEmpty(API_VERSION_TO_USE): API_VERSION_TO_USE = $$API_VERSION
|
|
isEmpty(API_VERSION_TO_USE): API_VERSION_TO_USE = android-10
|
|
|
|
isEmpty(BUILD_TOOLS_REVISION) {
|
|
BUILD_TOOLS_REVISION = $$(ANDROID_BUILD_TOOLS_REVISION)
|
|
isEmpty(BUILD_TOOLS_REVISION) {
|
|
BUILD_TOOLS_REVISIONS = $$files($$SDK_ROOT/build-tools/*)
|
|
for (REVISION, BUILD_TOOLS_REVISIONS) {
|
|
BASENAME = $$basename(REVISION)
|
|
greaterThan(BASENAME, $$BUILD_TOOLS_REVISION): BUILD_TOOLS_REVISION = $$BASENAME
|
|
}
|
|
}
|
|
}
|
|
|
|
ANDROID_JAR_FILE = $$SDK_ROOT/platforms/$$API_VERSION_TO_USE/android.jar
|
|
!exists($$ANDROID_JAR_FILE) {
|
|
error("The Path $$ANDROID_JAR_FILE does not exist. Make sure the ANDROID_SDK_ROOT and ANDROID_API_VERSION environment variables are correctly set.")
|
|
}
|
|
JAVACLASSPATH += $$ANDROID_JAR_FILE
|
|
|
|
# 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 -Xlint:unchecked -bootclasspath $$ANDROID_JAR_FILE -cp $$shell_quote($$system_path($$join(JAVACLASSPATH, $$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
|