blob: ed39973165f83a52c295319752af21dc9e21177d [file] [log] [blame]
Thomas Martitzf8381d92010-09-02 00:24:40 +00001# __________ __ ___.
2# Open \______ \ ____ ____ | | _\_ |__ _______ ___
3# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
6# \/ \/ \/ \/ \/
7# $Id$
8#
9
Thomas Martitz4e982d32010-09-02 03:40:02 +000010.SECONDEXPANSION: # $$(JAVA_OBJ) is not populated until after this
Thomas Martitzf8381d92010-09-02 00:24:40 +000011.SECONDEXPANSION: # $$(OBJ) is not populated until after this
Thomas Martitza9944012010-09-12 16:35:02 +000012.PHONY: apk classes clean dex dirs libs
Thomas Martitz4e982d32010-09-02 03:40:02 +000013
Thomas Martitzf8381d92010-09-02 00:24:40 +000014$(BUILDDIR)/$(BINARY): $$(OBJ) $(VOICESPEEXLIB) $(FIRMLIB) $(SKINLIB)
15 $(call PRINTS,LD $(BINARY))$(CC) -o $@ $^ $(LDOPTS) $(GLOBAL_LDOPTS)
Thomas Martitz4e982d32010-09-02 03:40:02 +000016
17PACKAGE=org.rockbox
18PACKAGE_PATH=org/rockbox
19ANDROID_DIR=$(ROOTDIR)/android
Thomas Martitz994aba12010-09-02 14:58:36 +000020BINLIB_DIR=$(BUILDDIR)/libs/armeabi
Thomas Martitz4e982d32010-09-02 03:40:02 +000021
Thomas Martitz4e982d32010-09-02 03:40:02 +000022java2class = $(addsuffix .class,$(basename $(subst $(ANDROID_DIR),$(BUILDDIR),$(1))))
23
Björn Stenberg40e61a72010-09-21 09:22:52 +000024# API version
Thomas Martitz4e982d32010-09-02 03:40:02 +000025ANDROID_PLATFORM_VERSION=8
Thomas Martitz4e982d32010-09-02 03:40:02 +000026ANDROID_PLATFORM=$(ANDROID_SDK_PATH)/platforms/android-$(ANDROID_PLATFORM_VERSION)
Björn Stenberg40e61a72010-09-21 09:22:52 +000027
28# android tools
Thomas Martitz4e982d32010-09-02 03:40:02 +000029AAPT=$(ANDROID_PLATFORM)/tools/aapt
30DX=$(ANDROID_PLATFORM)/tools/dx
31APKBUILDER=$(ANDROID_SDK_PATH)/tools/apkbuilder
32ZIPALIGN=$(ANDROID_SDK_PATH)/tools/zipalign
Björn Stenberg40e61a72010-09-21 09:22:52 +000033KEYSTORE=$(HOME)/.android/debug.keystore
Thomas Martitz4e982d32010-09-02 03:40:02 +000034
35MANIFEST := $(ANDROID_DIR)/AndroidManifest.xml
36
37R_JAVA := $(BUILDDIR)/gen/$(PACKAGE_PATH)/R.java
38R_OBJ := $(BUILDDIR)/bin/$(PACKAGE_PATH)/R.class
39
40JAVA_SRC := $(wildcard $(ANDROID_DIR)/src/$(PACKAGE_PATH)/*.java)
Björn Stenberg1c80a1f2010-09-20 22:04:32 +000041JAVA_OBJ := $(call java2class,$(subst $(ANDROID)/src/$(PACKAGE_PATH),$(ANDROID)/bin/$(PACKAGE_PATH),$(JAVA_SRC)))
Thomas Martitz4e982d32010-09-02 03:40:02 +000042
Thomas Martitz994aba12010-09-02 14:58:36 +000043LIBS := $(BINLIB_DIR)/$(BINARY) $(BINLIB_DIR)/libmisc.so
Thomas Martitz4e982d32010-09-02 03:40:02 +000044TEMP_APK := $(BUILDDIR)/bin/_Rockbox.apk
Thomas Martitz994aba12010-09-02 14:58:36 +000045TEMP_APK2 := $(BUILDDIR)/bin/__Rockbox.apk
Thomas Martitza9944012010-09-12 16:35:02 +000046DEX := $(BUILDDIR)/bin/classes.dex
47AP_ := $(BUILDDIR)/bin/resources.ap_
48APK := $(BUILDDIR)/bin/Rockbox.apk
Thomas Martitz4e982d32010-09-02 03:40:02 +000049
Thomas Martitz994aba12010-09-02 14:58:36 +000050_DIRS := $(BUILDDIR)/___/$(PACKAGE_PATH)
51DIRS := $(subst ___,bin,$(_DIRS))
52DIRS += $(subst ___,gen,$(_DIRS))
53DIRS += $(subst ___,data,$(_DIRS))
54DIRS += $(BUILDDIR)/libs/armeabi
55
Thomas Martitza9944012010-09-12 16:35:02 +000056$(R_JAVA) $(AP_): $(MANIFEST)
Björn Stenberg40e61a72010-09-21 09:22:52 +000057 $(call PRINTS,AAPT $(subst $(BUILDDIR)/,,$@))$(AAPT) package -f -m \
58 -J $(BUILDDIR)/gen -M $(MANIFEST) -S $(ANDROID_DIR)/res \
59 -I $(ANDROID_PLATFORM)/android.jar -F $(AP_)
Thomas Martitz4e982d32010-09-02 03:40:02 +000060
61$(BUILDDIR)/bin/$(PACKAGE_PATH)/R.class: $(R_JAVA)
Thomas Martitz994aba12010-09-02 14:58:36 +000062 $(call PRINTS,JAVAC $(subst $(ROOTDIR)/,,$<))javac -d $(BUILDDIR)/bin \
Björn Stenberg40e61a72010-09-21 09:22:52 +000063 -classpath $(ANDROID_PLATFORM)/android.jar:$(BUILDDIR)/bin \
64 -sourcepath $(ANDROID_DIR)/gen:$(ANDROID_DIR)/src $<
Thomas Martitz4e982d32010-09-02 03:40:02 +000065
66$(BUILDDIR)/bin/$(PACKAGE_PATH)/%.class: $(ANDROID_DIR)/src/$(PACKAGE_PATH)/%.java
Thomas Martitz994aba12010-09-02 14:58:36 +000067 $(call PRINTS,JAVAC $(subst $(ROOTDIR)/,,$<))javac -d $(BUILDDIR)/bin \
Björn Stenberg40e61a72010-09-21 09:22:52 +000068 -classpath $(ANDROID_PLATFORM)/android.jar:$(BUILDDIR)/bin \
69 -sourcepath $(ANDROID_DIR)/gen:$(ANDROID_DIR)/src $<
Thomas Martitz4e982d32010-09-02 03:40:02 +000070
Thomas Martitza9944012010-09-12 16:35:02 +000071$(DEX): $(R_OBJ) $(JAVA_OBJ)
Thomas Martitz4e982d32010-09-02 03:40:02 +000072 $(call PRINTS,DX $(subst $(BUILDDIR)/,,$@))$(DX) --dex --output=$@ $(BUILDDIR)/bin
73
Thomas Martitza9944012010-09-12 16:35:02 +000074classes: $(R_OBJ) $(JAVA_OBJ)
75
76dex: $(DEX)
Thomas Martitz4e982d32010-09-02 03:40:02 +000077
Thomas Martitz994aba12010-09-02 14:58:36 +000078$(BINLIB_DIR)/$(BINARY): $(BUILDDIR)/$(BINARY)
Thomas Martitz4e982d32010-09-02 03:40:02 +000079 $(call PRINTS,CP $(BINARY))cp $^ $@
80
Thomas Martitz55d70362010-09-22 20:50:06 +000081$(BINLIB_DIR)/libmisc.so:
Thomas Martitz4e982d32010-09-02 03:40:02 +000082 $(call PRINTS,CP rockbox.zip)cp $^ $@
83
84libs: $(LIBS)
85
Björn Stenberg40e61a72010-09-21 09:22:52 +000086$(TEMP_APK): $(DIRS) $(LIBS) $(DEX)
Thomas Martitz4e982d32010-09-02 03:40:02 +000087 $(call PRINTS,APK $(subst $(BUILDDIR)/,,$@))$(APKBUILDER) $@ \
Thomas Martitza9944012010-09-12 16:35:02 +000088 -u -z $(AP_) -f $(DEX) -nf $(BUILDDIR)/libs
Thomas Martitz4e982d32010-09-02 03:40:02 +000089
Björn Stenberg40e61a72010-09-21 09:22:52 +000090$(KEYSTORE):
91 $(call PRINTS,KEYTOOL debug.keystore)keytool -genkey \
92 -alias androiddebugkey -keystore $@ \
93 -storepass android -keypass android -validity 365 \
94 -dname "CN=Android Debug,O=Android,C=US"
95
96$(APK): $(TEMP_APK) $(BUILDDIR)/rockbox.zip $(KEYSTORE)
Thomas Martitz4e982d32010-09-02 03:40:02 +000097 $(SILENT)rm -f $@
98 $(call PRINTS,SIGN $(subst $(BUILDDIR)/,,$@))jarsigner \
Björn Stenberg40e61a72010-09-21 09:22:52 +000099 -keystore "$(KEYSTORE)" -storepass "android" -keypass "android" \
100 -signedjar $(TEMP_APK2) $(TEMP_APK) "androiddebugkey"
Thomas Martitz994aba12010-09-02 14:58:36 +0000101 $(SILENT)$(ZIPALIGN) -v 4 $(TEMP_APK2) $@ > /dev/null
Thomas Martitz4e982d32010-09-02 03:40:02 +0000102
Thomas Martitzaa0f8952010-09-12 20:50:30 +0000103$(DIRS):
104 $(SILENT)mkdir -p $@
Thomas Martitz994aba12010-09-02 14:58:36 +0000105
Thomas Martitzaa0f8952010-09-12 20:50:30 +0000106dirs: $(DIRS)
107
Björn Stenberg40e61a72010-09-21 09:22:52 +0000108apk: $(APK)
Thomas Martitza9944012010-09-12 16:35:02 +0000109
110clean::
111 $(SILENT)rm -f $(BUILDDIR)/bin/$(PACKAGE_PATH)/*.class $(R_JAVA) $(TEMP_APK) $(TEMP_APK2) $(APK) $(DEX) $(BUILDDIR)/_rockbox.zip $(AP_) $(LIBS)