mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-07 10:56:06 +00:00

Unified headers will be the only way to build applications in NDK r16, and it also works with NDK r15. This also bumps the minimum supported android version to 16. llvm-svn: 316985
95 lines
2.7 KiB
Plaintext
95 lines
2.7 KiB
Plaintext
NDK_ROOT := $(shell dirname $(CC))/../../../../..
|
|
|
|
ifeq "$(findstring 64, $(ARCH))" "64"
|
|
# lowest 64-bit API level
|
|
API_LEVEL := 21
|
|
else ifeq "$(ARCH)" "i386"
|
|
# clone(2) declaration is present only since this api level
|
|
API_LEVEL := 17
|
|
else
|
|
# lowest supported 32-bit API level
|
|
API_LEVEL := 16
|
|
endif
|
|
|
|
ifeq "$(ARCH)" "arm"
|
|
SYSROOT_ARCH := arm
|
|
STL_ARCH := armeabi-v7a
|
|
TRIPLE := armv7-none-linux-androideabi
|
|
ARCH_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm
|
|
else ifeq "$(ARCH)" "aarch64"
|
|
SYSROOT_ARCH := arm64
|
|
STL_ARCH := arm64-v8a
|
|
TRIPLE := aarch64-none-linux-android
|
|
else ifeq "$(ARCH)" "i386"
|
|
SYSROOT_ARCH := x86
|
|
STL_ARCH := x86
|
|
TRIPLE := i686-none-linux-android
|
|
else ifeq "$(ARCH)" "mips64r6"
|
|
SYSROOT_ARCH := mips64
|
|
STL_ARCH := mips64
|
|
TRIPLE := mips64el-none-linux-android
|
|
else ifeq "$(ARCH)" "mips32"
|
|
SYSROOT_ARCH := mips
|
|
STL_ARCH := mips
|
|
TRIPLE := mipsel-none-linux-android
|
|
else
|
|
SYSROOT_ARCH := $(ARCH)
|
|
STL_ARCH := $(ARCH)
|
|
TRIPLE := $(ARCH)-none-linux-android
|
|
endif
|
|
|
|
ifeq "$(findstring 86,$(ARCH))" "86"
|
|
TOOLCHAIN_DIR := $(STL_ARCH)-4.9
|
|
else ifeq "$(ARCH)" "arm"
|
|
TOOLCHAIN_DIR := arm-linux-androideabi-4.9
|
|
else
|
|
TOOLCHAIN_DIR := $(subst -none,,$(TRIPLE))-4.9
|
|
endif
|
|
|
|
ifeq "$(ARCH)" "arm"
|
|
TOOL_PREFIX := arm-linux-androideabi
|
|
else
|
|
TOOL_PREFIX := $(subst -none,,$(TRIPLE))
|
|
endif
|
|
|
|
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
|
|
|
|
GCC_TOOLCHAIN = $(NDK_ROOT)/toolchains/$(TOOLCHAIN_DIR)/prebuilt/$(HOST_TAG)
|
|
|
|
OBJCOPY ?= $(GCC_TOOLCHAIN)/bin/$(TOOL_PREFIX)-objcopy
|
|
ARCHIVER ?= $(GCC_TOOLCHAIN)/bin/$(TOOL_PREFIX)-ar
|
|
|
|
ifeq "$(findstring clang,$(CC))" "clang"
|
|
ARCH_CFLAGS += -target $(TRIPLE) -gcc-toolchain $(GCC_TOOLCHAIN)
|
|
ARCH_LDFLAGS += -target $(TRIPLE) -gcc-toolchain $(GCC_TOOLCHAIN)
|
|
endif
|
|
|
|
ARCH_CFLAGS += --sysroot=$(NDK_ROOT)/sysroot \
|
|
-isystem $(NDK_ROOT)/sysroot/usr/include/$(TOOL_PREFIX) \
|
|
-D__ANDROID_API__=$(API_LEVEL)
|
|
ARCH_LDFLAGS += --sysroot=$(NDK_ROOT)/platforms/android-$(API_LEVEL)/arch-$(SYSROOT_ARCH) -lm
|
|
|
|
ifeq (1,$(USE_LIBCPP))
|
|
ARCH_CFLAGS += \
|
|
-isystem $(NDK_ROOT)/sources/cxx-stl/llvm-libc++/include \
|
|
-isystem $(NDK_ROOT)/sources/android/support/include \
|
|
-isystem $(NDK_ROOT)/sources/cxx-stl/llvm-libc++abi/include
|
|
|
|
ARCH_LDFLAGS += \
|
|
-L$(NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(STL_ARCH) \
|
|
$(NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(STL_ARCH)/libc++.a
|
|
else
|
|
ARCH_CFLAGS += \
|
|
-isystem $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/include \
|
|
-isystem $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/$(STL_ARCH)/include \
|
|
-isystem $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/include/backward
|
|
|
|
ARCH_LDFLAGS += $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/$(STL_ARCH)/libgnustl_static.a
|
|
endif
|