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