Merge pull request #3594 from t-nelson/pivos_add_bitstream_writer
[vuplus_xbmc] / tools / android / packaging / Makefile
1 include ../../depends/Makefile.include
2
3 OBJS = libcurl.so \
4   librtmp.so  libmad.so \
5   libafpclient.so  \
6   libplist.so libshairplay.so \
7   libxbogg.so libxbvorbis.so libxbvorbisfile.so libxbFLAC.so libxbmpeg2.so \
8   libxbmpeg2convert.so libnfs.so libass.so libbluray.so
9
10 PLATFORM_OBJS =
11 EXCLUDED_ADDONS = screensaver.rsxs.euphoria visualization.dxspectrum visualization.milkdrop visualization.projectm
12
13 XBMCROOT = $(shell cd $(CURDIR)/../../..; pwd)
14 COPYDIRS = system addons language media
15 AAPT = $(SDKROOT)/platform-tools/aapt
16 DX = $(SDKROOT)/platform-tools/dx
17 GCC_VERSION=$(shell $(CC) -dumpversion)
18
19 X86OVERRIDES=XBMC_OVERRIDE_HOST=i686-android-linux XBMC_OVERRIDE_TOOLCHAIN=$(XBMC_X86_TOOLCHAIN)
20 ARMOVERRIDES=XBMC_OVERRIDE_HOST=arm-linux-androideabi XBMC_OVERRIDE_TOOLCHAIN=$(XBMC_ARM_TOOLCHAIN)
21
22 #this fixes a android ndk fuckup where the pathes to 
23 #prebuilt stuff follow different name shemes for
24 #arm and x86
25 ifeq ($(findstring i686,$(CPU)),i686)
26 ARCH=x86
27 CPU=x86
28 endif
29 ifeq ($(findstring arm,$(CPU)),arm)
30 ARCH=arm
31 endif
32
33 #older ndk x86
34 GDBPATH=$(NDKROOT)/toolchains/$(ARCH)-$(GCC_VERSION)/prebuilt/gdbserver
35
36 ifneq ($(shell test -f $(GDBPATH) && echo 1),1)
37 #older ndk arm
38 GDBPATH=$(NDKROOT)/toolchains/$(HOST)-$(GCC_VERSION)/prebuilt/gdbserver
39 endif
40
41 ifneq ($(shell test -f $(GDBPATH) && echo 1),1)
42 #vanilla ndk >= 8
43 GDBPATH=$(NDKROOT)/prebuilt/android-$(ARCH)/gdbserver/gdbserver
44 endif
45
46 all: package
47 SRCLIBS = $(addprefix $(PREFIX)/lib/,$(OBJS)) $(addprefix $(PREFIX)/lib/$(SDK_PLATFORM)/,$(PLATFORM_OBJS))
48 DSTLIBS = $(CPU)/lib/libxbmc.so $(addprefix $(CPU)/lib/,$(OBJS)) $(addprefix $(CPU)/lib/,$(PLATFORM_OBJS))
49 libs= $(DSTLIBS)
50
51 multi: x86 arm
52         @cp images/xbmcapp-debug-skeleton.apk images/xbmcapp-debug-multi-unaligned.apk
53         @cd xbmc; zip -r -q ../images/xbmcapp-debug-multi-unaligned.apk lib/ assets
54         @jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore -storepass android images/xbmcapp-debug-multi-unaligned.apk androiddebugkey
55         @$(SDKROOT)/tools/zipalign -f 4 images/xbmcapp-debug-multi-unaligned.apk $(XBMCROOT)/xbmcapp-multi-debug.apk
56         @rm images/xbmcapp-debug-multi-unaligned.apk
57         @echo "$(XBMCROOT)/xbmcapp-multi-debug.apk created"
58
59 package: extras
60         @cp images/xbmcapp-debug-skeleton.apk images/xbmcapp-debug-$(CPU)-unaligned.apk
61         @javac -classpath $(SDKROOT)/platforms/$(SDK_PLATFORM)/android.jar:xbmc/obj -d xbmc/obj -sourcepath xbmc/src xbmc/src/*.java
62         @javac -classpath $(SDKROOT)/platforms/$(SDK_PLATFORM)/android.jar:xbmc/obj -d xbmc/obj -sourcepath xbmc/src xbmc/src/org/xbmc/xbmc/*.java
63         @$(DX) --dex --output=xbmc/classes.dex xbmc/obj
64         @cd xbmc; zip -r -q ../images/xbmcapp-debug-$(CPU)-unaligned.apk lib/$(CPU) assets classes.dex
65         @jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore -storepass android images/xbmcapp-debug-$(CPU)-unaligned.apk androiddebugkey
66         @$(SDKROOT)/tools/zipalign -f 4 images/xbmcapp-debug-$(CPU)-unaligned.apk $(XBMCROOT)/xbmcapp-$(CPU)-debug.apk
67         @rm images/xbmcapp-debug-$(CPU)-unaligned.apk
68         @echo "$(XBMCROOT)/xbmcapp-$(CPU)-debug.apk created"
69
70 extras: libs
71         rm -rf xbmc/assets
72         mkdir -p xbmc/assets xbmc/res xbmc/res/raw xbmc/assets/python2.6/lib/
73         cp -rfp $(PREFIX)/share/xbmc/* ./xbmc/assets
74         find `pwd`/xbmc/assets/ -depth -name ".git" -exec rm -rf {} \;
75         find `pwd`/xbmc/assets/system/ -name "*.so" -exec rm {} \;
76         find `pwd`/xbmc/assets/addons/skin.*/media/* -depth -not -iname "Textures.xbt" -exec rm -rf {} \;
77         @echo "native_arch=$(ARCH)" > xbmc/res/raw/xbmc.properties
78         cd xbmc/assets/addons; rm -rf $(EXCLUDED_ADDONS)
79         cp -rfp $(PREFIX)/lib/python2.6 xbmc/assets/python2.6/lib/
80         cp -rfp $(XBMCROOT)/media/Splash.png xbmc/res/drawable/splash.png
81         cd xbmc/assets/python2.6/lib/python2.6/; rm -rf test config lib-dynload
82         mkdir -p tmp/res; $(AAPT) c -S xbmc/res -C tmp/res; cp -r -n xbmc/res tmp/ || true
83         $(AAPT) p -f -I $(SDKROOT)/platforms/$(SDK_PLATFORM)/android.jar -S tmp/res/ -M xbmc/AndroidManifest.xml -F images/xbmcapp-debug-skeleton.apk -J xbmc/src
84         @rm -rf tmp/
85
86 libs: $(PREFIX)/lib/xbmc/libxbmc.so
87         rm -rf xbmc/lib/$(CPU) xbmc/libs/$(CPU) xbmc/obj/local/$(CPU)
88         mkdir -p xbmc/lib/$(CPU) images xbmc/assets/python2.6/lib/ xbmc/libs/$(CPU) xbmc/obj/local/$(CPU)
89         cp -fp $(SRCLIBS) xbmc/obj/local/$(CPU)/
90         cp -fp $(PREFIX)/lib/xbmc/libxbmc.so xbmc/obj/local/$(CPU)/
91         find $(PREFIX)/lib/xbmc/addons -name "*.so" -exec cp -fp {} xbmc/obj/local/$(CPU)/ \;
92         find $(PREFIX)/lib/xbmc/system -name "*.so" -exec cp -fp {} xbmc/obj/local/$(CPU)/ \;
93         cd xbmc/obj/local/$(CPU)/; find . -name "*.so" -not -name "lib*.so" | sed "s/\.\///" | xargs -I@ mv @ lib@
94         cp -fp xbmc/obj/local/$(CPU)/*.so xbmc/lib/$(CPU)/
95         $(STRIP) --strip-unneeded xbmc/lib/$(CPU)/*.so
96         install -p $(GDBPATH) ./xbmc/libs/$(CPU)/gdbserver
97         echo "set solib-search-path ./obj/local/$(CPU)" > ./xbmc/libs/$(CPU)/gdb.setup
98         echo "directory $(TOOLCHAIN)/sysroot/usr/include $(NDKROOT)/sources/android/native_app_glue" \
99              "$(NDKROOT)/sources/cxx-stl/gnu-libstdc++/$(GCC_VERSION)/include $(XBMCROOT)  $(PREFIX)/include jni" >> ./xbmc/libs/$(CPU)/gdb.setup
100         cp -fp xbmc/libs/$(CPU)/* xbmc/lib/$(CPU)
101
102 $(PREFIX)/lib/xbmc/libxbmc.so: $(SRCLIBS)
103         $(MAKE) -C ../../depends/target/xbmc
104
105 $(SRCLIBS):
106
107 arm: armeabi-v7a
108
109 armeabi-v7a: $(XBMC_ARM_TOOLCHAIN) force
110         XBMC_OVERRIDE_PLATFORM=$@ $(ARMOVERRIDES) $(MAKE) package
111
112 x86: $(XBMC_X86_TOOLCHAIN) force
113         XBMC_OVERRIDE_PLATFORM=$@ $(X86OVERRIDES) $(MAKE) package
114
115 clean:
116         rm -rf images
117         rm -rf xbmc/lib
118         rm -rf xbmc/libs
119         rm -rf xbmc/assets
120         rm -rf xbmc/obj
121         rm -rf xbmc/res/raw
122         rm -rf tmp
123         rm xbmc/res/drawable/splash.png
124         rm xbmc/src/R.java
125         rm xbmc/classes.dex
126
127 .PHONY: arm armeabi-v7a x86 force extras libs