1061da546SpatrickNDK_ROOT := $(shell dirname $(CC))/../../../../..
2061da546Spatrick
3061da546Spatrickifeq "$(findstring 64, $(ARCH))" "64"
4061da546Spatrick	# lowest 64-bit API level
5061da546Spatrick	API_LEVEL := 21
6061da546Spatrickelse ifeq "$(ARCH)" "i386"
7061da546Spatrick	# clone(2) declaration is present only since this api level
8061da546Spatrick	API_LEVEL := 17
9061da546Spatrickelse
10061da546Spatrick	# lowest supported 32-bit API level
11061da546Spatrick	API_LEVEL := 16
12061da546Spatrickendif
13061da546Spatrick
14061da546Spatrickifeq "$(ARCH)" "arm"
15061da546Spatrick	SYSROOT_ARCH := arm
16061da546Spatrick	STL_ARCH := armeabi-v7a
17061da546Spatrick	TRIPLE := armv7-none-linux-androideabi
18061da546Spatrick	ARCH_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm
19061da546Spatrickelse ifeq "$(ARCH)" "aarch64"
20061da546Spatrick	SYSROOT_ARCH := arm64
21061da546Spatrick	STL_ARCH := arm64-v8a
22061da546Spatrick	TRIPLE := aarch64-none-linux-android
23061da546Spatrickelse ifeq "$(ARCH)" "i386"
24061da546Spatrick	SYSROOT_ARCH := x86
25061da546Spatrick	STL_ARCH := x86
26061da546Spatrick	TRIPLE := i686-none-linux-android
27061da546Spatrickelse ifeq "$(ARCH)" "mips64r6"
28061da546Spatrick	SYSROOT_ARCH := mips64
29061da546Spatrick	STL_ARCH := mips64
30061da546Spatrick	TRIPLE := mips64el-none-linux-android
31061da546Spatrickelse ifeq "$(ARCH)" "mips32"
32061da546Spatrick	SYSROOT_ARCH := mips
33061da546Spatrick	STL_ARCH := mips
34061da546Spatrick	TRIPLE := mipsel-none-linux-android
35061da546Spatrickelse
36061da546Spatrick	SYSROOT_ARCH := $(ARCH)
37061da546Spatrick	STL_ARCH := $(ARCH)
38061da546Spatrick	TRIPLE := $(ARCH)-none-linux-android
39061da546Spatrickendif
40061da546Spatrick
41061da546Spatrickifeq "$(findstring 86,$(ARCH))" "86"
42061da546Spatrick	TOOLCHAIN_DIR := $(STL_ARCH)-4.9
43061da546Spatrickelse ifeq "$(ARCH)" "arm"
44061da546Spatrick	TOOLCHAIN_DIR := arm-linux-androideabi-4.9
45061da546Spatrickelse
46061da546Spatrick	TOOLCHAIN_DIR := $(subst -none,,$(TRIPLE))-4.9
47061da546Spatrickendif
48061da546Spatrick
49061da546Spatrickifeq "$(ARCH)" "arm"
50061da546Spatrick	TOOL_PREFIX := arm-linux-androideabi
51061da546Spatrickelse
52061da546Spatrick	TOOL_PREFIX := $(subst -none,,$(TRIPLE))
53061da546Spatrickendif
54061da546Spatrick
55061da546Spatrickifeq "$(HOST_OS)" "Linux"
56061da546Spatrick	HOST_TAG := linux-x86_64
57061da546Spatrickelse ifeq "$(HOST_OS)" "Darwin"
58061da546Spatrick	HOST_TAG := darwin-x86_64
59061da546Spatrickelse
60061da546Spatrick	HOST_TAG := windows-x86_64
61061da546Spatrickendif
62061da546Spatrick
63061da546SpatrickGCC_TOOLCHAIN = $(NDK_ROOT)/toolchains/$(TOOLCHAIN_DIR)/prebuilt/$(HOST_TAG)
64061da546Spatrick
65061da546SpatrickOBJCOPY ?= $(GCC_TOOLCHAIN)/bin/$(TOOL_PREFIX)-objcopy
66061da546SpatrickARCHIVER ?= $(GCC_TOOLCHAIN)/bin/$(TOOL_PREFIX)-ar
67061da546Spatrick
68061da546Spatrickifeq "$(findstring clang,$(CC))" "clang"
69*f6aab3d8Srobert	ARCH_CFLAGS += -target $(TRIPLE) --gcc-toolchain=$(GCC_TOOLCHAIN)
70*f6aab3d8Srobert	ARCH_LDFLAGS += -target $(TRIPLE) --gcc-toolchain=$(GCC_TOOLCHAIN)
71061da546Spatrickendif
72061da546Spatrick
73061da546SpatrickARCH_CFLAGS += --sysroot=$(NDK_ROOT)/sysroot \
74061da546Spatrick	-isystem $(NDK_ROOT)/sysroot/usr/include/$(TOOL_PREFIX) \
75061da546Spatrick	-D__ANDROID_API__=$(API_LEVEL) \
76061da546Spatrick	-isystem $(NDK_ROOT)/platforms/android-$(API_LEVEL)/arch-$(SYSROOT_ARCH)/usr/include
77061da546Spatrick
78061da546SpatrickARCH_LDFLAGS += --sysroot=$(NDK_ROOT)/platforms/android-$(API_LEVEL)/arch-$(SYSROOT_ARCH) -lm
79061da546Spatrick
80061da546SpatrickARCH_CXXFLAGS += \
81061da546Spatrick	-isystem $(NDK_ROOT)/sources/cxx-stl/llvm-libc++/include \
82061da546Spatrick	-isystem $(NDK_ROOT)/sources/android/support/include \
83061da546Spatrick	-isystem $(NDK_ROOT)/sources/cxx-stl/llvm-libc++abi/include
84061da546Spatrick
85061da546SpatrickARCH_LDFLAGS += \
86061da546Spatrick	-L$(NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(STL_ARCH) \
87061da546Spatrick	$(NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(STL_ARCH)/libc++_static.a \
88061da546Spatrick	-lc++abi \
89061da546Spatrick	-nostdlib++
90