Android: update to use SDK Python script
The latest Android SDK updates deprecate the shell script
used to create a standalone toolchain. This patch updates the Makefile for
the Android test-client to use the new Python script to create the standalone
toolchains.
diff --git a/test-server/android/app/src/main/jni/NativeLibs.mk b/test-server/android/app/src/main/jni/NativeLibs.mk
index cec82be..14816de 100644
--- a/test-server/android/app/src/main/jni/NativeLibs.mk
+++ b/test-server/android/app/src/main/jni/NativeLibs.mk
@@ -78,7 +78,7 @@
APP_PLATFORM = android-21
endif
-NDK_MAKE_TOOLCHAIN := $(NDK_ROOT)/build/tools/make-standalone-toolchain.sh
+NDK_MAKE_TOOLCHAIN := $(NDK_ROOT)/build/tools/make_standalone_toolchain.py
#
# The source packages we want/need
@@ -141,14 +141,14 @@
# libraries compiled for android-21 and upwards are incompatible with devices below that version!
# http://stackoverflow.com/questions/28740315/android-ndk-getting-java-lang-unsatisfiedlinkerror-dlopen-failed-cannot-loca
#
-TARGET_X86_NDK_API := $(APP_PLATFORM)
-TARGET_X86_64_NDK_API := $(APP_PLATFORM)
-TARGET_ARM_NDK_API := $(APP_PLATFORM)
-TARGET_ARM_V7A_NDK_API := $(APP_PLATFORM)
-TARGET_ARM_V7A_HARD_NDK_API := $(APP_PLATFORM)
-TARGET_ARM64_V8A_NDK_API := $(APP_PLATFORM)
-TARGET_MIPS_NDK_API := $(APP_PLATFORM)
-TARGET_MIPS64_NDK_API := $(APP_PLATFORM)
+TARGET_X86_NDK_API := $(subst android-,,$(APP_PLATFORM))
+TARGET_X86_64_NDK_API := $(subst android-,,$(APP_PLATFORM))
+TARGET_ARM_NDK_API := $(subst android-,,$(APP_PLATFORM))
+TARGET_ARM_V7A_NDK_API := $(subst android-,,$(APP_PLATFORM))
+TARGET_ARM_V7A_HARD_NDK_API := $(subst android-,,$(APP_PLATFORM))
+TARGET_ARM64_V8A_NDK_API := $(subst android-,,$(APP_PLATFORM))
+TARGET_MIPS_NDK_API := $(subst android-,,$(APP_PLATFORM))
+TARGET_MIPS64_NDK_API := $(subst android-,,$(APP_PLATFORM))
# The configure arguments to pass to the OpenSSL Configure script
# (--prefix and --openssldir are added automaticaly).
@@ -317,71 +317,74 @@
TOOLCHAIN_MIPS := toolchains/mips
TOOLCHAIN_MIPS64 := toolchains/mips64
-# The arch names for the different toolchains
-TOOLCHAIN_X86_ARCH := x86
-TOOLCHAIN_X86_64_ARCH := x86_64
-TOOLCHAIN_ARM_ARCH := arm-linux-androideabi
-TOOLCHAIN_ARM_V7A_ARCH := arm-linux-androideabi
-TOOLCHAIN_ARM_V7A_HARD_ARCH := arm-linux-androideabi
-TOOLCHAIN_ARM64_V8A_ARCH := aarch64-linux-android
-TOOLCHAIN_MIPS_ARCH := mipsel-linux-android
-TOOLCHAIN_MIPS64_ARCH := mips64el-linux-android
-
-# Other (global) toolchain settings
-TOOLCHAIN_GCC_VERSION := 4.9
+# Use APP_STL to determine what STL to use.
+#
+ifeq ($(APP_STL),stlport_static)
+TOOLCHAIN_STL := stlport
+else ifeq ($(APP_STL),stlport_shared)
+TOOLCHAIN_STL := stlport
+else ifeq ($(APP_STL),gnustl_static)
+TOOLCHAIN_STL := gnustl
+else ifeq ($(APP_STL),gnustl_shared)
+TOOLCHAIN_STL := gnustl
+else ifeq ($(APP_STL),c++_static)
+TOOLCHAIN_STL := libc++
+else ifeq ($(APP_STL),c++_shared)
+TOOLCHAIN_STL := libc++
+endif
# The settings to use for the individual toolchains:
# x86
-TOOLCHAIN_X86_PLATFORM := $(TARGET_X86_NDK_API)
+TOOLCHAIN_X86_API := $(TARGET_X86_NDK_API)
TOOLCHAIN_X86_PREFIX := i686-linux-android
TOOLCHAIN_X86_FLAGS := -march=i686 -msse3 -mstackrealign -mfpmath=sse
TOOLCHAIN_X86_LINK :=
TOOLCHAIN_X86_PLATFORM_HEADERS := $(shell pwd)/$(TOOLCHAIN_X86)/sysroot/usr/include
TOOLCHAIN_X86_PLATFORM_LIBS := $(shell pwd)/$(TOOLCHAIN_X86)/sysroot/usr/lib
# x86_64
-TOOLCHAIN_X86_64_PLATFORM := $(TARGET_X86_64_NDK_API)
+TOOLCHAIN_X86_64_API := $(TARGET_X86_64_NDK_API)
TOOLCHAIN_X86_64_PREFIX := x86_64-linux-android
TOOLCHAIN_X86_64_FLAGS :=
TOOLCHAIN_X86_64_LINK :=
TOOLCHAIN_X86_64_PLATFORM_HEADERS := $(shell pwd)/$(TOOLCHAIN_X86_64)/sysroot/usr/include
TOOLCHAIN_X86_64_PLATFORM_LIBS := $(shell pwd)/$(TOOLCHAIN_X86_64)/sysroot/usr/lib
# arm
-TOOLCHAIN_ARM_PLATFORM := $(TARGET_ARM_NDK_API)
+TOOLCHAIN_ARM_API := $(TARGET_ARM_NDK_API)
TOOLCHAIN_ARM_PREFIX := arm-linux-androideabi
TOOLCHAIN_ARM_FLAGS := -mthumb
TOOLCHAIN_ARM_LINK :=
TOOLCHAIN_ARM_PLATFORM_HEADERS := $(shell pwd)/$(TOOLCHAIN_ARM)/sysroot/usr/include
TOOLCHAIN_ARM_PLATFORM_LIBS := $(shell pwd)/$(TOOLCHAIN_ARM)/sysroot/usr/lib
# arm-v7a
-TOOLCHAIN_ARM_V7A_PLATFORM := $(TARGET_ARM_V7A_NDK_API)
+TOOLCHAIN_ARM_V7A_API := $(TARGET_ARM_V7A_NDK_API)
TOOLCHAIN_ARM_V7A_PREFIX := arm-linux-androideabi
TOOLCHAIN_ARM_V7A_FLAGS := -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16
TOOLCHAIN_ARM_V7A_LINK := -march=armv7-a -Wl,--fix-cortex-a8
TOOLCHAIN_ARM_V7A_PLATFORM_HEADERS := $(shell pwd)/$(TOOLCHAIN_ARM_V7A)/sysroot/usr/include
TOOLCHAIN_ARM_V7A_PLATFORM_LIBS := $(shell pwd)/$(TOOLCHAIN_ARM_V7A)/sysroot/usr/lib
# arm-v7a-hard
-TOOLCHAIN_ARM_V7A_HARD_PLATFORM := $(TARGET_ARM_V7A_HARD_NDK_API)
+TOOLCHAIN_ARM_V7A_HARD_API := $(TARGET_ARM_V7A_HARD_NDK_API)
TOOLCHAIN_ARM_V7A_HARD_PREFIX := arm-linux-androideabi
TOOLCHAIN_ARM_V7A_HARD_FLAGS := -march=armv7-a -mfpu=vfpv3-d16 -mhard-float -mfloat-abi=hard -D_NDK_MATH_NO_SOFTFP=1
TOOLCHAIN_ARM_V7A_HARD_LINK := -march=armv7-a -Wl,--fix-cortex-a8 -Wl,--no-warn-mismatch -lm_hard
TOOLCHAIN_ARM_V7A_HARD_PLATFORM_HEADERS := $(shell pwd)/$(TOOLCHAIN_ARM_V7A_HARD)/sysroot/usr/include
TOOLCHAIN_ARM_V7A_HARD_PLATFORM_LIBS := $(shell pwd)/$(TOOLCHAIN_ARM_V7A_HARD)/sysroot/usr/lib
# arm64-v8a
-TOOLCHAIN_ARM64_V8A_PLATFORM := $(TARGET_ARM64_V8A_NDK_API)
+TOOLCHAIN_ARM64_V8A_API := $(TARGET_ARM64_V8A_NDK_API)
TOOLCHAIN_ARM64_V8A_PREFIX := aarch64-linux-android
TOOLCHAIN_ARM64_V8A_FLAGS :=
TOOLCHAIN_ARM64_V8A_LINK :=
TOOLCHAIN_ARM64_V8A_PLATFORM_HEADERS := $(shell pwd)/$(TOOLCHAIN_ARM64_V8A)/sysroot/usr/include
TOOLCHAIN_ARM64_V8A_PLATFORM_LIBS := $(shell pwd)/$(TOOLCHAIN_ARM64_V8A)/sysroot/usr/lib
# mips
-TOOLCHAIN_MIPS_PLATFORM := $(TARGET_MIPS_NDK_API)
+TOOLCHAIN_MIPS_API := $(TARGET_MIPS_NDK_API)
TOOLCHAIN_MIPS_PREFIX := mipsel-linux-android
TOOLCHAIN_MIPS_FLAGS :=
TOOLCHAIN_MIPS_LINK :=
TOOLCHAIN_MIPS_PLATFORM_HEADERS := $(shell pwd)/$(TOOLCHAIN_MIPS)/sysroot/usr/include
TOOLCHAIN_MIPS_PLATFORM_LIBS := $(shell pwd)/$(TOOLCHAIN_MIPS)/sysroot/usr/lib
# mips64
-TOOLCHAIN_MIPS64_PLATFORM := $(TARGET_MIPS64_NDK_API)
+TOOLCHAIN_MIPS64_API := $(TARGET_MIPS64_NDK_API)
TOOLCHAIN_MIPS64_PREFIX := mips64el-linux-android
TOOLCHAIN_MIPS64_FLAGS :=
TOOLCHAIN_MIPS64_LINK :=
@@ -703,52 +706,116 @@
toolchain-mips64: $(TOOLCHAIN_MIPS64)
$(TOOLCHAIN_X86):
+ifneq ($(TOOLCHAIN_STL),)
$(NDK_MAKE_TOOLCHAIN) \
- --platform=$(TOOLCHAIN_X86_PLATFORM) \
- --toolchain=$(TOOLCHAIN_X86_ARCH)-$(TOOLCHAIN_GCC_VERSION) \
- --install-dir=$(shell pwd)/$(TOOLCHAIN_X86)
+ --stl $(TOOLCHAIN_STL) \
+ --api $(TOOLCHAIN_X86_API) \
+ --arch x86 \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_X86)
+else
+ $(NDK_MAKE_TOOLCHAIN) \
+ --api $(TOOLCHAIN_X86_API) \
+ --arch x86 \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_X86)
+endif
$(TOOLCHAIN_X86_64):
+ifneq ($(TOOLCHAIN_STL),)
$(NDK_MAKE_TOOLCHAIN) \
- --platform=$(TOOLCHAIN_X86_64_PLATFORM) \
- --toolchain=$(TOOLCHAIN_X86_64_ARCH)-$(TOOLCHAIN_GCC_VERSION) \
- --install-dir=$(shell pwd)/$(TOOLCHAIN_X86_64)
+ --stl $(TOOLCHAIN_STL) \
+ --api $(TOOLCHAIN_X86_64_API) \
+ --arch x86_64 \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_X86_64)
+else
+ $(NDK_MAKE_TOOLCHAIN) \
+ --api $(TOOLCHAIN_X86_64_API) \
+ --arch x86_64 \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_X86_64)
+endif
$(TOOLCHAIN_ARM):
+ifneq ($(TOOLCHAIN_STL),)
$(NDK_MAKE_TOOLCHAIN) \
- --platform=$(TOOLCHAIN_ARM_PLATFORM) \
- --toolchain=$(TOOLCHAIN_ARM_ARCH)-$(TOOLCHAIN_GCC_VERSION) \
- --install-dir=$(shell pwd)/$(TOOLCHAIN_ARM)
+ --stl $(TOOLCHAIN_STL) \
+ --api $(TOOLCHAIN_ARM_API) \
+ --arch arm \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_ARM)
+else
+ $(NDK_MAKE_TOOLCHAIN) \
+ --api $(TOOLCHAIN_ARM_API) \
+ --arch arm \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_ARM)
+endif
$(TOOLCHAIN_ARM_V7A):
+ifneq ($(TOOLCHAIN_STL),)
$(NDK_MAKE_TOOLCHAIN) \
- --platform=$(TOOLCHAIN_ARM_V7A_PLATFORM) \
- --toolchain=$(TOOLCHAIN_ARM_V7A_ARCH)-$(TOOLCHAIN_GCC_VERSION) \
- --install-dir=$(shell pwd)/$(TOOLCHAIN_ARM_V7A)
+ --stl $(TOOLCHAIN_STL) \
+ --api $(TOOLCHAIN_ARM_V7A_API) \
+ --arch arm \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_ARM_V7A)
+else
+ $(NDK_MAKE_TOOLCHAIN) \
+ --api $(TOOLCHAIN_ARM_V7A_API) \
+ --arch arm \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_ARM_V7A)
+endif
$(TOOLCHAIN_ARM_V7A_HARD):
+ifneq ($(TOOLCHAIN_STL),)
$(NDK_MAKE_TOOLCHAIN) \
- --platform=$(TOOLCHAIN_ARM_V7A_HARD_PLATFORM) \
- --toolchain=$(TOOLCHAIN_ARM_V7A_HARD_ARCH)-$(TOOLCHAIN_GCC_VERSION) \
- --install-dir=$(shell pwd)/$(TOOLCHAIN_ARM_V7A_HARD)
+ --stl $(TOOLCHAIN_STL) \
+ --api $(TOOLCHAIN_ARM_V7A_HARD_API) \
+ --arch arm \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_ARM_V7A_HARD)
+else
+ $(NDK_MAKE_TOOLCHAIN) \
+ --api $(TOOLCHAIN_ARM_V7A_HARD_API) \
+ --arch arm \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_ARM_V7A_HARD)
+endif
$(TOOLCHAIN_ARM64_V8A):
+ifneq ($(TOOLCHAIN_STL),)
$(NDK_MAKE_TOOLCHAIN) \
- --platform=$(TOOLCHAIN_ARM64_V8A_PLATFORM) \
- --toolchain=$(TOOLCHAIN_ARM64_V8A_ARCH)-$(TOOLCHAIN_GCC_VERSION) \
- --install-dir=$(shell pwd)/$(TOOLCHAIN_ARM64_V8A)
+ --stl $(TOOLCHAIN_STL) \
+ --api $(TOOLCHAIN_ARM64_V8A_API) \
+ --arch arm64 \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_ARM64_V8A)
+else
+ $(NDK_MAKE_TOOLCHAIN) \
+ --api $(TOOLCHAIN_ARM64_V8A_API) \
+ --arch arm64 \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_ARM64_V8A)
+endif
$(TOOLCHAIN_MIPS):
+ifneq ($(TOOLCHAIN_STL),)
$(NDK_MAKE_TOOLCHAIN) \
- --platform=$(TOOLCHAIN_MIPS_PLATFORM) \
- --toolchain=$(TOOLCHAIN_MIPS_ARCH)-$(TOOLCHAIN_GCC_VERSION) \
- --install-dir=$(shell pwd)/$(TOOLCHAIN_MIPS)
+ --stl $(TOOLCHAIN_STL) \
+ --api $(TOOLCHAIN_MIPS_API) \
+ --arch mips \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_MIPS)
+else
+ $(NDK_MAKE_TOOLCHAIN) \
+ --api $(TOOLCHAIN_MIPS_API) \
+ --arch mips \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_MIPS)
+endif
$(TOOLCHAIN_MIPS64):
+ifneq ($(TOOLCHAIN_STL),)
$(NDK_MAKE_TOOLCHAIN) \
- --platform=$(TOOLCHAIN_MIPS64_PLATFORM) \
- --toolchain=$(TOOLCHAIN_MIPS64_ARCH)-$(TOOLCHAIN_GCC_VERSION) \
- --install-dir=$(shell pwd)/$(TOOLCHAIN_MIPS64)
+ --stl $(TOOLCHAIN_STL) \
+ --api $(TOOLCHAIN_MIPS64_API) \
+ --arch mips64 \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_MIPS64)
+else
+ $(NDK_MAKE_TOOLCHAIN) \
+ --api $(TOOLCHAIN_MIPS64_API) \
+ --arch mips64 \
+ --install-dir $(shell pwd)/$(TOOLCHAIN_MIPS64)
+endif
#
# Rules to build zlib