llvm/lldb/packages/Python/lldbsuite/test/make/Android.rules

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++