summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2010-09-18 16:06:07 +0000
committerMike Frysinger <vapier@gentoo.org>2010-09-18 16:06:07 +0000
commit32514c34dbd08b3a7f15ddaef5146cbe4a8f2d69 (patch)
treef5cc541ffc240a342f7b38a3dd34c8eb368c6ec5 /media-tv
parentRespecting LDFLAGS, 337856 (diff)
downloadhistorical-32514c34dbd08b3a7f15ddaef5146cbe4a8f2d69.tar.gz
historical-32514c34dbd08b3a7f15ddaef5146cbe4a8f2d69.tar.bz2
historical-32514c34dbd08b3a7f15ddaef5146cbe4a8f2d69.zip
Force internal python usage #304521 by Domen Kožar. Build against libdca rather than libdts #330201 by Füves Zoltán.
Package-Manager: portage-2.2_rc83/cvs/Linux x86_64
Diffstat (limited to 'media-tv')
-rw-r--r--media-tv/xbmc/ChangeLog9
-rw-r--r--media-tv/xbmc/Manifest11
-rw-r--r--media-tv/xbmc/files/xbmc-9.11-external-python.patch22
-rw-r--r--media-tv/xbmc/files/xbmc-9.11-libdca.patch746
-rw-r--r--media-tv/xbmc/xbmc-9.11-r5.ebuild217
5 files changed, 1000 insertions, 5 deletions
diff --git a/media-tv/xbmc/ChangeLog b/media-tv/xbmc/ChangeLog
index 4304895d4f70..2d65da4f74e5 100644
--- a/media-tv/xbmc/ChangeLog
+++ b/media-tv/xbmc/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for media-tv/xbmc
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-tv/xbmc/ChangeLog,v 1.67 2010/09/18 09:13:45 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-tv/xbmc/ChangeLog,v 1.68 2010/09/18 16:06:07 vapier Exp $
+
+*xbmc-9.11-r5 (18 Sep 2010)
+
+ 18 Sep 2010; Mike Frysinger <vapier@gentoo.org> +xbmc-9.11-r5.ebuild,
+ +files/xbmc-9.11-external-python.patch, +files/xbmc-9.11-libdca.patch:
+ Force internal python usage #304521 by Domen Kožar. Build against libdca
+ rather than libdts #330201 by Füves Zoltán.
18 Sep 2010; Mike Frysinger <vapier@gentoo.org> xbmc-9.11-r4.ebuild,
xbmc-9999.ebuild:
diff --git a/media-tv/xbmc/Manifest b/media-tv/xbmc/Manifest
index 9fb4df290790..17f5e55a7663 100644
--- a/media-tv/xbmc/Manifest
+++ b/media-tv/xbmc/Manifest
@@ -2,20 +2,23 @@
Hash: SHA256
AUX xbmc-9.11-TexturePacker-parallel-build.patch 357 RMD160 37802ec3ce31d10d58802acf267aaf568d3ef8d0 SHA1 5909a4a61e1dbac3f51c6a8c393f1d4cfd7a38ca SHA256 a9b990cdd5473e72cc83cda36cc9faaf67e97649cec45af9c529455464b12d43
+AUX xbmc-9.11-external-python.patch 751 RMD160 b7774014df1addd0c4479acefccacc8596759763 SHA1 93dd96b787c4b88a9bbb7e10f44deb2bdec96b4d SHA256 a0c8325ebc742c7e1164a50ea380460b38eff58dd59c60e56b3eee78bb6aacc9
AUX xbmc-9.11-jpeg-speedup.patch 804 RMD160 2aff1749ee8f4b85ce9199a78fcfb779c373d086 SHA1 ecef76650156b7fcba60f909496e43ae83bafd20 SHA256 3115b8668b60e307536a9314fc02c837d4f94f89571d403761b614a22447e2d8
+AUX xbmc-9.11-libdca.patch 27195 RMD160 7adf760d9fbe1063382ae9cc44a82544c0769cf4 SHA1 128e871bdfee27e4b3b3a5fbd20b2782c6e02aff SHA256 009db793459cea013eec9064dc6e8ba3a1bad29e1a52cf9164a4fdab2c7fdd4f
AUX xbmc-9.11-libpng14.patch 4263 RMD160 90a82d1783f2237416c0932c968347394f303bf9 SHA1 69407df931476df7fd20b30ddc42142d11602d8f SHA256 0516a466f2646867478781251d665e87f6f0697fcd9ce29b91c87194fafc7da6
AUX xbmc-9.11-shader-upscalers.patch 29024 RMD160 d100a35684cad2a6dea0c6eeb9bfbc00e4151bbb SHA1 130fa8bccb6dfab723daf2ebafd88b6e22c109b3 SHA256 965099c217920d5db259944adc4250ed73e4b08ddcd7b0d88d843c9a9a41d396
AUX xbmc-9.11-use-cdio-system-headers-on-non-win32.patch 3623 RMD160 d8b6d48a07265238bc1bd6425c53e7a52a679751 SHA1 1d4d41d00973c4199f866a7988a709a188683403 SHA256 ceb6952025c8baf5bb4eed18380c9bf6022893407f22a3e587eebd657863ab83
AUX xbmc-9.11-wavpack.patch 2637 RMD160 35a7f5446aaef27ff563da4a8200616fffb66e00 SHA1 0f9a2845a5b9d0b554569f1379af0557b071ef69 SHA256 b09e9072f0a2d4451588c40b0b300611944ba7d4cefbae0c400389ed9f8485dc
DIST xbmc-9.11.tar.gz 141420517 RMD160 0d0890ba373e05af95a66360aed8871b384849f2 SHA1 71956ed8630d46662e49de9d96304308078f10b5 SHA256 e810aaaf1c380bbe923d9e30e2e472577081b7b893e12a7ef4bb70a911c3db87
EBUILD xbmc-9.11-r4.ebuild 5704 RMD160 9f0d0dcac650102a736c83e9ed75cc25e0e00314 SHA1 b1520e0996a09a26dc9c28fff3ab0fa142eddcbd SHA256 f887da91e775c6e108cdb72b5ad058b3485947bb93a144f4a67202592cc2932e
+EBUILD xbmc-9.11-r5.ebuild 5783 RMD160 a9799026ec29b74cb9cf002c89958274f546f202 SHA1 10ef102e761d16f931731088f27be73e7ff667fe SHA256 eb959e3ab1cbae5f9ed5eeba5a3235b2dab53381d77d0a5d0901b78b7e8be4b0
EBUILD xbmc-9999.ebuild 5109 RMD160 8e13b1ae2102cae020b6171b57fd5457b1b8d721 SHA1 0cd7f547448fbeb9e4a2de504be4430cb11faf3b SHA256 51a3bf44429232375edae8162d830fe12869319caac82f74eac4f61a31993f62
-MISC ChangeLog 11048 RMD160 284160fea45cc71b07a342d3be82467f3dbde132 SHA1 6bc3345bb4c6b43ec9ca6e846e9b66eedee3ebd7 SHA256 f3c8f811d205fc509d0c8ac6b48eb3ac6952622e1cf1eda0e4638238e0b136a1
+MISC ChangeLog 11347 RMD160 0c1bec69af27f5472e6e30283793a7e921f66983 SHA1 5bd0705a7e69b466eceda988e78adc54ab3515be SHA256 a88fe551125a6046c82b3423dd9cb8125eba7da3a584ca5ff3905210dc6d1671
MISC metadata.xml 579 RMD160 cf1a05346b2c33147e752be840dfb562726b42dd SHA1 0fabb20c84367962605b88b9030fabf6acf3045d SHA256 f61dd5617b99b9fa5505269e6633d317f90a2c6903108bdcc84370cfb8858afb
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.16 (GNU/Linux)
-iF4EAREIAAYFAkyUg4gACgkQTwhj9JtAlp7a5gD+N1HY/BjdNP6rQRfsnua/uSCm
-63uUA+XmcdRqrX+SitYA/3+YXSmBntBaKlFpkIPd3QeM+Rjn5NEst5DTpdCQI6+l
-=51U2
+iF4EAREIAAYFAkyU5DMACgkQTwhj9JtAlp7ZNgD9GCNZO2Iv9l9/tPTGMG4clHiw
+z2LdBhbNVNJpLjWyGC0BAKYBBIxXzFvrj0D4XdTnfxbzxhKt4P0vGcqj667ZihA8
+=7E7u
-----END PGP SIGNATURE-----
diff --git a/media-tv/xbmc/files/xbmc-9.11-external-python.patch b/media-tv/xbmc/files/xbmc-9.11-external-python.patch
new file mode 100644
index 000000000000..4691dc2c1d11
--- /dev/null
+++ b/media-tv/xbmc/files/xbmc-9.11-external-python.patch
@@ -0,0 +1,22 @@
+let --disable-external-python work with --enable-external-libraries
+
+--- a/configure.in
++++ b/configure.in
+@@ -235,7 +235,7 @@
+ [AS_HELP_STRING([--enable-external-python],
+ [enable use of external python library (default is no) 'Linux only'])],
+ [use_external_python=$enableval],
+- [use_external_python=no])
++ [use_external_python=$use_external_libraries])
+
+ ### End of external library options
+
+@@ -620,7 +620,7 @@
+ fi
+
+ # External Python
+-if test "$use_external_libraries" = "yes" || test "$use_external_python" = "yes"; then
++if test "$use_external_python" = "yes"; then
+ AC_CHECK_LIB([python2.6], [main],,
+ [AC_CHECK_LIB([python2.5], [main],,
+ [AC_CHECK_LIB([python2.4], [main],,
diff --git a/media-tv/xbmc/files/xbmc-9.11-libdca.patch b/media-tv/xbmc/files/xbmc-9.11-libdca.patch
new file mode 100644
index 000000000000..59b3a64347c9
--- /dev/null
+++ b/media-tv/xbmc/files/xbmc-9.11-libdca.patch
@@ -0,0 +1,746 @@
+http://bugs.gentoo.org/330201
+
+link against libdca and not libdts
+
+--- a/configure.in
++++ b/configure.in
+@@ -51,8 +51,8 @@
+ external_ffmpeg_disabled="== Use of external ffmpeg disabled. =="
+ external_liba52_enabled="== Use of external liba52 enabled. =="
+ external_liba52_disabled="== Use of external liba52 disabled. =="
+-external_libdts_enabled="== Use of external libdts enabled. =="
+-external_libdts_disabled="== Use of external libdts disabled. =="
++external_libdca_enabled="== Use of external libdca enabled. =="
++external_libdca_disabled="== Use of external libdca disabled. =="
+ external_libmpeg2_enabled="== Use of external libmpeg2 enabled. =="
+ external_libmpeg2_disabled="== Use of external libmpeg2 disabled. =="
+ external_libass_enabled="== Use of external libass enabled. =="
+@@ -201,11 +201,11 @@
+ [use_external_liba52=$enableval],
+ [use_external_liba52=no])
+
+-AC_ARG_ENABLE([external-libdts],
+- [AS_HELP_STRING([--enable-external-libdts],
+- [enable use of external libdts library (default is no) 'Linux only'])],
+- [use_external_libdts=$enableval],
+- [use_external_libdts=no])
++AC_ARG_ENABLE([external-libdca],
++ [AS_HELP_STRING([--enable-external-libdca],
++ [enable use of external libdca library (default is no) 'Linux only'])],
++ [use_external_libdca=$enableval],
++ [use_external_libdca=no])
+
+ AC_ARG_ENABLE([external-libmpeg2],
+ [AS_HELP_STRING([--enable-external-libmpeg2],
+@@ -557,16 +557,16 @@
+ USE_EXTERNAL_LIBA52=0
+ fi
+
+-# External libdts
+-if test "$use_external_libraries" = "yes" || test "$use_external_libdts" = "yes"; then
+- AC_CHECK_LIB([dts], [main],, AC_MSG_ERROR($missing_library))
++# External libdca
++if test "$use_external_libraries" = "yes" || test "$use_external_libdca" = "yes"; then
++ AC_CHECK_LIB([dca], [main],, AC_MSG_ERROR($missing_library))
+
+- AC_MSG_NOTICE($external_libdts_enabled)
+- USE_EXTERNAL_LIBDTS=1
+- AC_DEFINE([USE_EXTERNAL_LIBDTS], [1], [Whether to use external libdts library.])
++ AC_MSG_NOTICE($external_libdca_enabled)
++ USE_EXTERNAL_LIBDCA=1
++ AC_DEFINE([USE_EXTERNAL_LIBDCA], [1], [Whether to use external libdca library.])
+ else
+- AC_MSG_NOTICE($external_libdts_disabled)
+- USE_EXTERNAL_LIBDTS=0
++ AC_MSG_NOTICE($external_libdca_disabled)
++ USE_EXTERNAL_LIBDCA=0
+ fi
+
+ # External libmpeg2
+@@ -933,10 +933,10 @@
+ else
+ final_message="$final_message\n External liba52:\tNo"
+ fi
+- if test "$use_external_libdts" = "yes"; then
+- final_message="$final_message\n External libdts:\tYes"
++ if test "$use_external_libdca" = "yes"; then
++ final_message="$final_message\n External libdca:\tYes"
+ else
+- final_message="$final_message\n External libdts:\tNo"
++ final_message="$final_message\n External libdca:\tNo"
+ fi
+ if test "$use_external_libmpeg2" = "yes"; then
+ final_message="$final_message\n External libmpeg2:\tYes"
+@@ -1027,7 +1027,7 @@
+ AC_SUBST(USE_EXTERNAL_LIBRARIES)
+ AC_SUBST(USE_EXTERNAL_FFMPEG)
+ AC_SUBST(USE_EXTERNAL_LIBA52)
+-AC_SUBST(USE_EXTERNAL_LIBDTS)
++AC_SUBST(USE_EXTERNAL_LIBDCA)
+ AC_SUBST(USE_EXTERNAL_LIBMPEG2)
+ AC_SUBST(USE_EXTERNAL_LIBASS)
+ AC_SUBST(USE_EXTERNAL_LIBVORBIS)
+@@ -1188,7 +1188,7 @@
+ fi
+ ], [$USE_EXTERNAL_FFMPEG])
+
+-XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libdts], [
++XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libdca], [
+ if test "$host_vendor" = "apple" ; then
+ CFLAGS="-fPIC -fno-common -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" \
+ LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" \
+@@ -1205,7 +1205,7 @@
+ --disable-win \
+ CFLAGS="-fPIC"
+ fi
+-], [$USE_EXTERNAL_LIBDTS])
++], [$USE_EXTERNAL_LIBDCA])
+
+ XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss], [
+ if test "$host_vendor" = "apple" ; then
+--- a/xbmc/cores/dvdplayer/Codecs/Makefile.in
++++ b/xbmc/cores/dvdplayer/Codecs/Makefile.in
+@@ -13,5 +13,5 @@
+ DIRS+=liba52
+ endif
+-ifneq (@USE_EXTERNAL_LIBDTS@,1)
++ifneq (@USE_EXTERNAL_LIBDCA@,1)
+ DIRS+=libdts
+ endif
+@@ -32,5 +32,5 @@
+ libao-$(ARCH).so
+ endif
+-ifneq (@USE_EXTERNAL_LIBDTS@,1)
++ifneq (@USE_EXTERNAL_LIBDCA@,1)
+ LIBS+=libdts-$(ARCH).so
+ endif
+--- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DllLibDts.h
++++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DllLibDts.h
+@@ -25,6 +25,6 @@
+ #endif
+ extern "C" {
+-#if (defined USE_EXTERNAL_LIBDTS)
+- #include <dts.h>
++#if (defined USE_EXTERNAL_LIBDCA)
++ #include <dca.h>
+ #else
+ #include "libdts/dts.h"
+@@ -40,5 +40,5 @@
+ typedef __int16 int16_t;
+ #endif
+-#ifdef LIBDTS_DOUBLE
++#ifdef LIBDCA_DOUBLE
+ typedef float convert_t;
+ #else
+@@ -51,36 +51,36 @@
+ public:
+ virtual ~DllLibDtsInterface() {}
+- virtual dts_state_t * dts_init (uint32_t mm_accel)=0;
+- virtual int dts_syncinfo (dts_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length)=0;
+- virtual int dts_frame (dts_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias)=0;
+- virtual void dts_dynrng (dts_state_t * state, level_t (* call) (level_t, void *), void * data)=0;
+- virtual int dts_blocks_num (dts_state_t * state)=0;
+- virtual int dts_block (dts_state_t * state)=0;
+- virtual sample_t * dts_samples (dts_state_t * state)=0;
+- virtual void dts_free (dts_state_t * state)=0;
++ virtual dca_state_t * dca_init (uint32_t mm_accel)=0;
++ virtual int dca_syncinfo (dca_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length)=0;
++ virtual int dca_frame (dca_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias)=0;
++ virtual void dca_dynrng (dca_state_t * state, level_t (* call) (level_t, void *), void * data)=0;
++ virtual int dca_blocks_num (dca_state_t * state)=0;
++ virtual int dca_block (dca_state_t * state)=0;
++ virtual sample_t * dca_samples (dca_state_t * state)=0;
++ virtual void dca_free (dca_state_t * state)=0;
+ };
+
+-#if (defined USE_EXTERNAL_LIBDTS)
++#if (defined USE_EXTERNAL_LIBDCA)
+
+ class DllLibDts : public DllDynamic, DllLibDtsInterface
+ {
+ public:
+ virtual ~DllLibDts() {}
+- virtual dts_state_t * dts_init (uint32_t mm_accel)
+- { return ::dts_init (mm_accel); }
+- virtual int dts_syncinfo (dts_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length)
+- { return ::dts_syncinfo (state, buf, flags, sample_rate, bit_rate, frame_length); }
+- virtual int dts_frame (dts_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias)
+- { return ::dts_frame (state, buf, flags, level, bias); }
+- virtual void dts_dynrng (dts_state_t * state, level_t (* call) (level_t, void *), void * data)
+- { return ::dts_dynrng (state, call, data); }
+- virtual int dts_blocks_num (dts_state_t * state)
+- { return ::dts_blocks_num (state); }
+- virtual int dts_block (dts_state_t * state)
+- { return ::dts_block (state); }
+- virtual sample_t * dts_samples (dts_state_t * state)
+- { return ::dts_samples (state); }
+- virtual void dts_free (dts_state_t * state)
+- { return ::dts_free (state); }
++ virtual dca_state_t * dca_init (uint32_t mm_accel)
++ { return ::dca_init (mm_accel); }
++ virtual int dca_syncinfo (dca_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length)
++ { return ::dca_syncinfo (state, buf, flags, sample_rate, bit_rate, frame_length); }
++ virtual int dca_frame (dca_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias)
++ { return ::dca_frame (state, buf, flags, level, bias); }
++ virtual void dca_dynrng (dca_state_t * state, level_t (* call) (level_t, void *), void * data)
++ { return ::dca_dynrng (state, call, data); }
++ virtual int dca_blocks_num (dca_state_t * state)
++ { return ::dca_blocks_num (state); }
++ virtual int dca_block (dca_state_t * state)
++ { return ::dca_block (state); }
++ virtual sample_t * dca_samples (dca_state_t * state)
++ { return ::dca_samples (state); }
++ virtual void dca_free (dca_state_t * state)
++ { return ::dca_free (state); }
+
+ // DLL faking.
+--- a/xbmc/cores/paplayer/DllDCACodec.h
++++ b/xbmc/cores/paplayer/DllDCACodec.h
+@@ -25,6 +25,6 @@
+ #endif
+ extern "C" {
+-#if (defined USE_EXTERNAL_LIBDTS)
+- #include <dts.h>
++#if (defined USE_EXTERNAL_LIBDCA)
++ #include <dca.h>
+ #else
+ #include "../dvdplayer/DVDCodecs/Audio/libdts/dts.h"
+@@ -43,52 +43,52 @@
+ #endif
+
+-#ifdef LIBDTS_DOUBLE
++#ifdef LIBDCA_DOUBLE
+ typedef float convert_t;
+ #else
+ typedef sample_t convert_t;
+ #endif
+
+
+ class DllDCACodecInterface
+ {
+ public:
+ virtual ~DllDCACodecInterface() {}
+- virtual dts_state_t * dts_init (uint32_t mm_accel)=0;
+- virtual int dts_syncinfo (dts_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length)=0;
+- virtual int dts_frame (dts_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias)=0;
+- virtual void dts_dynrng (dts_state_t * state, level_t (* call) (level_t, void *), void * data)=0;
+- virtual int dts_blocks_num (dts_state_t * state)=0;
+- virtual int dts_block (dts_state_t * state)=0;
+- virtual sample_t * dts_samples (dts_state_t * state)=0;
+- virtual void dts_free (dts_state_t * state)=0;
++ virtual dca_state_t * dca_init (uint32_t mm_accel)=0;
++ virtual int dca_syncinfo (dca_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length)=0;
++ virtual int dca_frame (dca_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias)=0;
++ virtual void dca_dynrng (dca_state_t * state, level_t (* call) (level_t, void *), void * data)=0;
++ virtual int dca_blocks_num (dca_state_t * state)=0;
++ virtual int dca_block (dca_state_t * state)=0;
++ virtual sample_t * dca_samples (dca_state_t * state)=0;
++ virtual void dca_free (dca_state_t * state)=0;
+ };
+
+-#if (defined USE_EXTERNAL_LIBDTS)
++#if (defined USE_EXTERNAL_LIBDCA)
+
+ class DllDCACodec : public DllDynamic, DllDCACodecInterface
+ {
+ public:
+ virtual ~DllDCACodec() {}
+- virtual dts_state_t * dts_init (uint32_t mm_accel)
+- { return ::dts_init (mm_accel); }
+- virtual int dts_syncinfo (dts_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length)
+- { return ::dts_syncinfo (state, buf, flags, sample_rate, bit_rate, frame_length); }
+- virtual int dts_frame (dts_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias)
+- { return ::dts_frame (state, buf, flags, level, bias); }
+- virtual void dts_dynrng (dts_state_t * state, level_t (* call) (level_t, void *), void * data)
+- { return ::dts_dynrng (state, call, data); }
+- virtual int dts_blocks_num (dts_state_t * state)
+- { return ::dts_blocks_num (state); }
+- virtual int dts_block (dts_state_t * state)
+- { return ::dts_block (state); }
+- virtual sample_t * dts_samples (dts_state_t * state)
+- { return ::dts_samples (state); }
+- virtual void dts_free (dts_state_t * state)
+- { return ::dts_free (state); }
++ virtual dca_state_t * dca_init (uint32_t mm_accel)
++ { return ::dca_init (mm_accel); }
++ virtual int dca_syncinfo (dca_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length)
++ { return ::dca_syncinfo (state, buf, flags, sample_rate, bit_rate, frame_length); }
++ virtual int dca_frame (dca_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias)
++ { return ::dca_frame (state, buf, flags, level, bias); }
++ virtual void dca_dynrng (dca_state_t * state, level_t (* call) (level_t, void *), void * data)
++ { return ::dca_dynrng (state, call, data); }
++ virtual int dca_blocks_num (dca_state_t * state)
++ { return ::dca_blocks_num (state); }
++ virtual int dca_block (dca_state_t * state)
++ { return ::dca_block (state); }
++ virtual sample_t * dca_samples (dca_state_t * state)
++ { return ::dca_samples (state); }
++ virtual void dca_free (dca_state_t * state)
++ { return ::dca_free (state); }
+
+ // DLL faking.
+ virtual bool ResolveExports() { return true; }
+ virtual bool Load() {
+- CLog::Log(LOGDEBUG, "DllDCACodec: Using libdts system library");
++ CLog::Log(LOGDEBUG, "DllDCACodec: Using libdca system library");
+ return true;
+ }
+--- a/xbmc/cores/paplayer/DTSCodec.h
++++ a/xbmc/cores/paplayer/DTSCodec.h
+@@ -57,5 +57,5 @@
+ static void convert2s16_multi(convert_t * _f, int16_t * s16, int flags);
+
+- dts_state_t* m_pState;
++ dca_state_t* m_pState;
+
+ BYTE m_inputBuffer[12288];
+--- a/xbmc/cores/paplayer/DTSCodec.cpp
++++ a/xbmc/cores/paplayer/DTSCodec.cpp
+@@ -82,23 +82,23 @@
+ switch (flags)
+ {
+- case DTS_MONO: //MON 2
++ case DCA_MONO: //MON 2
+ for (i = 0; i < 256; i++)
+ {
+ s16[2*i] = s16[2*i+1] = convert (f[i]);
+ }
+ break;
+- case DTS_CHANNEL: //L R 2
+- case DTS_STEREO:
+- case DTS_STEREO_TOTAL:
++ case DCA_CHANNEL: //L R 2
++ case DCA_STEREO:
++ case DCA_STEREO_TOTAL:
+ convert2s16_2 (_f, s16);
+ break;
+- case DTS_STEREO_SUMDIFF: //L+R L-R 2
++ case DCA_STEREO_SUMDIFF: //L+R L-R 2
+ for (i = 0; i < 256; i++)
+ {
+ s16[2*i] = convert (f[i])/2 + convert (f[i+256])/2;
+ s16[2*i+1] = convert (f[i])/2 - convert (f[i+256])/2;
+ }
+ break;
+- case DTS_3F: //C L R 5
++ case DCA_3F: //C L R 5
+ for (i = 0; i < 256; i++)
+ {
+@@ -109,5 +109,5 @@
+ }
+ break;
+- case DTS_2F1R: //L R S 4
++ case DCA_2F1R: //L R S 4
+ for (i = 0; i < 256; i++)
+ {
+@@ -117,5 +117,5 @@
+ }
+ break;
+- case DTS_3F1R: //C L R S 5
++ case DCA_3F1R: //C L R S 5
+ for (i = 0; i < 256; i++)
+ {
+@@ -126,11 +126,11 @@
+ }
+ break;
+- case DTS_2F2R: //L R SL SR 4
++ case DCA_2F2R: //L R SL SR 4
+ convert2s16_4 (_f, s16);
+ break;
+- case DTS_3F2R: //C L R SL SR 5
++ case DCA_3F2R: //C L R SL SR 5
+ convert2s16_5 (_f, s16);
+ break;
+- case DTS_MONO | DTS_LFE: //MON LFE 6
++ case DCA_MONO | DCA_LFE: //MON LFE 6
+ for (i = 0; i < 256; i++)
+ {
+@@ -140,7 +140,7 @@
+ }
+ break;
+- case DTS_CHANNEL | DTS_LFE:
+- case DTS_STEREO | DTS_LFE:
+- case DTS_STEREO_TOTAL | DTS_LFE: //L R LFE 6
++ case DCA_CHANNEL | DCA_LFE:
++ case DCA_STEREO | DCA_LFE:
++ case DCA_STEREO_TOTAL | DCA_LFE: //L R LFE 6
+ for (i = 0; i < 256; i++)
+ {
+@@ -151,5 +151,5 @@
+ }
+ break;
+- case DTS_STEREO_SUMDIFF | DTS_LFE: //L+R L-R LFE 6
++ case DCA_STEREO_SUMDIFF | DCA_LFE: //L+R L-R LFE 6
+ for (i = 0; i < 256; i++)
+ {
+@@ -160,5 +160,5 @@
+ }
+ break;
+- case DTS_3F | DTS_LFE: //C L R LFE 6
++ case DCA_3F | DCA_LFE: //C L R LFE 6
+ for (i = 0; i < 256; i++)
+ {
+@@ -170,5 +170,5 @@
+ }
+ break;
+- case DTS_2F1R | DTS_LFE: //L R S LFE 6
++ case DCA_2F1R | DCA_LFE: //L R S LFE 6
+ for (i = 0; i < 256; i++)
+ {
+@@ -180,5 +180,5 @@
+ }
+ break;
+- case DTS_3F1R | DTS_LFE: //C L R S LFE 6
++ case DCA_3F1R | DCA_LFE: //C L R S LFE 6
+ for (i = 0; i < 256; i++)
+ {
+@@ -190,5 +190,5 @@
+ }
+ break;
+- case DTS_2F2R | DTS_LFE: //L R SL SR LFE 6
++ case DCA_2F2R | DCA_LFE: //L R SL SR LFE 6
+ for (i = 0; i < 256; i++)
+ {
+@@ -201,5 +201,5 @@
+ }
+ break;
+- case DTS_3F2R | DTS_LFE: //C L R SL SR LFE 6
++ case DCA_3F2R | DCA_LFE: //C L R SL SR LFE 6
+ for (i = 0; i < 256; i++)
+ {
+@@ -241,5 +241,5 @@
+ {
+ m_IsInitialized = false;
+- if (m_pState) m_dll.dts_free(m_pState);
++ if (m_pState) m_dll.dca_free(m_pState);
+ m_pState = NULL;
+
+@@ -306,5 +306,5 @@
+ SetDefault();
+
+- m_pState = m_dll.dts_init(0);
++ m_pState = m_dll.dca_init(0);
+ if (!m_pState)
+ return false;
+@@ -351,20 +351,20 @@
+ int iChannels = 0;
+
+- switch (iFlags & DTS_CHANNEL_MASK)
++ switch (iFlags & DCA_CHANNEL_MASK)
+ {
+- case DTS_MONO: iChannels = 1; break;
+- case DTS_CHANNEL: iChannels = 1; break; // ???
+- case DTS_STEREO: iChannels = 2; break;
+- case DTS_STEREO_SUMDIFF: iChannels = 2; break;
+- case DTS_STEREO_TOTAL: iChannels = 2; break;
+- case DTS_3F: iChannels = 3; break;
+- case DTS_2F1R: iChannels = 3; break;
+- case DTS_3F1R: iChannels = 4; break;
+- case DTS_2F2R: iChannels = 4; break;
+- case DTS_3F2R: iChannels = 5; break;
+- case DTS_4F2R: iChannels = 6; break;
++ case DCA_MONO: iChannels = 1; break;
++ case DCA_CHANNEL: iChannels = 1; break; // ???
++ case DCA_STEREO: iChannels = 2; break;
++ case DCA_STEREO_SUMDIFF: iChannels = 2; break;
++ case DCA_STEREO_TOTAL: iChannels = 2; break;
++ case DCA_3F: iChannels = 3; break;
++ case DCA_2F1R: iChannels = 3; break;
++ case DCA_3F1R: iChannels = 4; break;
++ case DCA_2F2R: iChannels = 4; break;
++ case DCA_3F2R: iChannels = 5; break;
++ case DCA_4F2R: iChannels = 6; break;
+ default: iChannels = 0; break;
+ }
+- if (iFlags & DTS_LFE) iChannels++;
++ if (iFlags & DCA_LFE) iChannels++;
+
+ return iChannels;
+@@ -447,8 +447,8 @@
+ {
+ // it's possible that m_inputBuffer already contains 6 bits from our previous run
+- // so use m_pInputBuffer to copy the rest of the data. We must rest it after dts_syncinfo though!!
++ // so use m_pInputBuffer to copy the rest of the data. We must rest it after dca_syncinfo though!!
+ for (int u = 0; u < HEADER_SIZE; u++) m_pInputBuffer[u] = pData[u];
+
+- iLen = m_dll.dts_syncinfo(m_pState, m_inputBuffer, &m_iFlags, &m_iSourceSampleRate, &m_iSourceBitrate, &m_iFrameSize);
++ iLen = m_dll.dca_syncinfo(m_pState, m_inputBuffer, &m_iFlags, &m_iSourceSampleRate, &m_iSourceBitrate, &m_iFrameSize);
+ if (iLen > 0)
+ {
+@@ -505,19 +505,19 @@
+ //m_iOutputChannels = 2;
+ int iFlags = m_iFlags;
+- if (m_iOutputChannels == 1) iFlags = DTS_MONO;
+- else if (m_iOutputChannels == 2) iFlags = DTS_STEREO;
++ if (m_iOutputChannels == 1) iFlags = DCA_MONO;
++ else if (m_iOutputChannels == 2) iFlags = DCA_STEREO;
+ else
+ {
+ m_iOutputChannels = m_iSourceChannels;
+- iFlags |= DTS_ADJUST_LEVEL;
++ iFlags |= DCA_ADJUST_LEVEL;
+ }
+
+- m_dll.dts_frame(m_pState, m_inputBuffer, &iFlags, &level, bias);
++ m_dll.dca_frame(m_pState, m_inputBuffer, &iFlags, &level, bias);
+
+- // [dts_dynrng (state, ...); this is only optional]
+- int iNrOfBlocks = m_dll.dts_blocks_num(m_pState);
++ // [dca_dynrng (state, ...); this is only optional]
++ int iNrOfBlocks = m_dll.dca_blocks_num(m_pState);
+ for (int i = 0; i < iNrOfBlocks; i++)
+ {
+- if (m_dll.dts_block(m_pState) != 0)
++ if (m_dll.dca_block(m_pState) != 0)
+ {
+ CLog::Log(LOGDEBUG, "Not a valid DTS frame");
+@@ -527,6 +527,6 @@
+ return (pData - pOldDataPointer);
+ }
+- m_fSamples = m_dll.dts_samples(m_pState);
+- convert2s16_multi(m_fSamples, (short*)(m_decodedData + m_decodedDataSize), iFlags & (DTS_CHANNEL_MASK | DTS_LFE));
++ m_fSamples = m_dll.dca_samples(m_pState);
++ convert2s16_multi(m_fSamples, (short*)(m_decodedData + m_decodedDataSize), iFlags & (DCA_CHANNEL_MASK | DCA_LFE));
+ m_decodedDataSize += 256 * sizeof(short) * m_iOutputChannels;
+ }
+--- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecLibDts.h
++++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecLibDts.h
+@@ -49,5 +49,5 @@
+ static void convert2s16_multi(convert_t * _f, int16_t * s16, int flags);
+
+- dts_state_t* m_pState;
++ dca_state_t* m_pState;
+
+ int m_iFrameSize;
+--- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.h
++++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.h
+@@ -69,5 +69,5 @@
+ DllLiba52 m_dllA52;
+
+- dts_state_t* m_pStateDTS;
++ dca_state_t* m_pStateDTS;
+ a52_state_t* m_pStateA52;
+ };
+--- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecLibDts.cpp
++++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecLibDts.cpp
+@@ -29,5 +29,5 @@
+ static inline int16_t convert(int32_t i)
+ {
+-#ifdef LIBDTS_FIXED
++#ifdef LIBDCA_FIXED
+ i >>= 15;
+ #else
+@@ -44,21 +44,21 @@
+ switch (flags)
+ {
+- case DTS_MONO:
++ case DCA_MONO:
+ for (i = 0; i < 256; i++)
+ {
+ s16[2*i ] = convert (f[i]);
+ s16[2*i+1] = convert (f[i]);
+ }
+ break;
+- case DTS_CHANNEL:
+- case DTS_STEREO:
+- case DTS_DOLBY:
++ case DCA_CHANNEL:
++ case DCA_STEREO:
++ case DCA_DOLBY:
+ for (i = 0; i < 256; i++)
+ {
+ s16[2*i ] = convert (f[i]);
+ s16[2*i+1] = convert (f[i+256]);
+ }
+ break;
+- case DTS_3F:
++ case DCA_3F:
+ for (i = 0; i < 256; i++)
+ {
+@@ -71,5 +71,5 @@
+ }
+ break;
+- case DTS_2F2R:
++ case DCA_2F2R:
+ for (i = 0; i < 256; i++)
+ {
+@@ -80,5 +80,5 @@
+ }
+ break;
+- case DTS_3F2R:
++ case DCA_3F2R:
+ for (i = 0; i < 256; i++)
+ {
+@@ -91,5 +91,5 @@
+ }
+ break;
+- case DTS_MONO | DTS_LFE:
++ case DCA_MONO | DCA_LFE:
+ for (i = 0; i < 256; i++)
+ {
+@@ -99,7 +99,7 @@
+ }
+ break;
+- case DTS_CHANNEL | DTS_LFE:
+- case DTS_STEREO | DTS_LFE:
+- case DTS_DOLBY | DTS_LFE:
++ case DCA_CHANNEL | DCA_LFE:
++ case DCA_STEREO | DCA_LFE:
++ case DCA_DOLBY | DCA_LFE:
+ for (i = 0; i < 256; i++)
+ {
+@@ -110,5 +110,5 @@
+ }
+ break;
+- case DTS_3F | DTS_LFE:
++ case DCA_3F | DCA_LFE:
+ for (i = 0; i < 256; i++)
+ {
+@@ -120,5 +120,5 @@
+ }
+ break;
+- case DTS_2F2R | DTS_LFE:
++ case DCA_2F2R | DCA_LFE:
+ for (i = 0; i < 256; i++)
+ {
+@@ -131,5 +131,5 @@
+ }
+ break;
+- case DTS_3F2R | DTS_LFE:
++ case DCA_3F2R | DCA_LFE:
+ for (i = 0; i < 256; i++)
+ {
+@@ -163,12 +163,12 @@
+ SetDefault();
+
+- m_pState = m_dll.dts_init(0);
++ m_pState = m_dll.dca_init(0);
+ if (!m_pState)
+ {
+ Dispose();
+ return false;
+ }
+
+- m_fSamples = m_dll.dts_samples(m_pState);
++ m_fSamples = m_dll.dca_samples(m_pState);
+
+ // Output will be decided once we query the stream.
+@@ -180,15 +180,15 @@
+ void CDVDAudioCodecLibDts::Dispose()
+ {
+- if (m_pState) m_dll.dts_free(m_pState);
++ if (m_pState) m_dll.dca_free(m_pState);
+ m_pState = NULL;
+ }
+
+ int CDVDAudioCodecLibDts::GetNrOfChannels(int iFlags)
+ {
+- if(iFlags & DTS_LFE)
++ if(iFlags & DCA_LFE)
+ return 6;
+- if(iFlags & DTS_CHANNEL)
++ if(iFlags & DCA_CHANNEL)
+ return 6;
+- else if ((iFlags & DTS_CHANNEL_MASK) == DTS_2F2R)
++ else if ((iFlags & DCA_CHANNEL_MASK) == DCA_2F2R)
+ return 4;
+ else
+@@ -206,11 +206,11 @@
+
+ if (m_iOutputChannels == 1)
+- m_iOutputFlags = DTS_MONO;
++ m_iOutputFlags = DCA_MONO;
+ else if (m_iOutputChannels == 2)
+- m_iOutputFlags = DTS_STEREO;
++ m_iOutputFlags = DCA_STEREO;
+ else
+ m_iOutputFlags = m_iSourceFlags;
+
+- m_iOutputFlags |= DTS_ADJUST_LEVEL;
++ m_iOutputFlags |= DCA_ADJUST_LEVEL;
+ }
+
+@@ -226,5 +226,5 @@
+ {
+ // try to sync directly in packet
+- m_iFrameSize = m_dll.dts_syncinfo(m_pState, data, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &framelen);
++ m_iFrameSize = m_dll.dca_syncinfo(m_pState, data, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &framelen);
+
+ if(m_iFrameSize > 0)
+@@ -267,5 +267,5 @@
+ while(true)
+ {
+- m_iFrameSize = m_dll.dts_syncinfo(m_pState, m_inputBuffer, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &framelen);
++ m_iFrameSize = m_dll.dca_syncinfo(m_pState, m_inputBuffer, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &framelen);
+ if(m_iFrameSize > 0)
+ break;
+@@ -317,18 +317,18 @@
+ int flags = m_iOutputFlags;
+
+- m_dll.dts_frame(m_pState, frame, &flags, &level, bias);
++ m_dll.dca_frame(m_pState, frame, &flags, &level, bias);
+
+ if (!g_advancedSettings.m_audioApplyDrc)
+- m_dll.dts_dynrng(m_pState, NULL, NULL);
++ m_dll.dca_dynrng(m_pState, NULL, NULL);
+
+- int blocks = m_dll.dts_blocks_num(m_pState);
++ int blocks = m_dll.dca_blocks_num(m_pState);
+ for (int i = 0; i < blocks; i++)
+ {
+- if (m_dll.dts_block(m_pState) != 0)
++ if (m_dll.dca_block(m_pState) != 0)
+ {
+- CLog::Log(LOGERROR, "CDVDAudioCodecLibDts::Decode : dts_block != 0");
++ CLog::Log(LOGERROR, "CDVDAudioCodecLibDts::Decode : dca_block != 0");
+ break;
+ }
+- convert2s16_multi(m_fSamples, (int16_t*)(m_decodedData + m_decodedSize), flags & (DTS_CHANNEL_MASK | DTS_LFE));
++ convert2s16_multi(m_fSamples, (int16_t*)(m_decodedData + m_decodedSize), flags & (DCA_CHANNEL_MASK | DCA_LFE));
+ m_decodedSize += 2 * 256 * m_iOutputChannels;
+ }
+@@ -358,10 +358,10 @@
+ void CDVDAudioCodecLibDts::Reset()
+ {
+- if (m_pState) m_dll.dts_free(m_pState);
++ if (m_pState) m_dll.dca_free(m_pState);
+
+ SetDefault();
+
+- m_pState = m_dll.dts_init(0);
+- m_fSamples = m_dll.dts_samples(m_pState);
++ m_pState = m_dll.dca_init(0);
++ m_fSamples = m_dll.dca_samples(m_pState);
+ }
+
+--- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.cpp
++++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.cpp
+@@ -204,5 +204,5 @@
+ if (!m_dllDTS.Load())
+ return false;
+- m_pStateDTS = m_dllDTS.dts_init(0);
++ m_pStateDTS = m_dllDTS.dca_init(0);
+ if(m_pStateDTS == NULL)
+ return false;
+@@ -224,5 +224,5 @@
+ if( m_pStateDTS )
+ {
+- m_dllDTS.dts_free(m_pStateDTS);
++ m_dllDTS.dca_free(m_pStateDTS);
+ m_pStateDTS = NULL;
+ }
+@@ -243,5 +243,5 @@
+ m_iFrameSize = m_dllA52.a52_syncinfo(data, &flags, &m_iSourceSampleRate, &m_iSourceBitrate);
+ else if(m_Codec == CODEC_ID_DTS)
+- m_iFrameSize = m_dllDTS.dts_syncinfo(m_pStateDTS, data, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &m_iSamplesPerFrame);
++ m_iFrameSize = m_dllDTS.dca_syncinfo(m_pStateDTS, data, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &m_iSamplesPerFrame);
+
+ if(m_iFrameSize > 0)
+@@ -290,6 +290,6 @@
+ m_iFrameSize = m_dllA52.a52_syncinfo(m_InputBuffer, &flags, &m_iSourceSampleRate, &m_iSourceBitrate);
+ else if(m_Codec == CODEC_ID_DTS)
+- m_iFrameSize = m_dllDTS.dts_syncinfo(m_pStateDTS, m_InputBuffer, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &m_iSamplesPerFrame);
++ m_iFrameSize = m_dllDTS.dca_syncinfo(m_pStateDTS, m_InputBuffer, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &m_iSamplesPerFrame);
+ if(m_iFrameSize > 0)
+ break;
+
diff --git a/media-tv/xbmc/xbmc-9.11-r5.ebuild b/media-tv/xbmc/xbmc-9.11-r5.ebuild
new file mode 100644
index 000000000000..276a5a2c6776
--- /dev/null
+++ b/media-tv/xbmc/xbmc-9.11-r5.ebuild
@@ -0,0 +1,217 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-tv/xbmc/xbmc-9.11-r5.ebuild,v 1.1 2010/09/18 16:06:07 vapier Exp $
+
+EAPI="2"
+
+inherit eutils python flag-o-matic
+
+# Use XBMC_ESVN_REPO_URI to track a different branch
+ESVN_REPO_URI=${XBMC_ESVN_REPO_URI:-http://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk}
+ESVN_PROJECT=${ESVN_REPO_URI##*/svnroot/}
+ESVN_PROJECT=${ESVN_PROJECT%/*}
+if [[ ${PV} == "9999" ]] ; then
+ inherit subversion autotools
+ KEYWORDS=""
+else
+ inherit autotools
+ MY_P=${P/_/-}
+ SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.gz"
+ KEYWORDS="~amd64 ~x86"
+ S=${WORKDIR}/${MY_P}
+fi
+
+DESCRIPTION="XBMC is a free and open source media-player and entertainment hub"
+HOMEPAGE="http://xbmc.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="aac alsa altivec avahi css debug joystick midi profile pulseaudio sse sse2 vdpau xrandr"
+
+RDEPEND="virtual/opengl
+ app-arch/bzip2
+ app-arch/unrar
+ app-arch/unzip
+ app-arch/zip
+ app-i18n/enca
+ dev-libs/boost
+ dev-libs/fribidi
+ dev-libs/libcdio[-minimal]
+ dev-libs/libpcre
+ dev-libs/lzo
+ >=dev-python/pysqlite-2
+ media-libs/a52dec
+ media-libs/alsa-lib
+ aac? ( media-libs/faac )
+ media-libs/faad2
+ media-libs/flac
+ media-libs/fontconfig
+ media-libs/freetype
+ media-libs/glew
+ media-libs/jasper
+ media-libs/jbigkit
+ media-libs/jpeg:0
+ >=media-libs/libass-0.9.7
+ media-libs/libdca
+ css? ( media-libs/libdvdcss )
+ media-libs/libmad
+ media-libs/libmms
+ media-libs/libmpeg2
+ media-libs/libogg
+ media-libs/libsamplerate
+ media-libs/libsdl[audio,opengl,video,X]
+ alsa? ( media-libs/libsdl[alsa] )
+ media-libs/libvorbis
+ media-libs/sdl-gfx
+ media-libs/sdl-image[gif,jpeg,png]
+ media-libs/sdl-mixer
+ media-libs/sdl-sound
+ media-libs/tiff
+ pulseaudio? ( media-sound/pulseaudio )
+ media-sound/wavpack
+ media-video/ffmpeg
+ avahi? ( net-dns/avahi )
+ net-misc/curl
+ || ( >=net-fs/samba-3.4.6[smbclient] <net-fs/samba-3.3 )
+ sys-apps/dbus
+ sys-apps/hal
+ sys-libs/zlib
+ virtual/mysql
+ x11-apps/xdpyinfo
+ x11-apps/mesa-progs
+ vdpau? (
+ || ( x11-libs/libvdpau >=x11-drivers/nvidia-drivers-180.51 )
+ media-video/ffmpeg[vdpau]
+ )
+ x11-libs/libXinerama
+ xrandr? ( x11-libs/libXrandr )
+ x11-libs/libXrender"
+DEPEND="${RDEPEND}
+ x11-proto/xineramaproto
+ dev-util/cmake
+ x86? ( dev-lang/nasm )"
+
+src_unpack() {
+ if [[ ${PV} == "9999" ]] ; then
+ subversion_src_unpack
+ cd "${S}"
+ rm -f configure
+ else
+ unpack ${A}
+ cd "${S}"
+ fi
+
+ # Fix case sensitivity
+ mv media/Fonts/{a,A}rial.ttf || die
+ mv media/{S,s}plash.png || die
+}
+
+src_prepare() {
+ has_version ">=media-libs/libpng-1.4" && \
+ epatch "${FILESDIR}"/${P}-libpng14.patch #319113
+
+ epatch "${FILESDIR}"/${P}-TexturePacker-parallel-build.patch
+ epatch "${FILESDIR}"/${P}-shader-upscalers.patch #306661
+ epatch "${FILESDIR}"/${P}-wavpack.patch
+ epatch "${FILESDIR}"/${P}-jpeg-speedup.patch #300909
+ epatch "${FILESDIR}"/${P}-use-cdio-system-headers-on-non-win32.patch #303030, upstream: #8026
+ epatch "${FILESDIR}"/${P}-external-python.patch #304521
+ epatch "${FILESDIR}"/${P}-libdca.patch #330201
+ # http://xbmc.org/trac/ticket/8218
+ sed -i \
+ -e 's: ftell64: dll_ftell64:' \
+ xbmc/cores/DllLoader/exports/wrapper.c || die
+ sed -i \
+ -e '1i#include <stdlib.h>\n#include <string.h>\n' \
+ xbmc/lib/libid3tag/libid3tag/metadata.c || die
+
+ # some dirs ship generated autotools, some dont
+ local d
+ for d in . xbmc/cores/dvdplayer/Codecs/libbdnav ; do
+ [[ -d ${d} ]] || continue
+ [[ -e ${d}/configure ]] && continue
+ pushd ${d} >/dev/null
+ einfo "Generating autotools in ${d}"
+ eautoreconf
+ popd >/dev/null
+ done
+
+ # fix building with ffmpeg-0.6+ #324293
+ # latest svn solves this in a more specific way, but we'll just
+ # kludge the whole system for the last release
+ append-cxxflags -D__STDC_CONSTANT_MACROS
+
+ local squish #290564
+ use altivec && squish="-DSQUISH_USE_ALTIVEC=1 -maltivec"
+ use sse && squish="-DSQUISH_USE_SSE=1 -msse"
+ use sse2 && squish="-DSQUISH_USE_SSE=2 -msse2"
+ sed -i \
+ -e '/^CXXFLAGS/{s:-D[^=]*=.::;s:-m[[:alnum:]]*::}' \
+ -e "1iCXXFLAGS += ${squish}" \
+ xbmc/lib/libsquish/Makefile.in || die
+
+ # Fix XBMC's final version string showing as "exported"
+ # instead of the SVN revision number.
+ export SVN_REV=${ESVN_WC_REVISION:-exported}
+
+ # Avoid lsb-release dependency
+ sed -i \
+ -e 's:/usr/bin/lsb_release -d:cat /etc/gentoo-release:' \
+ xbmc/utils/SystemInfo.cpp
+
+ # Do not use termcap #262822
+ sed -i 's:-ltermcap::' xbmc/lib/libPython/Python/configure
+
+ epatch_user #293109
+
+ # Tweak autotool timestamps to avoid regeneration
+ find . -type f -print0 | xargs -0 touch -r configure
+}
+
+src_configure() {
+ # Disable documentation generation
+ export ac_cv_path_LATEX=no
+ # Avoid help2man
+ export HELP2MAN=$(type -P help2man || echo true)
+
+ # Force internal python for now #304521
+ econf \
+ --disable-ccache \
+ --disable-optimizations \
+ --enable-external-libraries \
+ --disable-external-python \
+ --enable-goom \
+ --enable-gl \
+ $(use_enable avahi) \
+ $(use_enable css dvdcss) \
+ $(use_enable debug) \
+ $(use_enable aac faac) \
+ $(use_enable joystick) \
+ $(use_enable midi mid) \
+ $(use_enable profile profiling) \
+ $(use_enable pulseaudio pulse) \
+ $(use_enable vdpau) \
+ $(use_enable xrandr)
+}
+
+src_install() {
+ einstall || die "Install failed!"
+
+ insinto /usr/share/xbmc/web/styles/
+ doins -r "${S}"/web/*/styles/*/ || die
+
+ insinto /usr/share/applications
+ doins tools/Linux/xbmc.desktop
+ doicon tools/Linux/xbmc.png
+
+ dodoc README.linux
+ rm "${D}"/usr/share/xbmc/{README.linux,LICENSE.GPL,*.txt}
+
+ insinto "$(python_get_sitedir)" #309885
+ doins tools/EventClients/lib/python/xbmcclient.py || die
+ newbin "tools/EventClients/Clients/XBMC Send/xbmc-send.py" xbmc-send || die
+}
+
+pkg_postinst() {
+ elog "Visit http://wiki.xbmc.org/?title=XBMC_Online_Manual"
+}