X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=makefile;h=dc3d20adf012480b46984178b6a0d511b26b7287;hb=721ae9a3b850735bda711946c593a38e431c5fde;hp=c58c3c2c99f7938b7f60fc582c4b185c37628b1f;hpb=7624f2f67d7d971cad036853773dcd3d260a6b38;p=~andy%2Fspades diff --git a/makefile b/makefile index c58c3c2..dc3d20a 100644 --- a/makefile +++ b/makefile @@ -1,45 +1,90 @@ -# Settings -ANDROID := /opt/android-sdk-update-manager/platforms/android-10/android.jar -PACKAGE := org.pileus.spades -OUTPUT := bin/Spades.apk +-include config.mk -# Sources -RES := $(shell find res -name '*.xml') -SRC := $(shell find src -name '*.java') +# Settings +PROGRAM ?= Spades +PACKAGE ?= org.pileus.spades +KEYFILE ?= ~/.android/android.p12 +KEYTYPE ?= pkcs12 +KEYNAME ?= android +ANDROID ?= /opt/android-sdk-update-manager/platforms/android-10/android.jar +SDKLIB ?= /opt/android-sdk-update-manager/tools/lib/sdklib.jar -# Objects -GEN := gen/$(subst .,/,$(PACKAGE))/R.java -OBJ := $(subst .java,.class, \ - $(SRC:src/%=obj/%) \ - $(GEN:gen/%=obj/%)) +# Variables +DIR := $(subst .,/,$(PACKAGE)) +RES := $(wildcard res/*/*.*) +SRC := $(wildcard src/$(DIR)/*.java) +GEN := gen/$(DIR)/R.java +OBJ := obj/$(DIR)/R.class +APK := java -classpath $(SDKLIB) \ + com.android.sdklib.build.ApkBuilderMain # Targets -default: run +debug: bin/$(PROGRAM).dbg -compile: $(OBJ) +release: bin/$(PROGRAM).apk -debug: $(OUTPUT) +compile: $(OBJ) clean: rm -rf bin gen obj +# ADB targets logcat: - adb logcat Spades:D AndroidRuntime:E '*:S' + adb logcat $(PROGRAM):D AndroidRuntime:E '*:S' run: bin/install.stamp - adb shell am start -W -a android.intent.action.MAIN -n $(PACKAGE)/.Main - + adb shell am start -W \ + -a android.intent.action.MAIN \ + -n $(PACKAGE)/.Main -install bin/install.stamp: $(OUTPUT) - adb uninstall $(PACKAGE) +install bin/install.stamp: bin/$(PROGRAM).dbg adb install -r $+ touch bin/install.stamp +uninstall: + adb uninstall $(PACKAGE) + rm bin/install.stamp + +# Graphics targets +graphics: + git checkout graphics -- \ + 'opt/drawable/*.svg' \ + 'opt/drawable/*.xcf' \ + 'res/drawable/*.png' \ + 'res/drawable/*.jpg' \ + || true + git reset HEAD -- \ + 'opt/drawable/*.svg' \ + 'opt/drawable/*.xcf' \ + 'res/drawable/*.png' \ + 'res/drawable/*.jpg' \ + || true + +convert: + for svg in opt/drawable/*.svg; do \ + png=$${svg/svg/png}; \ + png=$${png/opt/res}; \ + rsvg-convert -w 2048 -h 2048 \ + $$svg -o $$png; \ + convert -trim -resize '256x256!' \ + $$png $$png; \ + done + # Rules -%.apk: %.dex %.res | bin +%.dbg: %.dex %.res | bin @echo "APK $@.in" - @apkbuilder $@.in -f $*.dex -z $*.res - @echo ALIGN $@ + @$(APK) $@.in -f $*.dex -z $*.res + @echo "ALIGN $@" + @zipalign -f 4 $@.in $@ + +%.apk: %.dex %.res | bin + @echo "APKU $@.in" + @$(APK) $@.in -u -f $*.dex -z $*.res + @echo "SIGN $@.in" + @jarsigner -storetype $(KEYTYPE) \ + -keystore $(KEYFILE) \ + $@.in $(KEYNAME) + @echo "ALIGN $@" @zipalign -f 4 $@.in $@ %.dex: $(OBJ) | bin @@ -55,8 +100,8 @@ install bin/install.stamp: $(OUTPUT) -F $*.res $(OBJ): $(SRC) $(GEN) | obj - @echo "JAVAC $@" - @javac -g \ + @echo "JAVAC obj/*.class" + @javac -g -Xlint:unchecked \ -bootclasspath $(ANDROID) \ -encoding UTF-8 \ -source 1.5 \ @@ -66,6 +111,11 @@ $(OBJ): $(SRC) $(GEN) | obj $+ $(GEN): AndroidManifest.xml $(RES) | gen + @if ! [ -d "res/drawable" ]; then \ + echo Please run \ + \'make graphics\'; \ + exit 1; \ + fi @echo "GEN $@" @aapt package -f -m \ -I $(ANDROID) \ @@ -76,3 +126,6 @@ $(GEN): AndroidManifest.xml $(RES) | gen # Directories bin gen obj: @mkdir -p $@ + +# Keep intermediate files +.SECONDARY: