1bc58f9aaSPavel LabathNDK_ROOT := $(shell dirname $(CC))/../../../../..
2bc58f9aaSPavel Labath
3bc58f9aaSPavel Labathifeq "$(findstring 64, $(ARCH))" "64"
4bc58f9aaSPavel Labath	# lowest 64-bit API level
5bc58f9aaSPavel Labath	API_LEVEL := 21
6bc58f9aaSPavel Labathelse ifeq "$(ARCH)" "i386"
7bc58f9aaSPavel Labath	# clone(2) declaration is present only since this api level
8bc58f9aaSPavel Labath	API_LEVEL := 17
9bc58f9aaSPavel Labathelse
10bc58f9aaSPavel Labath	# lowest supported 32-bit API level
1173447900SPavel Labath	API_LEVEL := 16
12bc58f9aaSPavel Labathendif
13bc58f9aaSPavel Labath
14bc58f9aaSPavel Labathifeq "$(ARCH)" "arm"
15bc58f9aaSPavel Labath	SYSROOT_ARCH := arm
16bc58f9aaSPavel Labath	STL_ARCH := armeabi-v7a
179ef57780SPavel Labath	TRIPLE := armv7-none-linux-androideabi
18bc58f9aaSPavel Labath	ARCH_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm
19bc58f9aaSPavel Labathelse ifeq "$(ARCH)" "aarch64"
20bc58f9aaSPavel Labath	SYSROOT_ARCH := arm64
21bc58f9aaSPavel Labath	STL_ARCH := arm64-v8a
2273447900SPavel Labath	TRIPLE := aarch64-none-linux-android
23bc58f9aaSPavel Labathelse ifeq "$(ARCH)" "i386"
24bc58f9aaSPavel Labath	SYSROOT_ARCH := x86
25bc58f9aaSPavel Labath	STL_ARCH := x86
269ef57780SPavel Labath	TRIPLE := i686-none-linux-android
27bc58f9aaSPavel Labathelse ifeq "$(ARCH)" "mips64r6"
28bc58f9aaSPavel Labath	SYSROOT_ARCH := mips64
29bc58f9aaSPavel Labath	STL_ARCH := mips64
309ef57780SPavel Labath	TRIPLE := mips64el-none-linux-android
31bc58f9aaSPavel Labathelse ifeq "$(ARCH)" "mips32"
32bc58f9aaSPavel Labath	SYSROOT_ARCH := mips
33bc58f9aaSPavel Labath	STL_ARCH := mips
349ef57780SPavel Labath	TRIPLE := mipsel-none-linux-android
35bc58f9aaSPavel Labathelse
36bc58f9aaSPavel Labath	SYSROOT_ARCH := $(ARCH)
37bc58f9aaSPavel Labath	STL_ARCH := $(ARCH)
389ef57780SPavel Labath	TRIPLE := $(ARCH)-none-linux-android
398faf9b75SPavel Labathendif
408faf9b75SPavel Labath
418faf9b75SPavel Labathifeq "$(findstring 86,$(ARCH))" "86"
428faf9b75SPavel Labath	TOOLCHAIN_DIR := $(STL_ARCH)-4.9
439ef57780SPavel Labathelse ifeq "$(ARCH)" "arm"
449ef57780SPavel Labath	TOOLCHAIN_DIR := arm-linux-androideabi-4.9
458faf9b75SPavel Labathelse
469ef57780SPavel Labath	TOOLCHAIN_DIR := $(subst -none,,$(TRIPLE))-4.9
478faf9b75SPavel Labathendif
488faf9b75SPavel Labath
49efe4e412SPavel Labathifeq "$(ARCH)" "arm"
50efe4e412SPavel Labath	TOOL_PREFIX := arm-linux-androideabi
51efe4e412SPavel Labathelse
52efe4e412SPavel Labath	TOOL_PREFIX := $(subst -none,,$(TRIPLE))
53efe4e412SPavel Labathendif
54efe4e412SPavel Labath
558faf9b75SPavel Labathifeq "$(HOST_OS)" "Linux"
568faf9b75SPavel Labath	HOST_TAG := linux-x86_64
578faf9b75SPavel Labathelse ifeq "$(HOST_OS)" "Darwin"
588faf9b75SPavel Labath	HOST_TAG := darwin-x86_64
598faf9b75SPavel Labathelse
608faf9b75SPavel Labath	HOST_TAG := windows-x86_64
618faf9b75SPavel Labathendif
628faf9b75SPavel Labath
63efe4e412SPavel LabathGCC_TOOLCHAIN = $(NDK_ROOT)/toolchains/$(TOOLCHAIN_DIR)/prebuilt/$(HOST_TAG)
64efe4e412SPavel Labath
65efe4e412SPavel LabathOBJCOPY ?= $(GCC_TOOLCHAIN)/bin/$(TOOL_PREFIX)-objcopy
6659bc6d1cSPavel LabathARCHIVER ?= $(GCC_TOOLCHAIN)/bin/$(TOOL_PREFIX)-ar
67efe4e412SPavel Labath
688faf9b75SPavel Labathifeq "$(findstring clang,$(CC))" "clang"
69*40aab041SFangrui Song	ARCH_CFLAGS += -target $(TRIPLE) --gcc-toolchain=$(GCC_TOOLCHAIN)
70*40aab041SFangrui Song	ARCH_LDFLAGS += -target $(TRIPLE) --gcc-toolchain=$(GCC_TOOLCHAIN)
71bc58f9aaSPavel Labathendif
72bc58f9aaSPavel Labath
7373447900SPavel LabathARCH_CFLAGS += --sysroot=$(NDK_ROOT)/sysroot \
7473447900SPavel Labath	-isystem $(NDK_ROOT)/sysroot/usr/include/$(TOOL_PREFIX) \
75e5001fe5SAlex Langford	-D__ANDROID_API__=$(API_LEVEL) \
76e5001fe5SAlex Langford	-isystem $(NDK_ROOT)/platforms/android-$(API_LEVEL)/arch-$(SYSROOT_ARCH)/usr/include
77e5001fe5SAlex Langford
787163ecb4SPavel LabathARCH_LDFLAGS += --sysroot=$(NDK_ROOT)/platforms/android-$(API_LEVEL)/arch-$(SYSROOT_ARCH) -lm
797163ecb4SPavel Labath
80733ad45bSPavel LabathARCH_CXXFLAGS += \
817163ecb4SPavel Labath	-isystem $(NDK_ROOT)/sources/cxx-stl/llvm-libc++/include \
827163ecb4SPavel Labath	-isystem $(NDK_ROOT)/sources/android/support/include \
837163ecb4SPavel Labath	-isystem $(NDK_ROOT)/sources/cxx-stl/llvm-libc++abi/include
847163ecb4SPavel Labath
857163ecb4SPavel LabathARCH_LDFLAGS += \
867163ecb4SPavel Labath	-L$(NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(STL_ARCH) \
87695f7821SAlex Langford	$(NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(STL_ARCH)/libc++_static.a \
88e5001fe5SAlex Langford	-lc++abi \
89e5001fe5SAlex Langford	-nostdlib++
90