]> Pileus Git - ~andy/iBeaconNav/blob - makefile
Update build settings
[~andy/iBeaconNav] / makefile
1 -include config.mk
2
3 # Settings
4 PROGRAM ?= iBeaconNav
5 PACKAGE ?= edu.ucla.iBeaconNav
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 MAPLIB  ?= /opt/android-sdk-update-manager/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
12 TOOLS   ?= /opt/android-sdk-update-manager/build-tools/19.0.1
13
14 # Variables
15 PATH    := $(PATH):$(TOOLS)
16 DIR     := $(subst .,/,$(PACKAGE))
17 RES     := $(wildcard res/*/*.*)
18 SRC     := $(wildcard src/$(DIR)/*.java)
19 GEN     := gen/$(DIR)/R.java
20 OBJ     := obj/$(DIR)/R.class
21 APK     := java -classpath $(SDKLIB) \
22                 com.android.sdklib.build.ApkBuilderMain
23
24 # Targets
25 debug: bin/$(PROGRAM).dbg
26
27 release: bin/$(PROGRAM).apk
28
29 compile: $(OBJ)
30
31 clean:
32         rm -rf bin gen obj
33
34 # ADB targets
35 logcat:
36         adb logcat $(PROGRAM):D AndroidRuntime:E '*:S'
37
38 run: bin/install.stamp
39         adb shell am start -W                 \
40                 -a android.intent.action.MAIN \
41                 -n $(PACKAGE)/.Main
42
43 install bin/install.stamp: bin/$(PROGRAM).dbg
44         adb install -r $+
45         touch bin/install.stamp
46
47 uninstall:
48         adb uninstall $(PACKAGE)
49         rm -f bin/install.stamp
50
51 # Rules
52 %.dbg: %.dex %.res | bin
53         @echo "APK    $@.in"
54         @$(APK) $@.in -f $*.dex -z $*.res
55         @echo "ALIGN  $@"
56         @zipalign -f 4 $@.in $@
57
58 %.apk: %.dex %.res | bin
59         @echo "APKU   $@.in"
60         @$(APK) $@.in -u -f $*.dex -z $*.res
61         @echo "SIGN   $@.in"
62         @jarsigner -storetype $(KEYTYPE)  \
63                    -keystore  $(KEYFILE)  \
64                    $@.in      $(KEYNAME)
65         @echo "ALIGN  $@"
66         @zipalign -f 4 $@.in $@
67
68 %.dex: $(OBJ) makefile | bin
69         @echo "DEX    $@ obj $(notdir $(MAPLIB))"
70         @dx --dex --output $@ obj $(MAPLIB)
71
72 %.res: AndroidManifest.xml $(RES) | bin
73         @echo "RES    $@"
74         @aapt package -f -m               \
75                 --auto-add-overlay        \
76                 -I $(ANDROID)             \
77                 -M AndroidManifest.xml    \
78                 -S res                    \
79                 -S /opt/android-sdk-update-manager/extras/google/google_play_services/libproject/google-play-services_lib/res \
80                 -F $*.res
81
82 $(OBJ): $(SRC) $(GEN) makefile | obj
83         @echo "JAVAC  obj/*.class $+"
84         @JARS=$(ANDROID):$(MAPLIB);       \
85          javac -g                         \
86                 -Xlint:unchecked          \
87                 -Xlint:deprecation        \
88                 -bootclasspath $$JARS     \
89                 -encoding      UTF-8      \
90                 -source        1.5        \
91                 -target        1.5        \
92                 -classpath     obj        \
93                 -d             obj        \
94                 $(filter-out makefile,$+) gen/com/google/android/gms/R.java
95
96 $(GEN): AndroidManifest.xml $(RES) | gen
97         @echo "GEN    $@"
98         @aapt package -f -m               \
99                 -I $(ANDROID)             \
100                 -M /opt/android-sdk-update-manager/extras/google/google_play_services/libproject/google-play-services_lib/AndroidManifest.xml \
101                 -S /opt/android-sdk-update-manager/extras/google/google_play_services/libproject/google-play-services_lib/res \
102                 -J gen
103         @aapt package -f -m               \
104                 --auto-add-overlay        \
105                 -I $(ANDROID)             \
106                 -M AndroidManifest.xml    \
107                 -S res                    \
108                 -S /opt/android-sdk-update-manager/extras/google/google_play_services/libproject/google-play-services_lib/res \
109                 -J gen
110
111 # Directories
112 bin gen obj:
113         @mkdir -p $@
114
115 # Keep intermediate files
116 .SECONDARY: