| NDK_ROOT := $(shell dirname $(CC))/../../../../.. |
| |
| ifeq "$(HOST_OS)" "Linux" |
| HOST_TAG := linux-x86_64 |
| else ifeq "$(HOST_OS)" "Darwin" |
| HOST_TAG := darwin-x86_64 |
| else |
| HOST_TAG := windows-x86_64 |
| endif |
| |
| TOOLCHAIN_ROOT := $(NDK_ROOT)/toolchains/llvm/prebuilt/$(HOST_TAG) |
| TOOLCHAIN_SYSROOT := $(TOOLCHAIN_ROOT)/sysroot |
| |
| OBJCOPY ?= $(TOOLCHAIN_ROOT)/bin/llvm-objcopy |
| ARCHIVER ?= $(TOOLCHAIN_ROOT)/bin/llvm-ar |
| |
| ifeq "$(wildcard $(TOOLCHAIN_SYSROOT)/.)" "" |
| # Compiling test inferiors for Android requires an NDK with the unified |
| # toolchain introduced in version r19. |
| $(error "No unified toolchain sysroot found in $(NDK_ROOT). NDK must be r19 or later.") |
| endif |
| |
| ifeq "$(ARCH)" "arm" |
| TRIPLE := armv7-none-linux-androideabi |
| ARCH_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm |
| else ifeq "$(ARCH)" "aarch64" |
| TRIPLE := aarch64-none-linux-android |
| else ifeq "$(ARCH)" "i386" |
| TRIPLE := i686-none-linux-android |
| else |
| TRIPLE := $(ARCH)-none-linux-android |
| endif |
| |
| # lowest 64-bit API level |
| API_LEVEL := 21 |
| |
| ifeq "$(ARCH)" "arm" |
| ARCH_DIR := arm-linux-androideabi |
| else |
| ARCH_DIR := $(subst -none,,$(TRIPLE)) |
| endif |
| |
| ARCH_CFLAGS += \ |
| --target=$(TRIPLE) \ |
| --sysroot=$(TOOLCHAIN_SYSROOT) \ |
| -D__ANDROID_API__=$(API_LEVEL) |
| |
| ARCH_CXXFLAGS += \ |
| -isystem $(TOOLCHAIN_SYSROOT)/usr/include/c++/v1 |
| |
| ARCH_LDFLAGS += \ |
| --target=$(TRIPLE) \ |
| --sysroot=$(TOOLCHAIN_SYSROOT) \ |
| --prefix=$(TOOLCHAIN_SYSROOT)/usr/lib/$(ARCH_DIR)/$(API_LEVEL) \ |
| -L$(TOOLCHAIN_SYSROOT)/usr/lib/$(ARCH_DIR)/$(API_LEVEL) \ |
| $(TOOLCHAIN_SYSROOT)/usr/lib/$(ARCH_DIR)/libc++_static.a \ |
| -lm \ |
| -lc++abi \ |
| -nostdlib++ |