60 lines · plain
1NDK_ROOT := $(shell dirname $(CC))/../../../../..2 3ifeq "$(HOST_OS)" "Linux"4 HOST_TAG := linux-x86_645else ifeq "$(HOST_OS)" "Darwin"6 HOST_TAG := darwin-x86_647else8 HOST_TAG := windows-x86_649endif10 11TOOLCHAIN_ROOT := $(NDK_ROOT)/toolchains/llvm/prebuilt/$(HOST_TAG)12TOOLCHAIN_SYSROOT := $(TOOLCHAIN_ROOT)/sysroot13 14OBJCOPY ?= $(TOOLCHAIN_ROOT)/bin/llvm-objcopy15ARCHIVER ?= $(TOOLCHAIN_ROOT)/bin/llvm-ar16 17ifeq "$(wildcard $(TOOLCHAIN_SYSROOT)/.)" ""18# Compiling test inferiors for Android requires an NDK with the unified19# toolchain introduced in version r19.20$(error "No unified toolchain sysroot found in $(NDK_ROOT). NDK must be r19 or later.")21endif22 23ifeq "$(ARCH)" "arm"24 TRIPLE := armv7-none-linux-androideabi25 ARCH_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm26else ifeq "$(ARCH)" "aarch64"27 TRIPLE := aarch64-none-linux-android28else ifeq "$(ARCH)" "i386"29 TRIPLE := i686-none-linux-android30else31 TRIPLE := $(ARCH)-none-linux-android32endif33 34# lowest 64-bit API level35API_LEVEL := 2136 37ifeq "$(ARCH)" "arm"38 ARCH_DIR := arm-linux-androideabi39else40 ARCH_DIR := $(subst -none,,$(TRIPLE))41endif42 43ARCH_CFLAGS += \44 --target=$(TRIPLE) \45 --sysroot=$(TOOLCHAIN_SYSROOT) \46 -D__ANDROID_API__=$(API_LEVEL)47 48ARCH_CXXFLAGS += \49 -isystem $(TOOLCHAIN_SYSROOT)/usr/include/c++/v150 51ARCH_LDFLAGS += \52 --target=$(TRIPLE) \53 --sysroot=$(TOOLCHAIN_SYSROOT) \54 --prefix=$(TOOLCHAIN_SYSROOT)/usr/lib/$(ARCH_DIR)/$(API_LEVEL) \55 -L$(TOOLCHAIN_SYSROOT)/usr/lib/$(ARCH_DIR)/$(API_LEVEL) \56 $(TOOLCHAIN_SYSROOT)/usr/lib/$(ARCH_DIR)/libc++_static.a \57 -lm \58 -lc++abi \59 -nostdlib++60