include ../../depends/Makefile.include OBJS = libcurl.so \ librtmp.so \ libafpclient.so \ libplist.so libshairplay.so \ libxbogg.so libxbvorbis.so libxbvorbisfile.so libxbmpeg2.so \ libxbmpeg2convert.so libnfs.so libass.so libbluray.so PLATFORM_OBJS = EXCLUDED_ADDONS = screensaver.rsxs.euphoria visualization.dxspectrum visualization.milkdrop visualization.projectm XBMCROOT = $(shell cd $(CURDIR)/../../..; pwd) COPYDIRS = system addons language media GCC_VERSION=$(shell $(CC) -dumpversion) ZIP=zip SIGN_STORE=~/.android/debug.keystore SIGN_STOREPASS=android SIGN_KEY=androiddebugkey SIGN_KEYPASS= ifneq ($(strip $(SIGN_KEYPASS)),) SIGN_KEYPASS_OPT=-keypass $(SIGN_KEYPASS) endif X86OVERRIDES=XBMC_OVERRIDE_HOST=i686-android-linux XBMC_OVERRIDE_TOOLCHAIN=$(XBMC_X86_TOOLCHAIN) ARMOVERRIDES=XBMC_OVERRIDE_HOST=arm-linux-androideabi XBMC_OVERRIDE_TOOLCHAIN=$(XBMC_ARM_TOOLCHAIN) #this fixes a android ndk fuckup where the pathes to #prebuilt stuff follow different name shemes for #arm and x86 ifeq ($(findstring i686,$(CPU)),i686) ARCH=x86 CPU=x86 endif ifeq ($(findstring arm,$(CPU)),arm) ARCH=arm CPU=armeabi-v7a endif #older ndk x86 GDBPATH=$(NDKROOT)/toolchains/$(ARCH)-$(GCC_VERSION)/prebuilt/gdbserver ifneq ($(shell test -f $(GDBPATH) && echo 1),1) #older ndk arm GDBPATH=$(NDKROOT)/toolchains/$(HOST)-$(GCC_VERSION)/prebuilt/gdbserver endif ifneq ($(shell test -f $(GDBPATH) && echo 1),1) #vanilla ndk >= 8 GDBPATH=$(NDKROOT)/prebuilt/android-$(ARCH)/gdbserver/gdbserver endif SRCLIBS = $(addprefix $(PREFIX)/lib/,$(OBJS)) $(addprefix $(PREFIX)/lib/$(SDK_PLATFORM)/,$(PLATFORM_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 apk-sign obb: apk-clean sharedobb apk-unsigned: apk-clean sharedapk package apk-obb: apk-clean sharedobb package apk-sign apk-obb-unsigned: apk-clean sharedobb package apk-noobb: apk-clean package apk-sign xbmc/assets: mkdir -p xbmc/assets shared: mkdir -p assets cp -rfp $(PREFIX)/share/@APP_NAME_LC@/* ./assets find `pwd`/assets/ -depth -name ".git" -exec rm -rf {} \; find `pwd`/assets/system/ -name "*.so" -exec rm {} \; find `pwd`/assets/addons/skin.*/media/* -depth -not -iname "Textures.xbt" -exec rm -rf {} \; find `pwd`/assets/system/keymaps/ -depth -name "joystick*.xml" ! -name "joystick.xml" -exec rm {} \; mv -f `pwd`/assets/system/keymaps/joystick.xml.sample `pwd`/assets/system/keymaps/joystick.xml cd assets; rm -rf $(EXCLUDED_ADDONS) sharedapk: shared | xbmc/assets cp -rfp assets/* ./xbmc/assets sharedobb: shared rm -f $(XBMCROOT)/main.@APP_NAME_LC@.obb $(ZIP) -9 -q -r $(XBMCROOT)/main.@APP_NAME_LC@.obb assets @echo "$(XBMCROOT)/main.@APP_NAME_LC@.obb created" python: | xbmc/assets mkdir -p xbmc/assets/python2.6/lib/ cp -rfp $(PREFIX)/lib/python2.6 xbmc/assets/python2.6/lib/ cd xbmc/assets/python2.6/lib/python2.6/; rm -rf test config lib-dynload res: mkdir -p xbmc/res xbmc/res/raw xbmc/res/values images @echo "native_arch=$(ARCH)" > xbmc/res/raw/xbmc.properties cp -fp $(XBMCROOT)/media/Splash.png xbmc/res/drawable/splash.png 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 media/drawable-xhdpi/banner.png xbmc/res/drawable-xhdpi/banner.png cp xbmc/strings.xml xbmc/res/values/ mkdir -p tmp/res; $(AAPT) c -S xbmc/res -C tmp/res; cp -r -n xbmc/res tmp/ || true $(AAPT) p -f -I $(SDKROOT)/platforms/$(SDK_PLATFORM)/android.jar -S tmp/res/ -M xbmc/AndroidManifest.xml -F images/@APP_NAME_LC@app-debug-skeleton.apk -J xbmc/src @rm -rf tmp/ libs: $(PREFIX)/lib/@APP_NAME_LC@/lib@APP_NAME_LC@.so rm -rf xbmc/lib/$(CPU) xbmc/libs/$(CPU) xbmc/obj/local/$(CPU) mkdir -p xbmc/lib/$(CPU) xbmc/assets/python2.6/lib/ xbmc/libs/$(CPU) xbmc/obj/local/$(CPU) cp -fp $(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)/ \; find $(PREFIX)/lib/@APP_NAME_LC@/system -name "*.so" -exec cp -fp {} xbmc/obj/local/$(CPU)/ \; 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 install -p $(GDBPATH) ./xbmc/libs/$(CPU)/gdbserver echo "set solib-search-path ./obj/local/$(CPU)" > ./xbmc/libs/$(CPU)/gdb.setup echo "directory $(TOOLCHAIN)/sysroot/usr/include $(NDKROOT)/sources/android/native_app_glue" \ "$(NDKROOT)/sources/cxx-stl/gnu-libstdc++/$(GCC_VERSION)/include $(XBMCROOT) $(PREFIX)/include jni" >> ./xbmc/libs/$(CPU)/gdb.setup cp -fp xbmc/libs/$(CPU)/* xbmc/lib/$(CPU) xbmc/classes.dex: res mkdir -p xbmc/obj @javac -classpath $(SDKROOT)/platforms/$(SDK_PLATFORM)/android.jar:xbmc/obj -d xbmc/obj -sourcepath xbmc/src xbmc/src/*.java @javac -classpath $(SDKROOT)/platforms/$(SDK_PLATFORM)/android.jar:xbmc/obj -d xbmc/obj -sourcepath xbmc/src xbmc/src/org/xbmc/@APP_NAME_LC@/*.java @$(DX) --dex --output=xbmc/classes.dex xbmc/obj package: libs python xbmc/classes.dex @echo "Creating package..." @cp images/@APP_NAME_LC@app-debug-skeleton.apk images/@APP_NAME_LC@app-debug-$(CPU)-unaligned.apk @cd xbmc; $(ZIP) -r -q ../images/@APP_NAME_LC@app-debug-$(CPU)-unaligned.apk lib/$(CPU) assets classes.dex apk-sign: @echo "Signing..." @jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore $(SIGN_STORE) -storepass $(SIGN_STOREPASS) $(SIGN_KEYPASS_OPT) images/@APP_NAME_LC@app-debug-$(CPU)-unaligned.apk $(SIGN_KEY) @$(ZIPALIGN) -f 4 images/@APP_NAME_LC@app-debug-$(CPU)-unaligned.apk $(XBMCROOT)/@APP_NAME_LC@app-$(CPU)-debug.apk @rm images/@APP_NAME_LC@app-debug-$(CPU)-unaligned.apk @echo "$(XBMCROOT)/@APP_NAME_LC@app-$(CPU)-debug.apk created" $(PREFIX)/lib/xbmc/lib@APP_NAME_LC@.so: $(SRCLIBS) $(MAKE) -C ../../depends/target/xbmc $(SRCLIBS): apk-clean: rm -rf images rm -rf xbmc/lib rm -rf xbmc/libs rm -rf xbmc/assets rm -rf xbmc/obj rm -rf xbmc/res/raw rm -rf xbmc/res/values rm -rf tmp rm -f xbmc/res/drawable/splash.png rm -f xbmc/src/R.java rm -f xbmc/classes.dex rm -rf assets .PHONY: force libs assets python sharedapk sharedobb res package