aboutsummaryrefslogtreecommitdiff
path: root/lldb/packages/Python/lldbsuite/test/make/Android.rules
blob: 44aedf7248419e7ce1011f2c7677e41c82bbe7c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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++