include ../../depends/Makefile.include BUILD_TYPE:=@CMAKE_BUILD_TYPE@ BUILD_TYPE_LC:=$(shell echo $(BUILD_TYPE) | tr A-Z a-z) OBJS = libshairplay.so \ libass.so PLATFORM_OBJS = EXCLUDED_ADDONS = CMAKE_SOURCE_DIR = $(shell cd $(CURDIR)/../../..; pwd) APP_PACKAGE_DIR = $(subst .,/,@APP_PACKAGE@) COPYDIRS = system addons media GCC_VERSION=$(shell $(CC) -dumpversion) ZIP=zip 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 #this fixes a android ndk fuckup where the paths to #prebuilt stuff follow different name schemes for #arm and x86 ifeq ($(findstring x86_64,$(CPU)),x86_64) ARCH=x86_64 else ifeq ($(findstring x86,$(CPU)),x86) ARCH=x86 else ifeq ($(findstring arm64,$(CPU)),arm64) ARCH=arm64 else ifeq ($(findstring arm,$(CPU)),arm) ARCH=arm endif # libc++ STLLIB=$(TOOLCHAIN)/sysroot/usr/lib/$(HOST)/libc++_shared.so # check for java 1.8 JAVA8=$(shell java -version 2>&1 | grep -q '1.8.[0-9]' && echo yes) ifeq ($(JAVA8),yes) JAVAC_EXTRA_ARGS = -source 1.7 -target 1.7 endif SRCLIBS = $(addprefix $(PREFIX)/lib/,$(OBJS)) DSTLIBS = $(CPU)/lib/lib@APP_NAME_LC@.so $(addprefix $(CPU)/lib/,$(OBJS)) $(addprefix $(CPU)/lib/,$(PLATFORM_OBJS)) libs= $(DSTLIBS) all: apk apk: apk-clean sharedapk 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 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/values images 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)/ 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 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/values rm -f xbmc/res/drawable/splash.* rm -f xbmc/res/drawable-xxxhdpi/splash.* rm -rf assets .PHONY: force libs assets python sharedapk res package