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