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