foo
[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
24 libdir = -Llibs/android
25
26 CC = $(TC)clang
27 CFLAGS = $(CCSYSROOT) $(ISYS) $(warn) $(dbg) $(opt) $(def) $(incdir) -fPIC -fcommon -MMD
28 LDFLAGS = $(LDSYSROOT) $(libdir) -lm -landroid -llog -lEGL -lGLESv2 -limago -lpsys -lanim
29
30 $(name).apk: $(name).aligned.apk keystore.jks
31         apksigner sign --ks keystore.jks --ks-key-alias androidkey --ks-pass pass:android --key-pass pass:android --out $@ $<
32
33 keystore.jks:
34         keytool -genkeypair -keystore $@ -alias androidkey -validity 10000 -keyalg RSA -keysize 2048 -storepass android -keypass android
35
36 $(name).aligned.apk: $(name).unsigned.apk
37         zipalign -f -p 4 $< $@
38
39 $(name).unsigned.apk: $(lib_so) AndroidManifest.xml
40         mkdir -p apkbuild/lib/arm64-v8a
41         cp $(lib_so) apkbuild/lib/arm64-v8a
42         mkdir -p apkbuild/assets
43         cp -r data apkbuild/assets
44         cp -r sdr apkbuild/assets
45         aapt package -f -F $@ -I $(PLATFORM_JAR) -M AndroidManifest.xml apkbuild
46
47 $(lib_so): $(obj) Makefile.android
48         $(CC) -o $@ -shared -Wl,-soname,$(lib_so) $(obj) $(LDFLAGS)
49
50 -include $(dep)
51
52 %.arm64.o: %.c
53         $(CC) -o $@ $(CFLAGS) -c $<
54
55 .PHONY: clean
56 clean:
57         rm -f $(obj) $(lib_so)
58
59 .PHONY: cleandep
60 cleandep:
61         rm -f $(dep)
62
63 .PHONY: libs
64 libs:
65         $(MAKE) CC=$(CC) sys=android-arm64 -C libs
66
67 .PHONY: clean-libs
68 clean-libs:
69         $(MAKE) sys=android-arm64 -C libs clean
70
71
72 .PHONY: install
73 install: $(name).apk
74         adb install -r $(name).apk
75
76 .PHONY: uninstall
77 uninstall:
78         adb uninstall $(pkg)
79
80 .PHONY: run
81 run:
82         adb shell am start -n $(pkg)/$(act)
83
84 .PHONY: stop
85 stop:
86         adb shell am force-stop $(pkg)
87
88 .PHONY: logcat
89 logcat:
90         adb logcat $(name):V AndroidRuntime:V DEBUG:V '*:S'