]> Pileus Git - ~andy/spades/blobdiff - makefile
Update makefile for new Android SDKs
[~andy/spades] / makefile
index e0a1d30d862e552b2c8b5b0a0b1b52925365132a..49c95d8c5ce6de3abbd16a7aae2b474fa9efd2d3 100644 (file)
--- 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,13 +47,20 @@ uninstall:
        adb uninstall $(PACKAGE)
        rm bin/install.stamp
 
-png-cards:
-       git checkout cards-png -- 'res/drawable/card_*.png'
-       git reset    HEAD      -- 'res/drawable/card_*.png'
-
-svg-cards:
-       git checkout cards-svg -- 'opt/drawable/card_*.svg'
-       git reset    HEAD      -- 'opt/drawable/card_*.svg'
+# 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        \
@@ -56,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
@@ -75,8 +102,8 @@ convert:
                -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        \
@@ -86,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)             \
@@ -96,3 +128,6 @@ $(GEN): AndroidManifest.xml $(RES) | gen
 # Directories
 bin gen obj:
        @mkdir -p $@
+
+# Keep intermediate files
+.SECONDARY: