Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Changes for Android #52

Merged
merged 3 commits into from

2 participants

@theuni
Collaborator

For better or worse (much worse) here's what's needed to get pvr libs built in a way that Android can digest them.

Untested so far, but they all build as expected. Next step will be to get the xbmc deps/packaging fixed up, then wrap em up in an apk and see if they load.

Here's the background:

In order to have it possible to ship these with the apk, they need to be renamed to lib*.so. They must also be unversioned. Currently the soname is not correct, I'll have to do some real-world testing to see if that matters for dyloaded libs.

Cory Fields added some commits
Cory Fields [droid] add android platform and ldflags
Android solibs must be unversioned.
a82b35c
Cory Fields [droid] make prefix and extension configurable per-platform
This is a nasty hack, but one that was used fo vis and screensavers as well.
Android libs must be of the form "^lib.*\.so$" in order to be shipped in the
apk.
7c3589b
Cory Fields [droid] update addon names 90309e6
@theuni theuni referenced this pull request in xbmc/xbmc
Closed

[droid] - add pvraddons to depends #1527

@opdenkamp
Owner

lovely ;-)

@opdenkamp
Owner

didn't break anything on linux

@opdenkamp
Owner

@theuni you got push access now. feel free to hit the button

@theuni theuni merged commit 3edbf3d into from
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Oct 8, 2012
  1. [droid] add android platform and ldflags

    Cory Fields authored
    Android solibs must be unversioned.
  2. [droid] make prefix and extension configurable per-platform

    Cory Fields authored
    This is a nasty hack, but one that was used fo vis and screensavers as well.
    Android libs must be of the form "^lib.*\.so$" in order to be shipped in the
    apk.
  3. [droid] update addon names

    Cory Fields authored
This page is out of date. Refresh to see the latest.
View
16 addons/Makefile.include.am
@@ -6,23 +6,23 @@ INCLUDES = -I. -I$(abs_top_srcdir)/xbmc -I$(abs_top_srcdir)/lib @HOST_INC
WARNINGS = -Wall -Wextra -Wno-missing-field-initializers -Woverloaded-virtual -Wno-parentheses
DEFINES = @ARCH_DEFINES@ -DUSE_DEMUX -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS
AM_CXXFLAGS = -g -O2 -fPIC $(WARNINGS) $(DEFINES) @HOST_CXXFLAGS@
-LIB = @abs_top_srcdir@/addons/$(ADDONNAME)/addon/$(ADDONBINNAME).pvr
+LIB = @abs_top_srcdir@/addons/$(ADDONNAME)/addon/@BINPREFIX@$(ADDONBINNAME)@BIN_EXT@
clean:
- -rm -r -f $(LIB) $(ADDONBINNAME).pvr @abs_top_srcdir@/addons/$(ADDONNAME).@OS@-@ARCHITECTURE@.zip @abs_top_srcdir@/addons/.build/$(ADDONNAME) *.so *.lo *.o *.la *.a *.P *~
+ -rm -r -f $(LIB) @BINPREFIX@$(ADDONBINNAME)@BIN_EXT@ @abs_top_srcdir@/addons/$(ADDONNAME).@OS@-@ARCHITECTURE@.zip @abs_top_srcdir@/addons/.build/$(ADDONNAME) *.so *.lo *.o *.la *.a *.P *~
if IS_INTREE_BUILD
rm -rf ../../../addons/$(ADDONNAME)
endif
release: $(lib_LTLIBRARIES)
- cp -f .libs/$(LIBNAME).@DYN_LIB_EXT@ $(ADDONBINNAME).pvr
- $(STRIP) -x $(ADDONBINNAME).pvr
+ cp -f .libs/$(LIBNAME).@DYN_LIB_EXT@ @BINPREFIX@$(ADDONBINNAME)@BIN_EXT@
+ $(STRIP) -x @BINPREFIX@$(ADDONBINNAME)@BIN_EXT@
debug: $(lib_LTLIBRARIES)
- cp -f .libs/$(LIBNAME).@DYN_LIB_EXT@ $(ADDONBINNAME).pvr
+ cp -f .libs/$(LIBNAME).@DYN_LIB_EXT@ @BINPREFIX@$(ADDONBINNAME)@BIN_EXT@
$(LIB): @BUILD_TYPE@
- cp -f $(ADDONBINNAME).pvr $(LIB)
+ cp -f @BINPREFIX@$(ADDONBINNAME)@BIN_EXT@ $(LIB)
zip: $(LIB)
mkdir -p @abs_top_srcdir@/addons/.build
@@ -35,7 +35,7 @@ if IS_INTREE_BUILD
else
mkdir -m 755 -p $(DESTDIR)@LIBDIR@/$(ADDONNAME)
mkdir -m 755 -p $(DESTDIR)@DATADIR@/$(ADDONNAME)
- cp -f $(ADDONBINNAME).pvr $(DESTDIR)@LIBDIR@/$(ADDONNAME) ; chmod 655 $(DESTDIR)@LIBDIR@/$(ADDONNAME)/$(ADDONBINNAME).pvr
+ cp -f @BINPREFIX@$(ADDONBINNAME)@BIN_EXT@ $(DESTDIR)@LIBDIR@/$(ADDONNAME) ; chmod 655 $(DESTDIR)@LIBDIR@/$(ADDONNAME)/@BINPREFIX@$(ADDONBINNAME)@BIN_EXT@
cp -r -f @abs_top_srcdir@/addons/$(ADDONNAME)/addon/* $(DESTDIR)@DATADIR@/$(ADDONNAME) ; chmod -R o+rx $(DESTDIR)@DATADIR@/$(ADDONNAME)
endif
@@ -44,5 +44,5 @@ if IS_INTREE_BUILD
@echo "copying pvr-addons to xbmc/addons"
rm -rf ../../../addons/$(ADDONNAME)
cp -r -p -f @abs_top_srcdir@/addons/$(ADDONNAME)/addon ../../../addons/$(ADDONNAME)
- cp -f -p $(ADDONBINNAME).pvr ../../../addons/$(ADDONNAME)
+ cp -f -p @BINPREFIX@$(ADDONBINNAME)@BIN_EXT@ ../../../addons/$(ADDONNAME)
endif
View
1  addons/pvr.demo/Makefile.am
@@ -16,4 +16,5 @@ include ../Makefile.include.am
libpvrdemo_addon_la_SOURCES = src/client.cpp \
src/PVRDemoData.cpp
+libpvrdemo_addon_la_LDFLAGS = @TARGET_LDFLAGS@
View
3  addons/pvr.demo/addon/addon.xml
@@ -11,7 +11,8 @@
point="xbmc.pvrclient"
library_linux="XBMC_Demo.pvr"
library_wingl="XBMC_Demo_win32.pvr"
- library_windx="XBMC_Demo_win32.pvr" />
+ library_windx="XBMC_Demo_win32.pvr"
+ library_android="libXBMC_Demo.so" />
<extension point="xbmc.addon.metadata">
<summary>Demo PVR Client</summary>
<description>Demo PVR Client</description>
View
1  addons/pvr.fortherecord.argus/Makefile.am
@@ -37,4 +37,5 @@ libfortherecord_addon_la_SOURCES = src/activerecording.cpp \
src/lib/tsreader/FileReader.cpp \
src/lib/tsreader/MultiFileReader.cpp \
src/lib/tsreader/TSReader.cpp
+libfortherecord_addon_la_LDFLAGS = @TARGET_LDFLAGS@
View
3  addons/pvr.fortherecord.argus/addon/addon.xml
@@ -12,7 +12,8 @@
library_linux="XBMC_ForTheRecord.pvr"
library_osx="XBMC_ForTheRecord.pvr"
library_wingl="XBMC_ForTheRecord_win32.pvr"
- library_windx="XBMC_ForTheRecord_win32.pvr"/>
+ library_windx="XBMC_ForTheRecord_win32.pvr"
+ library_android="libXBMC_ForTheRecord.so"/>
<extension point="xbmc.addon.metadata">
<summary>XBMC frontend for the ForTheRecord PVR http://www.4therecord.eu/</summary>
<description>ForTheRecord PVR frontend. Supports streaming of Live TV &amp; Recordings, listening to Radio channels, EPG and schedules.</description>
View
1  addons/pvr.hts/Makefile.am
@@ -18,4 +18,5 @@ libtvheadend_addon_la_SOURCES = src/client.cpp \
src/HTSPConnection.cpp \
src/HTSPData.cpp \
src/HTSPDemux.cpp
+libtvheadend_addon_la_LDFLAGS = @TARGET_LDFLAGS@
View
3  addons/pvr.hts/addon/addon.xml
@@ -12,7 +12,8 @@
library_linux="XBMC_Tvheadend.pvr"
library_osx="XBMC_Tvheadend.pvr"
library_wingl="XBMC_Tvheadend_win32.pvr"
- library_windx="XBMC_Tvheadend_win32.pvr"/>
+ library_windx="XBMC_Tvheadend_win32.pvr"
+ library_android="libXBMC_Tvheadend.so"/>
<extension point="xbmc.addon.metadata">
<summary>XBMC's frontend for Tvheadend</summary>
<description>Tvheadend frontend; supporting streaming of Live TV &amp; Recordings, EPG, Timers</description>
View
1  addons/pvr.mediaportal.tvserver/Makefile.am
@@ -30,4 +30,5 @@ libmediaportal_addon_la_SOURCES = src/Cards.cpp \
src/lib/tsreader/FileReader.cpp \
src/lib/tsreader/MultiFileReader.cpp \
src/lib/tsreader/TSReader.cpp
+libmediaportal_addon_la_LDFLAGS = @TARGET_LDFLAGS@
View
3  addons/pvr.mediaportal.tvserver/addon/addon.xml
@@ -12,7 +12,8 @@
library_linux="XBMC_Mediaportal.pvr"
library_osx="XBMC_Mediaportal.pvr"
library_wingl="XBMC_Mediaportal_win32.pvr"
- library_windx="XBMC_Mediaportal_win32.pvr"/>
+ library_windx="XBMC_Mediaportal_win32.pvr"
+ library_android="libXBMC_Mediaportal.so"/>
<extension point="xbmc.addon.metadata">
<summary>XBMC frontend for the MediaPortal TV Server (ffmpeg + tsreader version)</summary>
<description>MediaPortal TV Server frontend. Supports streaming of Live TV &amp; Recordings, listening to Radio channels, EPG and Timers. This addon combines the former ffmpeg and tsreader addons.</description>
View
1  addons/pvr.njoy/Makefile.am
@@ -16,4 +16,5 @@ include ../Makefile.include.am
libpvrnjoy_addon_la_SOURCES = src/client.cpp \
src/N7Xml.cpp
+libpvrnjoy_addon_la_LDFLAGS = @TARGET_LDFLAGS@
View
3  addons/pvr.njoy/addon/addon.xml
@@ -9,7 +9,8 @@
library_osx="XBMC_Njoy.pvr"
library_linux="XBMC_Njoy.pvr"
library_wingl="XBMC_njoy_win32.pvr"
- library_windx="XBMC_njoy_win32.pvr"/>
+ library_windx="XBMC_njoy_win32.pvr"
+ library_android="libXBMC_njoy.so"/>
<extension point="xbmc.addon.metadata">
<summary></summary>
<description></description>
View
2  addons/pvr.vdr.vnsi/Makefile.am
@@ -21,4 +21,4 @@ libvdrvnsi_addon_la_SOURCES = src/client.cpp \
src/requestpacket.cpp \
src/responsepacket.cpp \
src/tools.cpp
-
+libvdrvnsi_addon_la_LDFLAGS = @TARGET_LDFLAGS@
View
3  addons/pvr.vdr.vnsi/addon/addon.xml
@@ -12,7 +12,8 @@
library_linux="XBMC_VDR_vnsi.pvr"
library_osx="XBMC_VDR_vnsi.pvr"
library_wingl="XBMC_VDR_vnsi_WIN32.pvr"
- library_windx="XBMC_VDR_vnsi_WIN32.pvr"/>
+ library_windx="XBMC_VDR_vnsi_WIN32.pvr"
+ library_android="libXBMC_VDR_vnsi.so"/>
<extension point="xbmc.addon.metadata">
<summary>PVR client to connect VDR to XBMC over the VNSI interface</summary>
<description>VDR frontend; supporting streaming of Live TV &amp; Recordings, EPG, Timers over the VNSI plugin</description>
View
14 configure.ac
@@ -33,8 +33,17 @@ HOST_INCLUDES=""
HOST_CXXFLAGS=""
ARCH_DEFINES="-DTARGET_POSIX -DTARGET_LINUX -D_LINUX"
DYN_LIB_EXT="so"
-
+TARGET_LDFLAGS=""
+BIN_EXT=".pvr"
+BINPREFIX=""
case "${host}" in
+ arm-*-linux-androideabi)
+ TARGET_LDFLAGS="-avoid-version -no-undefined"
+ OS="android"
+ ARCHITECTURE="arm"
+ BIN_EXT=".so"
+ BINPREFIX="lib"
+ ;;
arm*-*-linux*)
OS="linux"
ARCHITECTURE="arm"
@@ -92,6 +101,9 @@ AC_SUBST(HOST_INCLUDES)
AC_SUBST(OS)
AC_SUBST(ARCH_DEFINES)
AC_SUBST(DYN_LIB_EXT)
+AC_SUBST(TARGET_LDFLAGS)
+AC_SUBST(BINPREFIX)
+AC_SUBST(BIN_EXT)
if test "x$host_os_osx" = "xyes"; then
AM_CONDITIONAL(HOST_IS_OSX, true)
Something went wrong with that request. Please try again.