@@ -5,7 +5,9 @@ SHAREDLIBSUFFIX = so
55SHAREDLIBSUFFIXFULLVER =$(SHAREDLIBSUFFIX )
66SHAREDLIBSUFFIXMAJORVER =$(SHAREDLIBSUFFIX )
77SHLDFLAGS =
8- NDKLEVEL = 12
8+
9+ NDK_TOOLCHAIN_VERSION = clang
10+
911ifeq ($(ARCH ) , arm)
1012 ifneq ($(APP_ABI), armeabi)
1113 CFLAGS += -march=armv7-a -mfloat-abi=softfp
@@ -32,48 +34,49 @@ endif
3234ifndef NDKROOT
3335$(error NDKROOT is not set)
3436endif
37+
3538ifndef TARGET
3639$(error TARGET is not set)
3740endif
3841
39- TOOLCHAINPREFIX = $(shell NDK_PROJECT_PATH=$(SRC_PATH ) /codec/build/android/dec make --no-print-dir -f $(NDKROOT ) /build/core/build-local.mk DUMP_TOOLCHAIN_PREFIX APP_ABI=$(APP_ABI ) )
40- TOOLCHAIN_NAME = $(shell NDK_TOOLCHAIN_VERSION= NDK_PROJECT_PATH=$(SRC_PATH ) /codec/build/android/dec make --no-print-dir -f $(NDKROOT ) /build/core/build-local.mk DUMP_TOOLCHAIN_NAME APP_ABI=$(APP_ABI ) )
41- GCC_TOOLCHAIN_PATH = $(shell dirname $(TOOLCHAINPREFIX ) | xargs dirname )
42-
43- SYSROOT = $(NDKROOT ) /platforms/android-$(NDKLEVEL ) /arch-$(ARCH )
44- CXX = $(TOOLCHAINPREFIX ) g++
45- CC = $(TOOLCHAINPREFIX ) gcc
46- AR = $(TOOLCHAINPREFIX ) ar
47- CFLAGS += -DANDROID_NDK -fpic --sysroot=$(SYSROOT ) -MMD -MP
48- ifeq ($(USE_STACK_PROTECTOR ) , Yes)
49- CFLAGS += -fstack-protector-all
42+ ifeq ($(NDKLEVEL ) ,)
43+ NDKLEVEL = $(TARGET:android-%=% )
5044endif
51- CFLAGS += -isystem $(NDKROOT ) /sysroot/usr/include -isystem $(NDKROOT ) /sysroot/usr/include/$(TOOLCHAIN_NAME ) -D__ANDROID_API__=$(NDKLEVEL )
45+
46+ CFLAGS += -DANDROID_NDK -fpic -MMD -MP -fstack-protector-all
5247CXXFLAGS += -fno-rtti -fno-exceptions
53- LDFLAGS += --sysroot=$(SYSROOT )
5448SHLDFLAGS = -Wl,--no-undefined -Wl,-z,relro -Wl,-z,now -Wl,-soname,lib$(PROJECT_NAME ) .so
5549UTSHLDFLAGS = -Wl,-soname,libut.so
5650
5751ifeq ($(NDK_TOOLCHAIN_VERSION ) , clang)
58- HOST_OS = $(shell uname -s | tr [A-Z] [a-z])
59- LLVM_INSTALL_DIR = $(NDKROOT ) /toolchains/llvm/prebuilt/$(HOST_OS ) -x86_64/bin
60- CC = $(LLVM_INSTALL_DIR ) /clang
61- CXX = $(LLVM_INSTALL_DIR ) /clang++
52+ LLVM_INSTALL_DIR = $(wildcard $(NDKROOT ) /toolchains/llvm/prebuilt/* /bin)
6253
6354 ifeq ($(ARCH), arm)
64- TARGET_NAME = armv7-none -linux-androideabi
55+ TARGET_NAME = armv7a -linux-androideabi
6556 else ifeq ($(ARCH), arm64)
66- TARGET_NAME = aarch64-none- linux-android
57+ TARGET_NAME = aarch64-linux-android
6758 else ifeq ($(ARCH), x86)
68- TARGET_NAME = i686-none- linux-android
59+ TARGET_NAME = i686-linux-android
6960 else ifeq ($(ARCH), x86_64)
70- TARGET_NAME = x86_64-none- linux-android
61+ TARGET_NAME = x86_64-linux-android
7162 else
7263 $(error "does not support this arch now!")
7364 endif
7465
75- CFLAGS += -target $(TARGET_NAME )
76- LDFLAGS += -target $(TARGET_NAME ) -gcc-toolchain $(GCC_TOOLCHAIN_PATH )
66+ CC = $(LLVM_INSTALL_DIR ) /$(TARGET_NAME )$(NDKLEVEL ) -clang
67+ CXX = $(LLVM_INSTALL_DIR ) /$(TARGET_NAME )$(NDKLEVEL ) -clang++
68+ AR = $(LLVM_INSTALL_DIR ) /llvm-ar
69+ SYSROOT = $(LLVM_INSTALL_DIR ) /../sysroot
70+ else
71+ TOOLCHAINPREFIX = $(shell NDK_PROJECT_PATH=$(SRC_PATH ) /codec/build/android/dec make --no-print-dir -f $(NDKROOT ) /build/core/build-local.mk DUMP_TOOLCHAIN_PREFIX APP_ABI=$(APP_ABI ) )
72+ TOOLCHAIN_NAME = $(shell NDK_TOOLCHAIN_VERSION= NDK_PROJECT_PATH=$(SRC_PATH ) /codec/build/android/dec make --no-print-dir -f $(NDKROOT ) /build/core/build-local.mk DUMP_TOOLCHAIN_NAME APP_ABI=$(APP_ABI ) )
73+ GCC_TOOLCHAIN_PATH = $(shell dirname $(TOOLCHAINPREFIX ) | xargs dirname )
74+ SYSROOT = $(NDKROOT ) /platforms/android-$(NDKLEVEL ) /arch-$(ARCH )
75+
76+ CXX = $(TOOLCHAINPREFIX ) g++
77+ CC = $(TOOLCHAINPREFIX ) gcc
78+ AR = $(TOOLCHAINPREFIX ) ar
79+ CFLAGS += -isystem $(NDKROOT ) /sysroot/usr/include -isystem $(NDKROOT ) /sysroot/usr/include/$(TOOLCHAIN_NAME ) -D__ANDROID_API__=$(NDKLEVEL ) --sysroot=$(SYSROOT )
7780endif
7881
7982# background reading: https://android.googlesource.com/platform/ndk/+/master/docs/BuildSystemMaintainers.md#unwinding
@@ -82,22 +85,9 @@ LDFLAGS += -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libunwind.a
8285ifneq ($(findstring /,$(CXX ) ) ,$(findstring \,$(CXX ) ) )
8386ifneq ($(CXX ) ,$(wildcard $(CXX ) ) )
8487ifneq ($(CXX ) .exe,$(wildcard $(CXX ) .exe) )
85- $(error Compiler not found, bad NDKROOT or ARCH?)
86- endif
88+ $(error Compiler not found, bad NDKROOT or ARCH? $(CXX))
8789endif
8890endif
89-
90- ifeq ($(NDK_TOOLCHAIN_VERSION ) , clang)
91- STL_INCLUDES = \
92- -I$(NDKROOT ) /sources/cxx-stl/llvm-libc++/include \
93- -I$(NDKROOT ) /sources/cxx-stl/llvm-libc++abi/include
94- STL_LIB = \
95- $(NDKROOT ) /sources/cxx-stl/llvm-libc++/libs/$(APP_ABI ) /libc++_static.a
96- else
97- STL_INCLUDES = \
98- -I$(NDKROOT ) /sources/cxx-stl/stlport/stlport
99- STL_LIB = \
100- $(NDKROOT ) /sources/cxx-stl/stlport/libs/$(APP_ABI ) /libstlport_static.a
10191endif
10292
10393GTEST_INCLUDES = $(STL_INCLUDES )
@@ -109,18 +99,26 @@ MODULE_LDFLAGS = $(STL_LIB)
10999ifeq (./,$(SRC_PATH ) )
110100binaries : decdemo encdemo
111101
102+ NDK_BUILD = $(NDKROOT ) /ndk-build APP_ABI=$(APP_ABI ) APP_PLATFORM=$(TARGET ) NDK_TOOLCHAIN_VERSION=$(NDK_TOOLCHAIN_VERSION ) V=$(V:Yes=1 )
103+
112104decdemo : libraries
113- cd ./codec/build/android/dec && $(NDKROOT ) /ndk-build -B NDK_TOOLCHAIN_VERSION=$(NDK_TOOLCHAIN_VERSION ) APP_ABI=$(APP_ABI ) APP_PLATFORM=$(TARGET ) && android update project -t $(TARGET ) -p . && ant debug
105+ $(NDK_BUILD ) -C codec/build/android/dec -B
106+ ./gradlew test-dec:assembleDebug
114107
115108encdemo : libraries
116- cd ./codec/build/android/enc && $(NDKROOT ) /ndk-build -B NDK_TOOLCHAIN_VERSION=$(NDK_TOOLCHAIN_VERSION ) APP_ABI=$(APP_ABI ) APP_PLATFORM=$(TARGET ) && android update project -t $(TARGET ) -p . && ant debug
109+ $(NDK_BUILD ) -C codec/build/android/enc -B
110+ ./gradlew test-enc:assembleDebug
117111
118112clean_Android : clean_Android_dec clean_Android_enc
119113
120114clean_Android_dec :
121- -cd ./codec/build/android/dec && $(NDKROOT ) /ndk-build APP_ABI=$(APP_ABI ) clean && ant clean
115+ -$(NDK_BUILD ) -C codec/build/android/dec clean
116+ -./gradlew test-dec:clean
117+
122118clean_Android_enc :
123- -cd ./codec/build/android/enc && $(NDKROOT ) /ndk-build APP_ABI=$(APP_ABI ) clean && ant clean
119+ -$(NDK_BUILD ) -C codec/build/android/enc clean
120+ -./gradlew test-enc:clean
121+
124122else
125123clean_Android :
126124 @:
0 commit comments