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