X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=Makefile.android;h=0ce9be305ecc14788cea9946f683c7ef1e974eb4;hb=HEAD;hp=0df3c9587d2fca6f34441ed313cbe991a647e44c;hpb=aa9f7c423c8c4111b3e1d0a7bbe73e376533ed80;p=andemo diff --git a/Makefile.android b/Makefile.android index 0df3c95..0ce9be3 100644 --- a/Makefile.android +++ b/Makefile.android @@ -1,31 +1,139 @@ +# ---- set these as environment variables if different ---- +SDK ?= /usr/lib/android-sdk NDK ?= /usr/lib/android-ndk -CCSYSROOT = $(NDK)/sysroot -ISYS = $(CCSYSROOT)/usr/include/aarch64-linux-android -LDSYSROOT = $(NDK)/platforms/anrdoid-21/arch-arm64 -TCPATH = $(NDK)/toolchains/llvm/prebuilt/linux-$(shell uname -m)/bin -TC = $(TCPATH)/aarch64-linux-android21- - -src = $(wildcard src/*.c) $(wildcard src/android/*.c) -obj = $(src:.c=.arm64.o) +AVER ?= 23 +# --------------------------------------------------------- + +sys = $(shell uname -s | sed 's/MINGW.*/mingw/') +ifeq ($(sys), Linux) + host = linux-x86_64 +endif +ifeq ($(sys), mingw) + host = windows-x86_64 +endif + +CCSYSROOT = --sysroot=$(NDK)/sysroot +LDSYSROOT64 = --sysroot=$(NDK)/platforms/android-$(AVER)/arch-arm64 +LDSYSROOT32 = --sysroot=$(NDK)/platforms/android-$(AVER)/arch-arm +PLATFORM_JAR = $(SDK)/platforms/android-$(AVER)/android.jar +TCPATH = $(NDK)/toolchains/llvm/prebuilt/$(host)/bin +TC64 = $(TCPATH)/aarch64-linux-android$(AVER)- +TC32 = $(TCPATH)/armv7a-linux-androideabi$(AVER)- + +src = $(wildcard src/*.c) $(wildcard src/scr/*.c) $(wildcard src/android/*.c) +obj64 = $(src:.c=.arm64.o) +obj32 = $(src:.c=.arm32.o) dep = $(src:.c=.d) -lib_so = libandemo.so +name = andemo +lib_so = lib$(name).so +so64 = lib$(name)64.so +so32 = lib$(name)32.so + +pkgprefix = com.mutantstargoat +pkg = $(pkgprefix).$(name) +act = android.app.NativeActivity + +warn = -pedantic -Wall +dbg = -g +opt = -O3 -ffast-math -fno-strict-aliasing +def = -DGLDEF +incdir = -Isrc -Ilibs -Ilibs/imago/src -Ilibs/treestore +libdir64 = -Llibs/android64 +libdir32 = -Llibs/android32 + +CFLAGS = $(CCSYSROOT) $(ISYS) $(warn) $(dbg) $(opt) $(def) $(incdir) -fPIC -fcommon -MMD +LDFLAGS = $(LDSYSROOT) -lm -landroid -llog -lEGL -lGLESv2 -limago -lpsys -lanim -ltreestore -CC = $(TC)clang -CFLAGS = --sysroot=$(CCSYSROOT) -isystem=$(ISYS) $(warn) $(dbg) $(opt) $(def) $(incdir) -fPIC -fcommon -MMD -LDFLAGS = --sysroot=$(LDSYSROOT) -lEGL -lGLESv2 +$(name).apk: $(name).aligned.apk keystore.jks + apksigner sign --ks keystore.jks --ks-key-alias androidkey --ks-pass pass:android --key-pass pass:android --out $@ $< -$(lib_so): $(obj) - $(CC) -o $@ -shared $(obj) $(LDFLAGS) +keystore.jks: + keytool -genkeypair -keystore $@ -alias androidkey -validity 10000 -keyalg RSA -keysize 2048 -storepass android -keypass android + +$(name).aligned.apk: $(name).unsigned.apk + zipalign -f -p 4 $< $@ + +$(name).unsigned.apk: $(so64) $(so32) AndroidManifest.xml $(icons) + rm -f apkbuild/lib/arm64-v8a/* apkbuild/lib/armeabi-v7a/* apkbuild/lib/armeabi/* + rm -f apkbuild/assets/data/* apkbuild/assets/sdr/* + mkdir -p apkbuild/lib/arm64-v8a apkbuild/lib/armeabi-v7a apkbuild/lib/armeabi + cp $(so64) apkbuild/lib/arm64-v8a/$(lib_so) + cp $(so32) apkbuild/lib/armeabi-v7a/$(lib_so) + cp $(so32) apkbuild/lib/armeabi/$(lib_so) + mkdir -p apkbuild/assets/data apkbuild/assets/sdr + cp -r data/* apkbuild/assets/data + cp -r sdr/* apkbuild/assets/sdr + mkdir -p apkbuild/res/drawable-xxhdpi apkbuild/res/drawable-xxxhdpi + mkdir -p apkbuild/res/drawable-xhdpi apkbuild/res/drawable-hdpi + mkdir -p apkbuild/res/drawable-mdpi apkbuild/res/drawable-ldpi + cp data/icon192.png apkbuild/res/drawable-xxxhdpi/ic_launcher.png + cp data/icon144.png apkbuild/res/drawable-xxhdpi/ic_launcher.png + cp data/icon96.png apkbuild/res/drawable-xhdpi/ic_launcher.png + cp data/icon72.png apkbuild/res/drawable-hdpi/ic_launcher.png + cp data/icon48.png apkbuild/res/drawable-mdpi/ic_launcher.png + cp data/icon36.png apkbuild/res/drawable-ldpi/ic_launcher.png + aapt package -f -F $@ -I $(PLATFORM_JAR) -M AndroidManifest.xml -S apkbuild/res apkbuild + +$(so64): $(obj64) Makefile.android libs + $(TC64)clang -o $@ -shared -Wl,-soname,$(lib_so) $(obj64) $(libdir64) $(LDFLAGS) + +$(so32): $(obj32) Makefile.android libs + $(TC32)clang -o $@ -shared -Wl,-soname,$(lib_so) $(obj32) $(libdir32) $(LDFLAGS) -include $(dep) %.arm64.o: %.c - $(CC) -o $@ $(CFLAGS) -c $< + $(TC64)clang -o $@ $(CFLAGS) -c $< + +%.arm32.o: %.c + $(TC32)clang -o $@ $(CFLAGS) -c $< .PHONY: clean clean: - rm -f $(obj) $(lib_so) + rm -f $(obj64) $(obj32) $(lib_so) .PHONY: cleandep cleandep: rm -f $(dep) + +.PHONY: libs +libs: libs64 libs32 + +.PHONY: libs64 +libs64: + $(MAKE) CC=$(TC64)clang sys=android-arm64 -C libs + +.PHONY: libs32 +libs32: + $(MAKE) CC=$(TC32)clang sys=android-arm32 -C libs + +.PHONY: clean-libs +clean-libs: clean-libs64 clean-libs32 + +.PHONY: clean-libs64 +clean-libs64: + $(MAKE) sys=android-arm64 -C libs clean + +.PHONY: clean-libs32 +clean-libs32: + $(MAKE) sys=android-arm32 -C libs clean + +.PHONY: install +install: $(name).apk + adb install -r $(name).apk + +.PHONY: uninstall +uninstall: + adb uninstall $(pkg) + +.PHONY: run +run: + adb shell am start -n $(pkg)/$(act) + +.PHONY: stop +stop: + adb shell am force-stop $(pkg) + +.PHONY: logcat +logcat: + adb logcat $(name):V AndroidRuntime:V DEBUG:V '*:S'