apk build (not done)
[andemo] / Makefile.android
1 SDK ?= /usr/lib/android-sdk
2 NDK ?= /usr/lib/android-ndk
3 CCSYSROOT = $(NDK)/sysroot
4 ISYS = $(CCSYSROOT)/usr/include/aarch64-linux-android
5 LDSYSROOT = $(NDK)/platforms/android-23/arch-arm64
6 PLATFORM_JAR = $(SDK)/platforms/android-23/android.jar
7 TCPATH = $(NDK)/toolchains/llvm/prebuilt/linux-$(shell uname -m)/bin
8 TC = $(TCPATH)/aarch64-linux-android23-
9
10 src = $(wildcard src/*.c) $(wildcard src/android/*.c)
11 obj = $(src:.c=.arm64.o)
12 dep = $(src:.c=.d)
13 name = andemo
14 lib_so = lib$(name).so
15
16 warn = -pedantic -Wall
17 dbg = -g
18 opt = -O3 -ffast-math -fno-strict-aliasing
19 incdir = -Isrc
20
21 CC = $(TC)clang
22 CFLAGS = --sysroot=$(CCSYSROOT) -isystem=$(ISYS) $(warn) $(dbg) $(opt) $(def) $(incdir) -fPIC -fcommon -MMD
23 LDFLAGS = --sysroot=$(LDSYSROOT) -lEGL -lGLESv2
24
25 $(name).apk: $(name).aligned.apk keystore.jks
26         apksigner sign --ks keystore.jks --ks-key-alias androidkey --ks-pass pass:android --key-pass pass:android --out $@ $<
27
28 keystore.jks:
29         keytool -genkeypair -keystore $@ -alias androidkey -validity 10000 -keyalg RSA -keysize 2048 -storepass android -keypass android
30
31 $(name).aligned.apk: $(name).unsigned.apk
32         zipalign -f -p 4 $< $@
33
34 $(name).unsigned.apk: $(lib_so) AndroidManifest.xml
35         mkdir -p apkbuild/lib/aarch64
36         cp $(lib_so) apkbuild/lib/aarch64
37         aapt package -f -v -F $@ -I $(PLATFORM_JAR) -M AndroidManifest.xml apkbuild
38
39 $(lib_so): $(obj)
40         $(CC) -o $@ -shared $(obj) $(LDFLAGS)
41
42 -include $(dep)
43
44 %.arm64.o: %.c
45         $(CC) -o $@ $(CFLAGS) -c $<
46
47 .PHONY: clean
48 clean:
49         rm -f $(obj) $(lib_so)
50
51 .PHONY: cleandep
52 cleandep:
53         rm -f $(dep)