Android: update to use SDK Python script
authorAlexander Bruines <alexander.bruines@gmail.com>
Mon, 6 Jun 2016 18:30:03 +0000 (20:30 +0200)
committerAndy Green <andy@warmcat.com>
Mon, 6 Jun 2016 18:42:32 +0000 (02:42 +0800)
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.

test-server/android/app/src/main/jni/NativeLibs.mk

index cec82be..14816de 100644 (file)
@@ -78,7 +78,7 @@ ifeq ($(APP_PLATFORM),)
 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 @@ TARGET_MIPS64 := mips64
 # 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_ARM64_V8A := toolchains/arm64-v8a
 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-mips: $(TOOLCHAIN_MIPS)
 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) \
+         --stl $(TOOLCHAIN_STL) \
+         --api $(TOOLCHAIN_X86_64_API) \
+         --arch x86_64 \
+         --install-dir $(shell pwd)/$(TOOLCHAIN_X86_64)
+else
        $(NDK_MAKE_TOOLCHAIN) \
-         --platform=$(TOOLCHAIN_X86_64_PLATFORM) \
-         --toolchain=$(TOOLCHAIN_X86_64_ARCH)-$(TOOLCHAIN_GCC_VERSION) \
-         --install-dir=$(shell pwd)/$(TOOLCHAIN_X86_64)
+         --api $(TOOLCHAIN_X86_64_API) \
+         --arch x86_64 \
+         --install-dir $(shell pwd)/$(TOOLCHAIN_X86_64)
+endif
 
 $(TOOLCHAIN_ARM):
+ifneq ($(TOOLCHAIN_STL),)
+       $(NDK_MAKE_TOOLCHAIN) \
+         --stl $(TOOLCHAIN_STL) \
+         --api $(TOOLCHAIN_ARM_API) \
+         --arch arm \
+         --install-dir $(shell pwd)/$(TOOLCHAIN_ARM)
+else
        $(NDK_MAKE_TOOLCHAIN) \
-         --platform=$(TOOLCHAIN_ARM_PLATFORM) \
-         --toolchain=$(TOOLCHAIN_ARM_ARCH)-$(TOOLCHAIN_GCC_VERSION) \
-         --install-dir=$(shell pwd)/$(TOOLCHAIN_ARM)
+         --api $(TOOLCHAIN_ARM_API) \
+         --arch arm \
+         --install-dir $(shell pwd)/$(TOOLCHAIN_ARM)
+endif
 
 $(TOOLCHAIN_ARM_V7A):
+ifneq ($(TOOLCHAIN_STL),)
+       $(NDK_MAKE_TOOLCHAIN) \
+         --stl $(TOOLCHAIN_STL) \
+         --api $(TOOLCHAIN_ARM_V7A_API) \
+         --arch arm \
+         --install-dir $(shell pwd)/$(TOOLCHAIN_ARM_V7A)
+else
        $(NDK_MAKE_TOOLCHAIN) \
-         --platform=$(TOOLCHAIN_ARM_V7A_PLATFORM) \
-         --toolchain=$(TOOLCHAIN_ARM_V7A_ARCH)-$(TOOLCHAIN_GCC_VERSION) \
-         --install-dir=$(shell pwd)/$(TOOLCHAIN_ARM_V7A)
+         --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) \
+         --stl $(TOOLCHAIN_STL) \
+         --api $(TOOLCHAIN_ARM_V7A_HARD_API) \
+         --arch arm \
+         --install-dir $(shell pwd)/$(TOOLCHAIN_ARM_V7A_HARD)
+else
        $(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)
+         --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