33a7851d8f6c5d07ed1d717f70568525ff28f21a
[andemo] / Makefile.android
1 SDK ?= /usr/lib/android-sdk
2 NDK ?= /usr/lib/android-ndk
3 CCSYSROOT = --sysroot=$(NDK)/sysroot
4 LDSYSROOT = --sysroot=$(NDK)/platforms/android-23/arch-arm64
5 PLATFORM_JAR = $(SDK)/platforms/android-23/android.jar
6 TCPATH = $(NDK)/toolchains/llvm/prebuilt/linux-$(shell uname -m)/bin
7 TC = $(TCPATH)/aarch64-linux-android23-
8
9 src = $(wildcard src/*.c) $(wildcard src/scr/*.c) $(wildcard src/android/*.c)
10 obj = $(src:.c=.arm64.o)
11 dep = $(src:.c=.d)
12 name = andemo
13 lib_so = lib$(name).so
14
15 pkgprefix = com.mutantstargoat
16 pkg = $(pkgprefix).$(name)
17 act = android.app.NativeActivity
18
19 warn = -pedantic -Wall
20 dbg = -g
21 opt = -O3 -ffast-math -fno-strict-aliasing
22 def = -DGLDEF
23 incdir = -Isrc -Ilibs -Ilibs/imago/src -Ilibs/treestore
24 libdir = -Llibs/android
25
26 libs = libs/android/libimago.a libs/android/libtreestore.a libs/android/libanim.a \
27            libs/android/libpsys.a
28
29 CC = $(TC)clang
30 CFLAGS = $(CCSYSROOT) $(ISYS) $(warn) $(dbg) $(opt) $(def) $(incdir) -fPIC -fcommon -MMD
31 LDFLAGS = $(LDSYSROOT) $(libdir) -lm -landroid -llog -lEGL -lGLESv2 -limago -lpsys -lanim -ltreestore
32
33 $(name).apk: $(name).aligned.apk keystore.jks
34         apksigner sign --ks keystore.jks --ks-key-alias androidkey --ks-pass pass:android --key-pass pass:android --out $@ $<
35
36 keystore.jks:
37         keytool -genkeypair -keystore $@ -alias androidkey -validity 10000 -keyalg RSA -keysize 2048 -storepass android -keypass android
38
39 $(name).aligned.apk: $(name).unsigned.apk
40         zipalign -f -p 4 $< $@
41
42 $(name).unsigned.apk: $(lib_so) AndroidManifest.xml
43         mkdir -p apkbuild/lib/arm64-v8a
44         cp $(lib_so) apkbuild/lib/arm64-v8a
45         mkdir -p apkbuild/assets
46         cp -r data apkbuild/assets
47         cp -r sdr apkbuild/assets
48         aapt package -f -F $@ -I $(PLATFORM_JAR) -M AndroidManifest.xml apkbuild
49
50 $(lib_so): $(obj) Makefile.android $(libs)
51         $(CC) -o $@ -shared -Wl,-soname,$(lib_so) $(obj) $(LDFLAGS)
52
53 -include $(dep)
54
55 %.arm64.o: %.c
56         $(CC) -o $@ $(CFLAGS) -c $<
57
58 .PHONY: clean
59 clean:
60         rm -f $(obj) $(lib_so)
61
62 .PHONY: cleandep
63 cleandep:
64         rm -f $(dep)
65
66 .PHONY: libs
67 libs:
68         $(MAKE) CC=$(CC) sys=android-arm64 -C libs
69
70 .PHONY: clean-libs
71 clean-libs:
72         $(MAKE) sys=android-arm64 -C libs clean
73
74
75 .PHONY: install
76 install: $(name).apk
77         adb install -r $(name).apk
78
79 .PHONY: uninstall
80 uninstall:
81         adb uninstall $(pkg)
82
83 .PHONY: run
84 run:
85         adb shell am start -n $(pkg)/$(act)
86
87 .PHONY: stop
88 stop:
89         adb shell am force-stop $(pkg)
90
91 .PHONY: logcat
92 logcat:
93         adb logcat $(name):V AndroidRuntime:V DEBUG:V '*:S'