]> Pileus Git - ~andy/spades/blob - makefile
Store Task state so we can restart Main
[~andy/spades] / makefile
1 # Settings
2 ANDROID := /opt/android-sdk-update-manager/platforms/android-10/android.jar
3 PACKAGE := org.pileus.spades
4 OUTPUT  := bin/Spades.apk
5
6 # Sources
7 RES     := $(shell find res -name '*.xml')
8 SRC     := $(shell find src -name '*.java')
9
10 # Objects
11 GEN     := gen/$(subst .,/,$(PACKAGE))/R.java
12 OBJ     := $(subst .java,.class,   \
13                 $(SRC:src/%=obj/%) \
14                 $(GEN:gen/%=obj/%))
15
16 # Targets
17 default: run
18
19 compile: $(OBJ)
20
21 debug: $(OUTPUT)
22
23 clean:
24         rm -rf bin gen obj
25
26 logcat:
27         adb logcat Spades:D AndroidRuntime:E '*:S'
28
29 run: bin/install.stamp
30         adb shell am start -W -a android.intent.action.MAIN -n $(PACKAGE)/.Main
31
32 install bin/install.stamp: $(OUTPUT)
33         adb install -r $+
34         touch bin/install.stamp
35
36 uninstall:
37         adb uninstall $(PACKAGE)
38         rm bin/install.stamp
39
40 graphics:
41         git checkout graphics  --    \
42                 'opt/drawable/*.svg' \
43                 'opt/drawable/*.xcf' \
44                 'res/drawable/*.png' \
45                 'res/drawable/*.jpg'
46         git reset HEAD --            \
47                 'opt/drawable/*.svg' \
48                 'opt/drawable/*.xcf' \
49                 'res/drawable/*.png' \
50                 'res/drawable/*.jpg'
51
52 convert:
53         for svg in opt/drawable/*.svg; do        \
54                 png=$${svg/svg/png};             \
55                 png=$${png/opt/res};             \
56                 rsvg-convert -w 2048 -h 2048     \
57                         $$svg -o $$png;          \
58                 convert -trim -resize '256x256!' \
59                         $$png $$png;             \
60         done
61
62 # Rules
63 %.apk: %.dex %.res | bin
64         @echo "APK    $@.in"
65         @apkbuilder $@.in -f $*.dex -z $*.res
66         @echo ALIGN $@
67         @zipalign -f 4 $@.in $@
68
69 %.dex: $(OBJ) | bin
70         @echo "DEX    $@ "
71         @dx --dex --output $@ obj
72
73 %.res: AndroidManifest.xml $(RES) | bin
74         @echo "RES    $@"
75         @aapt package -f -m               \
76                 -I $(ANDROID)             \
77                 -M AndroidManifest.xml    \
78                 -S res                    \
79                 -F $*.res
80
81 $(OBJ): $(SRC) $(GEN) | obj
82         @echo "JAVAC  $@"
83         @javac -g -Xlint:unchecked        \
84                 -bootclasspath $(ANDROID) \
85                 -encoding      UTF-8      \
86                 -source        1.5        \
87                 -target        1.5        \
88                 -classpath     obj        \
89                 -d             obj        \
90                 $+
91
92 $(GEN): AndroidManifest.xml $(RES) | gen
93         @echo "GEN    $@"
94         @aapt package -f -m               \
95                 -I $(ANDROID)             \
96                 -M AndroidManifest.xml    \
97                 -S res                    \
98                 -J gen
99
100 # Directories
101 bin gen obj:
102         @mkdir -p $@