ifeq ($(NDK),) $(error Must export NDK location before building for Android) endif NDK_ROOT:=$(NDK) #NDK_LOG:=1 include $(NDK)/build/core/init.mk TOOLCHAIN:=$(foreach chain, $(NDK_ALL_TOOLCHAINS), $(if $(findstring arm, $(chain)), $(chain), )) # Filter out clang TEMP_TC := $(foreach chain, $(TOOLCHAIN), $(if $(findstring clang, $(chain)), , $(chain))) ifneq ($(strip $(TEMP_TC)),) TOOLCHAIN := $(TEMP_TC) endif # use freshmost compiler TOOLCHAIN:=$(lastword $(TOOLCHAIN)) TOOLCHAIN_ARCH:= -include $(NDK)/build/core/toolchains/$(TOOLCHAIN)/config.mk -include $(NDK)/build/core/toolchains/$(TOOLCHAIN)/setup.mk ifeq ($(TOOLCHAIN_ARCH),arm) TOOL_PATH:=$(NDK)/toolchains/llvm/prebuilt/linux-x86_64/bin CROSS_PREFIX:=$(TOOL_PATH)/$(TOOLCHAIN_NAME)- #Now it's time to decide upon clang/clang++ CLANG_NAME:=$(subst arm-,armv7a-,$(TOOLCHAIN_NAME)) CLANG_NUM:=$(shell mi=256; for i in `seq 24 $$mi`; do [ -e $(TOOL_PATH)/$(CLANG_NAME)$$i-clang ] && [ $$i -le $$mi ] && mi=$$i; done; echo $$mi) CXX:=$(TOOL_PATH)/$(CLANG_NAME)$(CLANG_NUM)-clang++ CC:=$(TOOL_PATH)/$(CLANG_NAME)$(CLANG_NUM)-clang #CROSS_FLAGS:=--sysroot=$(NDK)/sysroot \ # -I$(ROOT)/gen/cross \ # -I$(NDK)/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1 CROSS_FLAGS:=--sysroot=$(NDK)/toolchains/llvm/prebuilt/linux-x86_64/sysroot \ -I$(ROOT)/gen/cross else #TOOLCHAIN_ARCH ifeq ($(HOST_TAG64),) HOST_TAG64:=linux-x86 endif NDK_TOOLCHAIN_VERSION:=$(shell echo $(TOOLCHAIN_DIR) | awk -F - '{print $$NF;}') CROSS_PLATFORM:=$(NDK)/platforms ALEVEL:=$(shell for i in `seq 256`; do [ -d $(CROSS_PLATFORM)/android-$${i} ] && adir=$${i}; done; echo $${adir}) CROSS_PLATFORM:=$(CROSS_PLATFORM)/android-$(ALEVEL)/arch-arm CROSS_PREFIX:=$(NDK)/toolchains/$(TOOLCHAIN_DIR)/prebuilt/$(HOST_TAG64)/bin/arm-linux-androideabi- CXX:=$(CROSS_PREFIX)g++ CC:=$(CROSS_PREFIX)gcc CROSS_FLAGS=--sysroot=$(CROSS_PLATFORM) \ -I$(CROSS_PLATFORM)/usr/include -I$(ROOT)/gen/cross \ -I$(NDK)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/include \ -I$(NDK)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/libs/armeabi/include endif #TOOLCHAIN_ARCH AR:=$(CROSS_PREFIX)ar AS:=$(CROSS_PREFIX)as LD:=$(CROSS_PREFIX)ld NM:=$(CROSS_PREFIX)nm OBJCOPY:=$(CROSS_PREFIX)objcopy OBJDUMP:=$(CROSS_PREFIX)objdump RANLIB:=$(CROSS_PREFIX)ranlib STRIP:=$(CROSS_PREFIX)strip export CXX export CC export AR export CROSS_FLAGS COMMON_FLAGS=-ggdb -DFB_SEND_FLAGS=MSG_NOSIGNAL -DLINUX -DANDROID -DARM -pipe -MMD -fPIC -fmessage-length=0 \ -I$(ROOT)/extern/libtommath -I$(ROOT)/extern/libtomcrypt/src/headers \ $(CROSS_FLAGS) -fsigned-char OPTIMIZE_FLAGS=-fno-omit-frame-pointer WARN_FLAGS=-Wall -Wno-switch -Wno-parentheses -Wno-unknown-pragmas -Wno-unused-variable PROD_FLAGS=$(COMMON_FLAGS) $(OPTIMIZE_FLAGS) DEV_FLAGS=$(COMMON_FLAGS) $(WARN_FLAGS) CROSS_CONFIG=android.arme LDFLAGS += --sysroot=$(CROSS_PLATFORM) -L$(NDK)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/libs/armeabi \ -L$(NDK)/sources/cxx-stl/gnu-libstdc++/libs/armeabi DroidLibs := -lm -ldl $(DECLIB) $(RE2LIB) UDR_SUPPORT_LIBS := LINK_LIBS = $(DroidLibs) SO_LINK_LIBS = $(DroidLibs) EXE_LINK_OPTIONS= $(LDFLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) $(LINK_EMPTY_SYMBOLS) -pie LIB_LINK_OPTIONS= $(LDFLAGS) -shared UNICODE_DIR := $(shell dirname `find /usr/include -name ucnv.h`) UNICODE_DIR := $(filter %unicode, $(UNICODE_DIR)) UNICODE_DIR := $(firstword $(UNICODE_DIR)) ifndef UNICODE_DIR $(error ERROR while locating ICU include directory, probably missing ucnv.h) endif .PHONY: prerequisites prerequisites: $(ROOT)/gen/cross/unicode $(ROOT)/gen/cross/unicode: echo $(UNICODE_DIR) rm -rf $(ROOT)/gen/cross mkdir $(ROOT)/gen/cross ln -s $(UNICODE_DIR) cross/unicode