X-Git-Url: http://pileus.org/git/?p=~andy%2Fspades;a=blobdiff_plain;f=makefile;h=49c95d8c5ce6de3abbd16a7aae2b474fa9efd2d3;hp=dc8eff0d8fa6d835f8240c9d0670c4fd836747b7;hb=5be24bc54f9b257b88f97d18b8b57c10b539bcad;hpb=65de4b5e7e794a58727dac5eff40e484a5380285 diff --git a/makefile b/makefile index dc8eff0..49c95d8 100644 --- a/makefile +++ b/makefile @@ -1,35 +1,45 @@ -# Settings -ANDROID := /opt/android-sdk-update-manager/platforms/android-10/android.jar -PACKAGE := org.pileus.spades -OUTPUT := bin/Spades.apk - -# Sources -RES := $(shell find res -name '*.xml') -SRC := $(shell find src -name '*.java') +-include config.mk -# Objects -GEN := gen/$(subst .,/,$(PACKAGE))/R.java -OBJ := $(subst .java,.class, \ - $(SRC:src/%=obj/%) \ - $(GEN:gen/%=obj/%)) +# Settings +PROGRAM ?= Spades +PACKAGE ?= org.pileus.spades +KEYFILE ?= ~/.android/android.p12 +KEYTYPE ?= pkcs12 +KEYNAME ?= android +ANDROID ?= /opt/android-sdk-update-manager/platforms/android-18/android.jar +SDKLIB ?= /opt/android-sdk-update-manager/tools/lib/sdklib.jar +TOOLS ?= /opt/android-sdk-update-manager/build-tools/19.0.1 + +# Variables +PATH := $(PATH):$(TOOLS) +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) +install bin/install.stamp: bin/$(PROGRAM).dbg adb install -r $+ touch bin/install.stamp @@ -37,17 +47,20 @@ 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' + 'res/drawable/*.jpg' \ + || true git reset HEAD -- \ 'opt/drawable/*.svg' \ 'opt/drawable/*.xcf' \ 'res/drawable/*.png' \ - 'res/drawable/*.jpg' + 'res/drawable/*.jpg' \ + || true convert: for svg in opt/drawable/*.svg; do \ @@ -60,10 +73,20 @@ convert: 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 @@ -79,7 +102,7 @@ convert: -F $*.res $(OBJ): $(SRC) $(GEN) | obj - @echo "JAVAC $@" + @echo "JAVAC obj/*.class" @javac -g -Xlint:unchecked \ -bootclasspath $(ANDROID) \ -encoding UTF-8 \ @@ -90,6 +113,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) \ @@ -100,3 +128,6 @@ $(GEN): AndroidManifest.xml $(RES) | gen # Directories bin gen obj: @mkdir -p $@ + +# Keep intermediate files +.SECONDARY: