aboutsummaryrefslogtreecommitdiff
path: root/tools/android/packaging/Makefile.in
blob: 5111f1ecd20854d17f4e1c140a8b35670b95f23d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
include ../../depends/Makefile.include

BUILD_TYPE:=@CMAKE_BUILD_TYPE@
BUILD_TYPE_LC:=$(shell echo $(BUILD_TYPE) | tr A-Z a-z)

OBJS = libshairplay.so

EXCLUDED_ADDONS =

CMAKE_SOURCE_DIR = $(shell cd $(CURDIR)/../../..; pwd)
APP_PACKAGE_DIR = $(subst .,/,@APP_PACKAGE@)
COPYDIRS = system addons media

ifeq ($(KODI_ANDROID_STORE_FILE),)
export KODI_ANDROID_STORE_FILE:=$(HOME)/.android/debug.keystore
endif

ifeq ($(KODI_ANDROID_STORE_PASSWORD),)
export KODI_ANDROID_STORE_PASSWORD:=android
endif

ifeq ($(KODI_ANDROID_KEY_ALIAS),)
export KODI_ANDROID_KEY_ALIAS:=androiddebugkey
endif

ifeq ($(KODI_ANDROID_KEY_PASSWORD),)
export KODI_ANDROID_KEY_PASSWORD:=android
endif

# libc++
STLLIB=$(TOOLCHAIN)/sysroot/usr/lib/$(HOST)/libc++_shared.so

SRCLIBS = $(addprefix $(PREFIX)/lib/,$(OBJS))
DSTLIBS = $(CPU)/lib/lib@APP_NAME_LC@.so $(addprefix $(CPU)/lib/,$(OBJS))
libs= $(DSTLIBS)

all: apk

apk: apk-clean sharedapk package

obb: apk-clean sharedobb

apk-obb: apk-clean sharedobb package

xbmc/assets:
	mkdir -p xbmc/assets

shared:
	mkdir -p assets
	cp -rfp $(PREFIX)/share/@APP_NAME_LC@/* ./assets
	cp -rfp $(DEPENDS_PATH)/share/kodi/* ./assets || true
	find `pwd`/assets/ -depth -name ".git" -exec rm -rf {} \;
	find `pwd`/assets/ -name "*.so" -exec rm {} \;
	find `pwd`/assets/addons/skin.*/media/* -depth -not -iname "Textures.xbt" -exec rm -rf {} \;
	cd `pwd`/assets/addons; rm -rf $(EXCLUDED_ADDONS)
	cp $(CMAKE_SOURCE_DIR)/privacy-policy.txt assets

sharedapk: shared | xbmc/assets
	cp -rfp assets/* ./xbmc/assets

sharedobb: shared
	rm -f $(CMAKE_SOURCE_DIR)/main.@APP_NAME_LC@.obb
	$(ZIP) -9 -q -r $(CMAKE_SOURCE_DIR)/main.@APP_NAME_LC@.obb assets
	@echo "$(CMAKE_SOURCE_DIR)/main.@APP_NAME_LC@.obb created"

python: | xbmc/assets
	mkdir -p xbmc/assets/python@PYTHON_VERSION@/lib/
	cp -rfp $(PREFIX)/lib/python@PYTHON_VERSION@ xbmc/assets/python@PYTHON_VERSION@/lib/
	cd xbmc/assets/python@PYTHON_VERSION@/lib/python@PYTHON_VERSION@/; rm -rf test config config-@PYTHON_VERSION@ lib-dynload ; find . -name "*.so" -exec rm -f {} \;

res:
	mkdir -p xbmc/res xbmc/res/raw xbmc/res/values images
	@echo "native_arch=$(CPU)" > xbmc/res/raw/xbmc.properties
	cp -fp $(CMAKE_SOURCE_DIR)/media/splash.* xbmc/res/drawable/
	cp -fp media/drawable-hdpi/ic_launcher.png xbmc/res/drawable-hdpi/ic_launcher.png
	cp -fp media/drawable-ldpi/ic_launcher.png xbmc/res/drawable-ldpi/ic_launcher.png
	cp -fp media/drawable-mdpi/ic_launcher.png xbmc/res/drawable-mdpi/ic_launcher.png
	cp -fp media/drawable-xhdpi/ic_launcher.png xbmc/res/drawable-xhdpi/ic_launcher.png
	cp -fp media/drawable-xxhdpi/ic_launcher.png xbmc/res/drawable-xxhdpi/ic_launcher.png
	cp -fp $(CMAKE_SOURCE_DIR)/media/splash.* xbmc/res/drawable-xxxhdpi/
	cp -fp media/drawable-xxxhdpi/ic_launcher.png xbmc/res/drawable-xxxhdpi/ic_launcher.png
	cp -fp media/drawable-xhdpi/banner.png xbmc/res/drawable-xhdpi/banner.png
	cp -fp $(CMAKE_SOURCE_DIR)/media/icon80x80.png xbmc/res/drawable/ic_recommendation_80dp.png
	cp xbmc/strings.xml xbmc/res/values/
	cp xbmc/colors.xml xbmc/res/values/
	cp xbmc/searchable.xml xbmc/res/xml/

libs: $(PREFIX)/lib/@APP_NAME_LC@/lib@APP_NAME_LC@.so
	rm -rf xbmc/lib/$(CPU) xbmc/obj/local/$(CPU)
	mkdir -p xbmc/lib/$(CPU) xbmc/assets/python@PYTHON_VERSION@/lib/ xbmc/obj/local/$(CPU)
	cp -fpL $(SRCLIBS) xbmc/obj/local/$(CPU)/
	cp -fp $(PREFIX)/lib/@APP_NAME_LC@/lib@APP_NAME_LC@.so xbmc/obj/local/$(CPU)/
	(test -d $(PREFIX)/lib/@APP_NAME_LC@/addons && \
	  find $(PREFIX)/lib/@APP_NAME_LC@/addons -name "*.so" -exec cp -fp {} xbmc/obj/local/$(CPU)/ \;) || true
	find $(PREFIX)/share/@APP_NAME_LC@/addons -name "*.so" -exec cp -fp {} xbmc/obj/local/$(CPU)/ \; || true
	find $(DEPENDS_PATH)/share/kodi/addons -name "*.so" -exec cp -fp {} xbmc/obj/local/$(CPU)/ \; || true
	(test -d $(DEPENDS_PATH)/lib/kodi/addons && \
	  find $(DEPENDS_PATH)/lib/kodi/addons -name "*.so" -exec cp -fp {} xbmc/obj/local/$(CPU)/ \;) || true
	find $(PREFIX)/lib/@APP_NAME_LC@/system -name "*.so" -exec cp -fp {} xbmc/obj/local/$(CPU)/ \;
	DIR=${CURDIR}; cd $(PREFIX)/lib/python@PYTHON_VERSION@/site-packages; for i in `find Cryptodome -name \*.so` ; do FN=`echo $$i | cut -c1- | tr "/" "_" | sed -e 's/\.cpython-[0-9]\{2,3\}-.*\\./\./g' -e 's/\.abi[0-9]\\././'` ;cp $$i $$DIR/xbmc/obj/local/$(CPU)/$$FN ; done
	cd xbmc/obj/local/$(CPU)/; find . -name "*.so" -not -name "lib*.so" | sed "s/\.\///" | xargs -I@ mv @ lib@
	cp -fp xbmc/obj/local/$(CPU)/*.so xbmc/lib/$(CPU)/
	$(STRIP) --strip-unneeded xbmc/lib/$(CPU)/*.so
	(test -s $(STLLIB) && install -p $(STLLIB) ./xbmc/lib/$(CPU)/) || true

java: res
	mkdir -p xbmc/java/$(APP_PACKAGE_DIR) xbmc/obj
	@cp -R xbmc/src/* xbmc/java/$(APP_PACKAGE_DIR)/

package: libs python java
	@echo "Gradle build and sign..."
	ANDROID_HOME=$(SDKROOT) ./gradlew assemble$(BUILD_TYPE)
	@cp xbmc/build/outputs/apk/$(BUILD_TYPE_LC)/xbmc-$(BUILD_TYPE_LC).apk $(CMAKE_SOURCE_DIR)/@APP_NAME_LC@app-$(CPU)-$(BUILD_TYPE_LC).apk

$(PREFIX)/lib/xbmc/lib@APP_NAME_LC@.so: $(SRCLIBS)
	$(MAKE) -C ../../depends/target/xbmc

$(SRCLIBS):

apk-clean:
	rm -rf images
	rm -rf xbmc/java
	rm -rf xbmc/lib
	rm -rf xbmc/assets
	rm -rf xbmc/obj
	rm -rf xbmc/res/raw
	rm -rf xbmc/res/values
	rm -f xbmc/res/drawable/splash.*
	rm -f xbmc/res/drawable-xxxhdpi/splash.*
	rm -rf assets

.PHONY: force libs assets python sharedapk sharedobb res package