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