aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Broadhead <jamesbroadhead@gmail.com>2012-03-19 16:42:28 +0000
committerJames Broadhead <jamesbroadhead@gmail.com>2012-03-19 16:42:28 +0000
commit9f9f1b135c0f14c5965cfdc004d801db506ba6a2 (patch)
tree3a74a7a64c7bf3a5770f1b7ae3b22a1a935d0ab2
parentfixed ideviceinstaller (diff)
downloadjamesbroadhead-9f9f1b135c0f14c5965cfdc004d801db506ba6a2.tar.gz
jamesbroadhead-9f9f1b135c0f14c5965cfdc004d801db506ba6a2.tar.bz2
jamesbroadhead-9f9f1b135c0f14c5965cfdc004d801db506ba6a2.zip
media-tv/xbmc: merging old work on xbmc - overtaken by the tree though
-rw-r--r--media-tv/xbmc/Manifest6
-rw-r--r--media-tv/xbmc/files/xbmc-11.0_beta3-libpng1.5-zenkibou-github.patch618
-rw-r--r--media-tv/xbmc/files/xbmc-11.0_beta3-nomysql.patch171
-rw-r--r--media-tv/xbmc/xbmc-11.0_beta2.ebuild1
-rw-r--r--media-tv/xbmc/xbmc-11.0_beta3.ebuild225
5 files changed, 1019 insertions, 2 deletions
diff --git a/media-tv/xbmc/Manifest b/media-tv/xbmc/Manifest
index 0ffb531..f6c9861 100644
--- a/media-tv/xbmc/Manifest
+++ b/media-tv/xbmc/Manifest
@@ -4,7 +4,11 @@ AUX xbmc-10.1-headers.patch 294 RMD160 74536be4a5e3b939c6360bbc715f30e08226af46
AUX xbmc-10.1-libpng-1.5.patch 19253 RMD160 1488504816e668fceb1c3f762738864ea81fa940 SHA1 06e90834bc665eabc3f4e587d551b93af87c1ba5 SHA256 1a0985b91ee9862a538a43689d005dc88d49bf5a70d917896fb69ee416369ff7
AUX xbmc-11.0_beta2-libpng1.5-zenkibou-github.patch 19397 RMD160 9713ef4f233a7790fe143157e1cb08f05a186433 SHA1 a82050f8bab6bcd2dc8ab9f44f39a0507dbf00d9 SHA256 ec14123fe568746b4b16f8d7dde4b4c4b4db3a07ea20273e1fea64604fd6d23c
AUX xbmc-11.0_beta2-nomysql.patch 5115 RMD160 495d073a700d655990ca04376566ec4342f50892 SHA1 a2bc28817f63fde18a8dfc06c434bf109969d26a SHA256 703ddaec184c5abcc3a7c47111a3ae91955be351c2087bdca85de6fb19833b0b
+AUX xbmc-11.0_beta3-libpng1.5-zenkibou-github.patch 19397 RMD160 9713ef4f233a7790fe143157e1cb08f05a186433 SHA1 a82050f8bab6bcd2dc8ab9f44f39a0507dbf00d9 SHA256 ec14123fe568746b4b16f8d7dde4b4c4b4db3a07ea20273e1fea64604fd6d23c
+AUX xbmc-11.0_beta3-nomysql.patch 5115 RMD160 495d073a700d655990ca04376566ec4342f50892 SHA1 a2bc28817f63fde18a8dfc06c434bf109969d26a SHA256 703ddaec184c5abcc3a7c47111a3ae91955be351c2087bdca85de6fb19833b0b
DIST xbmc-11.0-Eden_beta2.tar.gz 56577092 RMD160 4970a097a5a939bcc5d2d120b0d01ed4b95cb828 SHA1 1da6a2e1194bd4ed7e1e04ffccd0b5f92c40e734 SHA256 1f87e04b0444bb3587f055ae1b9d86e3f2fbf4284caeab8bc393e36e0e4c2ec6
-EBUILD xbmc-11.0_beta2.ebuild 5465 RMD160 e334e71e4e56096dd1dbf3bf1f71f205b819141f SHA1 160bde3cc4d11fa39fdef8e2d3cea7565e51faec SHA256 717d74046e10d29d09e2fe5a829996e8cdc3328854b20277e9f1d07740a820b8
+DIST xbmc-11.0-Eden_beta3.tar.gz 56614229 RMD160 9c689b32479a7f8c53de2df51d1cf2bb7e1a1158 SHA1 c619d785bcc995363e637c0cf0f3cd4e63efef60 SHA256 30ce58a2f4a2c08b125ce0965675a0dd94ed16c945f4861a3198552f76875024
+EBUILD xbmc-11.0_beta2.ebuild 5450 RMD160 1ba7532c92ceaa2d7ecce1a287ade6632cea545e SHA1 99ef43afe710d5b0b4799b5666e5fcba4ed1ec19 SHA256 7ab35569a661e7974dc2021f6a90c23b23087205663d3c206a23c463e891839e
+EBUILD xbmc-11.0_beta3.ebuild 5630 RMD160 dab1e8587dbf42568ab78184bade06e4f4e1d221 SHA1 737ffac9627f1d266731d16ffe7fd62f7322a96c SHA256 070837218145946c79b5871c4909a0d3f106beb8751fc74cd2615b9d4252c3fd
MISC ChangeLog 16667 RMD160 3b640cf19348af77f56e84b58c93ed39ee1720f2 SHA1 14f559e02386b8f2813143660a459bce3e4e7ef5 SHA256 9e508644e3a058e58f171207024340115fc8c0028a083281318df9376a9ea217
MISC metadata.xml 885 RMD160 67687f56afd352af492d990c0d1f0b35e08c16bc SHA1 6e4782708b211b5b45d039c633e14b324f0d3805 SHA256 8a5abffe9692e42653163891290a3f48c1ae68d73597b56e3fcc8ee60ee22c2b
diff --git a/media-tv/xbmc/files/xbmc-11.0_beta3-libpng1.5-zenkibou-github.patch b/media-tv/xbmc/files/xbmc-11.0_beta3-libpng1.5-zenkibou-github.patch
new file mode 100644
index 0000000..c065a57
--- /dev/null
+++ b/media-tv/xbmc/files/xbmc-11.0_beta3-libpng1.5-zenkibou-github.patch
@@ -0,0 +1,618 @@
+From 99d1031476f8ec74d42a54667023746ca4153931 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Damien=20Th=C3=A9bault?= <damien.thebault@gmail.com>
+Date: Sat, 14 Jan 2012 23:33:45 +0100
+Subject: [PATCH] Commit cleaned libpng 1.5 support.
+
+---
+ lib/cximage-6.0/CxImage/ximapng.cpp | 258 ++++++++++++++++++++++++++++++++++-
+ lib/cximage-6.0/CxImage/ximapng.h | 5 +
+ 2 files changed, 262 insertions(+), 1 deletions(-)
+
+diff --git a/lib/cximage-6.0/CxImage/ximapng.cpp b/lib/cximage-6.0/CxImage/ximapng.cpp
+index f718269..3e0cf73 100644
+--- a/lib/cximage-6.0/CxImage/ximapng.cpp
++++ b/lib/cximage-6.0/CxImage/ximapng.cpp
+@@ -15,7 +15,11 @@
+ void CxImagePNG::ima_png_error(png_struct *png_ptr, char *message)
+ {
+ strcpy(info.szLastError,message);
++#if PNG_LIBPNG_VER > 10499
++ longjmp(png_jmpbuf(png_ptr), 1);
++#else
+ longjmp(png_ptr->jmpbuf, 1);
++#endif
+ }
+ ////////////////////////////////////////////////////////////////////////////////
+ #if CXIMAGE_SUPPORT_DECODE
+@@ -62,7 +66,11 @@ bool CxImagePNG::Decode(CxFile *hFile)
+ /* Set error handling if you are using the setjmp/longjmp method (this is
+ * the normal method of doing things with libpng). REQUIRED unless you
+ * set up your own error handlers in the png_create_read_struct() earlier. */
++#if PNG_LIBPNG_VER > 10499
++ if (setjmp(png_jmpbuf(png_ptr))) {
++#else
+ if (setjmp(png_ptr->jmpbuf)) {
++#endif
+ /* Free all of the memory associated with the png_ptr and info_ptr */
+ delete [] row_pointers;
+ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
+@@ -76,16 +84,34 @@ bool CxImagePNG::Decode(CxFile *hFile)
+ /* read the file information */
+ png_read_info(png_ptr, info_ptr);
+
++#if PNG_LIBPNG_VER > 10499
++ png_uint_32 _width,_height;
++ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type;
++ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,
++ &_interlace_type,&_compression_type,&_filter_type);
++
++ if (info.nEscape == -1){
++ head.biWidth = _width;
++ head.biHeight= _height;
++ info.dwType = CXIMAGE_FORMAT_PNG;
++ longjmp(png_jmpbuf(png_ptr), 1);
++ }
++#else
+ if (info.nEscape == -1){
+ head.biWidth = info_ptr->width;
+ head.biHeight= info_ptr->height;
+ info.dwType = CXIMAGE_FORMAT_PNG;
+ longjmp(png_ptr->jmpbuf, 1);
+ }
++#endif
+
+ /* calculate new number of channels */
+ int channels=0;
++#if PNG_LIBPNG_VER > 10499
++ switch(_color_type){
++#else
+ switch(info_ptr->color_type){
++#endif
+ case PNG_COLOR_TYPE_GRAY:
+ case PNG_COLOR_TYPE_PALETTE:
+ channels = 1;
+@@ -101,20 +127,49 @@ bool CxImagePNG::Decode(CxFile *hFile)
+ break;
+ default:
+ strcpy(info.szLastError,"unknown PNG color type");
++#if PNG_LIBPNG_VER > 10499
++ longjmp(png_jmpbuf(png_ptr), 1);
++#else
+ longjmp(png_ptr->jmpbuf, 1);
++#endif
+ }
+
+ //find the right pixel depth used for cximage
++#if PNG_LIBPNG_VER > 10499
++ int pixel_depth = _bit_depth * png_get_channels(png_ptr,info_ptr);
++#else
+ int pixel_depth = info_ptr->pixel_depth;
++#endif
+ if (channels == 1 && pixel_depth>8) pixel_depth=8;
+ if (channels == 2) pixel_depth=8;
+ if (channels >= 3) pixel_depth=24;
+
++#if PNG_LIBPNG_VER > 10499
++ if (!Create(_width, _height, pixel_depth, CXIMAGE_FORMAT_PNG)){
++ longjmp(png_jmpbuf(png_ptr), 1);
++#else
+ if (!Create(info_ptr->width, info_ptr->height, pixel_depth, CXIMAGE_FORMAT_PNG)){
+ longjmp(png_ptr->jmpbuf, 1);
++#endif
+ }
+
+ /* get metrics */
++#if PNG_LIBPNG_VER > 10499
++ png_uint_32 _x_pixels_per_unit,_y_pixels_per_unit;
++ int _phys_unit_type;
++ png_get_pHYs(png_ptr,info_ptr,&_x_pixels_per_unit,&_y_pixels_per_unit,&_phys_unit_type);
++ switch (_phys_unit_type)
++ {
++ case PNG_RESOLUTION_UNKNOWN:
++ SetXDPI(_x_pixels_per_unit);
++ SetYDPI(_y_pixels_per_unit);
++ break;
++ case PNG_RESOLUTION_METER:
++ SetXDPI((long)floor(_x_pixels_per_unit * 254.0 / 10000.0 + 0.5));
++ SetYDPI((long)floor(_y_pixels_per_unit * 254.0 / 10000.0 + 0.5));
++ break;
++ }
++#else
+ switch (info_ptr->phys_unit_type)
+ {
+ case PNG_RESOLUTION_UNKNOWN:
+@@ -126,46 +181,94 @@ bool CxImagePNG::Decode(CxFile *hFile)
+ SetYDPI((long)floor(info_ptr->y_pixels_per_unit * 254.0 / 10000.0 + 0.5));
+ break;
+ }
++#endif
+
++#if PNG_LIBPNG_VER > 10499
++ int _num_palette;
++ png_colorp _palette;
++ png_uint_32 _palette_ret;
++ _palette_ret = png_get_PLTE(png_ptr,info_ptr,&_palette,&_num_palette);
++ if (_palette_ret && _num_palette>0){
++ SetPalette((rgb_color*)_palette,_num_palette);
++ SetClrImportant(_num_palette);
++ } else if (_bit_depth ==2) { //<DP> needed for 2 bpp grayscale PNGs
++#else
+ if (info_ptr->num_palette>0){
+ SetPalette((rgb_color*)info_ptr->palette,info_ptr->num_palette);
+ SetClrImportant(info_ptr->num_palette);
+ } else if (info_ptr->bit_depth ==2) { //<DP> needed for 2 bpp grayscale PNGs
++#endif
+ SetPaletteColor(0,0,0,0);
+ SetPaletteColor(1,85,85,85);
+ SetPaletteColor(2,170,170,170);
+ SetPaletteColor(3,255,255,255);
+ } else SetGrayPalette(); //<DP> needed for grayscale PNGs
+
++#if PNG_LIBPNG_VER > 10499
++ int nshift = max(0,(_bit_depth>>3)-1)<<3;
++#else
+ int nshift = max(0,(info_ptr->bit_depth>>3)-1)<<3;
++#endif
+
++#if PNG_LIBPNG_VER > 10499
++ png_bytep _trans_alpha;
++ int _num_trans;
++ png_color_16p _trans_color;
++ png_uint_32 _trans_ret;
++ _trans_ret = png_get_tRNS(png_ptr,info_ptr,&_trans_alpha,&_num_trans,&_trans_color);
++ if (_trans_ret && _num_trans!=0){ //palette transparency
++ if (_num_trans==1){
++ if (_color_type == PNG_COLOR_TYPE_PALETTE){
++#else
+ if (info_ptr->num_trans!=0){ //palette transparency
+ if (info_ptr->num_trans==1){
+ if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE){
++#endif
++#if PNG_LIBPNG_VER > 10499
++ info.nBkgndIndex = _trans_color->index;
++#else
+ #if PNG_LIBPNG_VER > 10399
+ info.nBkgndIndex = info_ptr->trans_color.index;
+ #else
+ info.nBkgndIndex = info_ptr->trans_values.index;
+ #endif
++#endif
+ } else{
++#if PNG_LIBPNG_VER > 10499
++ info.nBkgndIndex = _trans_color->gray>>nshift;
++#else
+ #if PNG_LIBPNG_VER > 10399
+ info.nBkgndIndex = info_ptr->trans_color.gray>>nshift;
+ #else
+ info.nBkgndIndex = info_ptr->trans_values.gray>>nshift;
+ #endif
++#endif
+ }
+ }
++#if PNG_LIBPNG_VER > 10499
++ if (_num_trans>1 && _trans_alpha!=NULL){
++#else
+ if (info_ptr->num_trans>1){
++#endif
+ RGBQUAD* pal=GetPalette();
+ if (pal){
+ DWORD ip;
++#if PNG_LIBPNG_VER > 10499
++ for (ip=0;ip<min(head.biClrUsed,(unsigned long)_num_trans);ip++)
++ pal[ip].rgbReserved=_trans_alpha[ip];
++#else
+ for (ip=0;ip<min(head.biClrUsed,(unsigned long)info_ptr->num_trans);ip++)
+ #if PNG_LIBPNG_VER > 10399
+ pal[ip].rgbReserved=info_ptr->trans_alpha[ip];
+ #else
+ pal[ip].rgbReserved=info_ptr->trans[ip];
+ #endif
++#endif
++#if PNG_LIBPNG_VER > 10499
++ for (ip=_num_trans;ip<head.biClrUsed;ip++){
++#else
+ for (ip=info_ptr->num_trans;ip<head.biClrUsed;ip++){
++#endif
+ pal[ip].rgbReserved=255;
+ }
+ info.bAlphaPaletteEnabled=true;
+@@ -178,6 +281,11 @@ bool CxImagePNG::Decode(CxFile *hFile)
+ int num_trans;
+ png_color_16 *image_background;
+ if (png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, &image_background)){
++#if PNG_LIBPNG_VER > 10499
++ info.nBkgndColor.rgbRed = (BYTE)(_trans_color->red>>nshift);
++ info.nBkgndColor.rgbGreen = (BYTE)(_trans_color->green>>nshift);
++ info.nBkgndColor.rgbBlue = (BYTE)(_trans_color->blue>>nshift);
++#else
+ #if PNG_LIBPNG_VER > 10399
+ info.nBkgndColor.rgbRed = (BYTE)(info_ptr->trans_color.red>>nshift);
+ info.nBkgndColor.rgbGreen = (BYTE)(info_ptr->trans_color.green>>nshift);
+@@ -187,6 +295,7 @@ bool CxImagePNG::Decode(CxFile *hFile)
+ info.nBkgndColor.rgbGreen = (BYTE)(info_ptr->trans_values.green>>nshift);
+ info.nBkgndColor.rgbBlue = (BYTE)(info_ptr->trans_values.blue>>nshift);
+ #endif
++#endif
+ info.nBkgndColor.rgbReserved = 0;
+ info.nBkgndIndex = 0;
+ }
+@@ -202,15 +311,27 @@ bool CxImagePNG::Decode(CxFile *hFile)
+ }
+
+ // <vho> - flip the RGB pixels to BGR (or RGBA to BGRA)
++#if PNG_LIBPNG_VER > 10499
++ if (_color_type & PNG_COLOR_MASK_COLOR){
++#else
+ if (info_ptr->color_type & PNG_COLOR_MASK_COLOR){
++#endif
+ png_set_bgr(png_ptr);
+ }
+
+ // <vho> - handle cancel
++#if PNG_LIBPNG_VER > 10499
++ if (info.nEscape) longjmp(png_jmpbuf(png_ptr), 1);
++#else
+ if (info.nEscape) longjmp(png_ptr->jmpbuf, 1);
++#endif
+
+ // row_bytes is the width x number of channels x (bit-depth / 8)
++#if PNG_LIBPNG_VER > 10499
++ row_pointers = new BYTE[png_get_rowbytes(png_ptr,info_ptr) + 8];
++#else
+ row_pointers = new BYTE[info_ptr->rowbytes + 8];
++#endif
+
+ // turn on interlace handling
+ int number_passes = png_set_interlace_handling(png_ptr);
+@@ -221,8 +342,16 @@ bool CxImagePNG::Decode(CxFile *hFile)
+ SetCodecOption(0);
+ }
+
++#if PNG_LIBPNG_VER > 10499
++ int chan_offset = _bit_depth >> 3;
++#else
+ int chan_offset = info_ptr->bit_depth >> 3;
++#endif
++#if PNG_LIBPNG_VER > 10499
++ int pixel_offset = (_bit_depth * png_get_channels(png_ptr,info_ptr)) >> 3;
++#else
+ int pixel_offset = info_ptr->pixel_depth >> 3;
++#endif
+
+ for (int pass=0; pass < number_passes; pass++) {
+ iter.Upset();
+@@ -230,7 +359,11 @@ bool CxImagePNG::Decode(CxFile *hFile)
+ do {
+
+ // <vho> - handle cancel
++#if PNG_LIBPNG_VER > 10499
++ if (info.nEscape) longjmp(png_jmpbuf(png_ptr), 1);
++#else
+ if (info.nEscape) longjmp(png_ptr->jmpbuf, 1);
++#endif
+
+ #if CXIMAGE_SUPPORT_ALPHA // <vho>
+ if (AlphaIsValid()) {
+@@ -241,7 +374,11 @@ bool CxImagePNG::Decode(CxFile *hFile)
+ BYTE* prow= iter.GetRow(ay);
+
+ //recover data from previous scan
++#if PNG_LIBPNG_VER > 10499
++ if (_interlace_type && pass>0 && pass!=7){
++#else
+ if (info_ptr->interlace_type && pass>0 && pass!=7){
++#endif
+ for(ax=0;ax<head.biWidth;ax++){
+ long px = ax * pixel_offset;
+ if (channels == 2){
+@@ -278,10 +415,17 @@ bool CxImagePNG::Decode(CxFile *hFile)
+ #endif // CXIMAGE_SUPPORT_ALPHA // vho
+ {
+ //recover data from previous scan
++#if PNG_LIBPNG_VER > 10499
++ if (_interlace_type && pass>0){
++ iter.GetRow(row_pointers, png_get_rowbytes(png_ptr,info_ptr));
++ //re-expand buffer for images with bit depth > 8
++ if (_bit_depth > 8){
++#else
+ if (info_ptr->interlace_type && pass>0){
+ iter.GetRow(row_pointers, info_ptr->rowbytes);
+ //re-expand buffer for images with bit depth > 8
+ if (info_ptr->bit_depth > 8){
++#endif
+ for(long ax=(head.biWidth*channels-1);ax>=0;ax--)
+ row_pointers[ax*chan_offset] = row_pointers[ax];
+ }
+@@ -291,15 +435,27 @@ bool CxImagePNG::Decode(CxFile *hFile)
+ png_read_row(png_ptr, row_pointers, NULL);
+
+ //shrink 16 bit depth images down to 8 bits
++#if PNG_LIBPNG_VER > 10499
++ if (_bit_depth > 8){
++#else
+ if (info_ptr->bit_depth > 8){
++#endif
+ for(long ax=0;ax<(head.biWidth*channels);ax++)
+ row_pointers[ax] = row_pointers[ax*chan_offset];
+ }
+
+ //copy the pixels
++#if PNG_LIBPNG_VER > 10499
++ iter.SetRow(row_pointers, png_get_rowbytes(png_ptr,info_ptr));
++#else
+ iter.SetRow(row_pointers, info_ptr->rowbytes);
++#endif
+ //<DP> expand 2 bpp images only in the last pass
++#if PNG_LIBPNG_VER > 10499
++ if (_bit_depth==2 && pass==(number_passes-1))
++#else
+ if (info_ptr->bit_depth==2 && pass==(number_passes-1))
++#endif
+ expand2to4bpp(iter.GetRow());
+
+ //go on
+@@ -361,9 +517,13 @@ bool CxImagePNG::Encode(CxFile *hFile)
+ /* Set error handling. REQUIRED if you aren't supplying your own
+ * error hadnling functions in the png_create_write_struct() call.
+ */
++#if PNG_LIBPNG_VER > 10499
++ if (setjmp(png_jmpbuf(png_ptr))){
++#else
+ if (setjmp(png_ptr->jmpbuf)){
+ /* If we get here, we had a problem reading the file */
+ if (info_ptr->palette) free(info_ptr->palette);
++#endif
+ png_destroy_write_struct(&png_ptr, (png_infopp)&info_ptr);
+ cx_throw("Error saving PNG file");
+ }
+@@ -372,9 +532,23 @@ bool CxImagePNG::Encode(CxFile *hFile)
+ //png_init_io(png_ptr, hFile);
+
+ // use custom I/O functions
+- png_set_write_fn(png_ptr,hFile,/*(png_rw_ptr)*/user_write_data,/*(png_flush_ptr)*/user_flush_data);
++ png_set_write_fn(png_ptr,hFile,/*(png_rw_ptr)*/user_write_data,/*(png_flush_ptr)*/user_flush_data);
+
+ /* set the file information here */
++#if PNG_LIBPNG_VER > 10499
++ /* use variables to hold the values so it isnt necessary to png_get them later */
++ png_uint_32 _width,_height;
++ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type;
++ png_byte _channels,_pixel_depth;
++
++ _width = GetWidth();
++ _height = GetHeight();
++ _pixel_depth = (BYTE)GetBpp();
++ _channels = (GetBpp()>8) ? (BYTE)3: (BYTE)1;
++ _bit_depth = (BYTE)(GetBpp()/_channels);
++ _compression_type = PNG_COMPRESSION_TYPE_DEFAULT;
++ _filter_type = PNG_FILTER_TYPE_DEFAULT;
++#else
+ info_ptr->width = GetWidth();
+ info_ptr->height = GetHeight();
+ info_ptr->pixel_depth = (BYTE)GetBpp();
+@@ -382,13 +556,22 @@ bool CxImagePNG::Encode(CxFile *hFile)
+ info_ptr->bit_depth = (BYTE)(GetBpp()/info_ptr->channels);
+ info_ptr->compression_type = info_ptr->filter_type = 0;
+ info_ptr->valid = 0;
++#endif
+
+ switch(GetCodecOption(CXIMAGE_FORMAT_PNG)){
+ case 1:
++#if PNG_LIBPNG_VER > 10499
++ _interlace_type = PNG_INTERLACE_ADAM7;
++#else
+ info_ptr->interlace_type = PNG_INTERLACE_ADAM7;
++#endif
+ break;
+ default:
++#if PNG_LIBPNG_VER > 10499
++ _interlace_type = PNG_INTERLACE_NONE;
++#else
+ info_ptr->interlace_type = PNG_INTERLACE_NONE;
++#endif
+ }
+
+ /* set compression level */
+@@ -398,19 +581,38 @@ bool CxImagePNG::Encode(CxFile *hFile)
+
+ if (GetNumColors()){
+ if (bGrayScale){
++#if PNG_LIBPNG_VER > 10499
++ _color_type = PNG_COLOR_TYPE_GRAY;
++#else
+ info_ptr->color_type = PNG_COLOR_TYPE_GRAY;
++#endif
+ } else {
++#if PNG_LIBPNG_VER > 10499
++ _color_type = PNG_COLOR_TYPE_PALETTE;
++#else
+ info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
++#endif
+ }
+ } else {
++#if PNG_LIBPNG_VER > 10499
++ _color_type = PNG_COLOR_TYPE_RGB;
++#else
+ info_ptr->color_type = PNG_COLOR_TYPE_RGB;
++#endif
+ }
+ #if CXIMAGE_SUPPORT_ALPHA
+ if (AlphaIsValid()){
++#if PNG_LIBPNG_VER > 10499
++ _color_type |= PNG_COLOR_MASK_ALPHA;
++ _channels++;
++ _bit_depth = 8;
++ _pixel_depth += 8;
++#else
+ info_ptr->color_type |= PNG_COLOR_MASK_ALPHA;
+ info_ptr->channels++;
+ info_ptr->bit_depth = 8;
+ info_ptr->pixel_depth += 8;
++#endif
+ }
+ #endif
+
+@@ -427,14 +629,30 @@ bool CxImagePNG::Encode(CxFile *hFile)
+ /* set metrics */
+ png_set_pHYs(png_ptr, info_ptr, head.biXPelsPerMeter, head.biYPelsPerMeter, PNG_RESOLUTION_METER);
+
++#if PNG_LIBPNG_VER > 10499
++ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type,_interlace_type,
++ _compression_type,_filter_type);
++#else
+ png_set_IHDR(png_ptr, info_ptr, info_ptr->width, info_ptr->height, info_ptr->bit_depth,
+ info_ptr->color_type, info_ptr->interlace_type,
+ PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
++#endif
+
+ //<DP> simple transparency
+ if (info.nBkgndIndex >= 0){
++#if PNG_LIBPNG_VER <= 10499
+ info_ptr->num_trans = 1;
+ info_ptr->valid |= PNG_INFO_tRNS;
++#endif
++#if PNG_LIBPNG_VER > 10499
++ png_color_16 _trans_color;
++ _trans_color.index = (BYTE)info.nBkgndIndex;
++ _trans_color.red = tc.rgbRed;
++ _trans_color.green = tc.rgbGreen;
++ _trans_color.blue = tc.rgbBlue;
++ _trans_color.gray = _trans_color.index;
++ png_set_tRNS(png_ptr,info_ptr,(png_bytep)trans,1,&_trans_color);
++#else
+ #if PNG_LIBPNG_VER > 10399
+ info_ptr->trans_alpha = trans;
+ info_ptr->trans_color.index = (BYTE)info.nBkgndIndex;
+@@ -450,6 +668,7 @@ bool CxImagePNG::Encode(CxFile *hFile)
+ info_ptr->trans_values.blue = tc.rgbBlue;
+ info_ptr->trans_values.gray = info_ptr->trans_values.index;
+ #endif
++#endif
+
+ // the transparency indexes start from 0 for non grayscale palette
+ if (!bGrayScale && head.biClrUsed && info.nBkgndIndex)
+@@ -457,10 +676,16 @@ bool CxImagePNG::Encode(CxFile *hFile)
+ }
+
+ /* set the palette if there is one */
++#if PNG_LIBPNG_VER > 10499
++ png_colorp _palette = NULL;
++ if (GetPalette()){
++ /* png_set_PLTE() will be called once the palette is ready */
++#else
+ if (GetPalette()){
+ if (!bGrayScale){
+ info_ptr->valid |= PNG_INFO_PLTE;
+ }
++#endif
+
+ int nc = GetClrImportant();
+ if (nc==0) nc = GetNumColors();
+@@ -468,20 +693,34 @@ bool CxImagePNG::Encode(CxFile *hFile)
+ if (info.bAlphaPaletteEnabled){
+ for(WORD ip=0; ip<nc;ip++)
+ trans[ip]=GetPaletteColor((BYTE)ip).rgbReserved;
++#if PNG_LIBPNG_VER <= 10499
+ info_ptr->num_trans = (WORD)nc;
+ info_ptr->valid |= PNG_INFO_tRNS;
++#endif
++#if PNG_LIBPNG_VER > 10499
++ png_set_tRNS(png_ptr,info_ptr,(png_bytep)trans,nc,NULL);
++#else
+ #if PNG_LIBPNG_VER > 10399
+ info_ptr->trans_alpha = trans;
+ #else
+ info_ptr->trans = trans;
+ #endif
++#endif
+ }
+
+ // copy the palette colors
++#if PNG_LIBPNG_VER > 10499
++ _palette = new png_color[nc];
++ for (int i=0; i<nc; i++)
++ GetPaletteColor(i, &_palette[i].red, &_palette[i].green, &_palette[i].blue);
++
++ png_set_PLTE(png_ptr,info_ptr,_palette,nc);
++#else
+ info_ptr->palette = new png_color[nc];
+ info_ptr->num_palette = (png_uint_16) nc;
+ for (int i=0; i<nc; i++)
+ GetPaletteColor(i, &info_ptr->palette[i].red, &info_ptr->palette[i].green, &info_ptr->palette[i].blue);
++#endif
+ }
+
+ #if CXIMAGE_SUPPORT_ALPHA // <vho>
+@@ -495,8 +734,12 @@ bool CxImagePNG::Encode(CxFile *hFile)
+ } } }
+ #endif // CXIMAGE_SUPPORT_ALPHA // <vho>
+
++#if PNG_LIBPNG_VER > 10499
++ int row_size = max(info.dwEffWidth, (_width * _channels * _bit_depth / 8));
++#else
+ int row_size = max(info.dwEffWidth, info_ptr->width*info_ptr->channels*(info_ptr->bit_depth/8));
+ info_ptr->rowbytes = row_size;
++#endif
+ BYTE *row_pointers = new BYTE[row_size];
+
+ /* write the file information */
+@@ -514,7 +757,11 @@ bool CxImagePNG::Encode(CxFile *hFile)
+ if (AlphaIsValid()){
+ for (long ax=head.biWidth-1; ax>=0;ax--){
+ c = BlindGetPixelColor(ax,ay);
++#if PNG_LIBPNG_VER > 10499
++ int px = ax * _channels;
++#else
+ int px = ax * info_ptr->channels;
++#endif
+ if (!bGrayScale){
+ row_pointers[px++]=c.rgbRed;
+ row_pointers[px++]=c.rgbGreen;
+@@ -529,7 +776,11 @@ bool CxImagePNG::Encode(CxFile *hFile)
+ #endif //CXIMAGE_SUPPORT_ALPHA // <vho>
+ {
+ iter.GetRow(row_pointers, row_size);
++#if PNG_LIBPNG_VER > 10499
++ if (_color_type == PNG_COLOR_TYPE_RGB) //HACK BY OP
++#else
+ if (info_ptr->color_type == PNG_COLOR_TYPE_RGB) //HACK BY OP
++#endif
+ RGBtoBGR(row_pointers, row_size);
+ png_write_row(png_ptr, row_pointers);
+ }
+@@ -546,9 +797,14 @@ bool CxImagePNG::Encode(CxFile *hFile)
+ png_write_end(png_ptr, info_ptr);
+
+ /* if you malloced the palette, free it here */
++#if PNG_LIBPNG_VER > 10499
++ if (_palette){
++ delete [] (_palette);
++#else
+ if (info_ptr->palette){
+ delete [] (info_ptr->palette);
+ info_ptr->palette = NULL;
++#endif
+ }
+
+ /* clean up after the write, and free any memory allocated */
+diff --git a/lib/cximage-6.0/CxImage/ximapng.h b/lib/cximage-6.0/CxImage/ximapng.h
+index db41935..68d8ddb 100644
+--- a/lib/cximage-6.0/CxImage/ximapng.h
++++ b/lib/cximage-6.0/CxImage/ximapng.h
+@@ -69,8 +69,13 @@ class CxImagePNG: public CxImage
+
+ static void PNGAPI user_error_fn(png_structp png_ptr,png_const_charp error_msg)
+ {
++#if PNG_LIBPNG_VER > 10499
++ strncpy((char*)png_get_error_ptr(png_ptr),error_msg,255);
++ longjmp(png_jmpbuf(png_ptr), 1);
++#else
+ strncpy((char*)png_ptr->error_ptr,error_msg,255);
+ longjmp(png_ptr->jmpbuf, 1);
++#endif
+ }
+ };
+
+--
+1.7.5.4
+
diff --git a/media-tv/xbmc/files/xbmc-11.0_beta3-nomysql.patch b/media-tv/xbmc/files/xbmc-11.0_beta3-nomysql.patch
new file mode 100644
index 0000000..2b28006
--- /dev/null
+++ b/media-tv/xbmc/files/xbmc-11.0_beta3-nomysql.patch
@@ -0,0 +1,171 @@
+http://trac.xbmc.org/attachment/ticket/11775
+
+make mysql support optional
+
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -127,13 +127,17 @@ endif
+ LIB_DIRS=\
+ lib/cximage-6.0 \
+ lib/libexif \
+- lib/cmyth \
+ lib/libhdhomerun \
+ lib/libid3tag \
+ lib/libapetag \
+ lib/cpluff \
+ lib/xbmc-dll-symbols
+
++ifeq (@BUILD_MYTHTV@,1)
++LIB_DIRS+=\
++ lib/cmyth
++endif
++
+ SS_DIRS=
+ ifeq (@USE_OPENGL@,1)
+ SS_DIRS+= xbmc/screensavers/rsxs-0.9/xbmc
+@@ -418,7 +422,10 @@ imagelib: dllloader
+ $(MAKE) -C lib/cximage-6.0
+
+ codecs: papcodecs dvdpcodecs
+-libs: cmyth libhdhomerun libid3tag imagelib libexif system/libcpluff-@ARCH@.so
++libs: libhdhomerun libid3tag imagelib libexif system/libcpluff-@ARCH@.so
++ifeq (@BUILD_MYTHTV@,1)
++libs: cmyth
++endif
+ externals: codecs libs visualizations screensavers
+
+ xcode_depends: \
+
+--- a/xbmc/dbwrappers/Database.cpp
++++ b/xbmc/dbwrappers/Database.cpp
+@@ -29,7 +29,9 @@
+ #include "utils/AutoPtrHandle.h"
+ #include "utils/log.h"
+ #include "utils/URIUtils.h"
++#ifdef BUILD_MYTHTV
+ #include "mysqldataset.h"
++#endif /* BUILD_MYTHTV */
+ #include "sqlitedataset.h"
+
+
+@@ -265,6 +267,7 @@ bool CDatabase::Open(const DatabaseSettings &settings)
+
+ m_sqlite = true;
+
++#ifdef BUILD_MYTHTV
+ if ( dbSettings.type.Equals("mysql") )
+ {
+ // check we have all information before we cancel the fallback
+@@ -274,6 +277,7 @@ bool CDatabase::Open(const DatabaseSettings &settings)
+ else
+ CLog::Log(LOGINFO, "essential mysql database information is missing (eg. host, name, user, pass)");
+ }
++#endif /* BUILD_MYTHTV */
+
+ // always safely fallback to sqlite3, and use separate, versioned database
+ if (m_sqlite)
+@@ -339,10 +343,12 @@ bool CDatabase::Connect(const DatabaseSettings &dbSettings, bool create)
+ {
+ m_pDB.reset( new SqliteDatabase() ) ;
+ }
++#ifdef BUILD_MYTHTV
+ else if (dbSettings.type.Equals("mysql"))
+ {
+ m_pDB.reset( new MysqlDatabase() ) ;
+ }
++#endif /* BUILD_MYTHTV */
+ else
+ {
+ CLog::Log(LOGERROR, "Unable to determine database type: %s", dbSettings.type.c_str());
+--- a/xbmc/dbwrappers/Makefile
++++ b/xbmc/dbwrappers/Makefile
+@@ -1,9 +1,13 @@
+ SRCS=Database.cpp \
+ dataset.cpp \
+- mysqldataset.cpp \
+ qry_dat.cpp \
+ sqlitedataset.cpp \
+
++ifeq (@BUILD_MYTHTV@,1)
++SRCS+=\
++ mysqldataset.cpp
++endif
++
+ LIB=dbwrappers.a
+
+ include ../../Makefile.include
+
+--- a/configure.in 2012-01-21 00:52:52.000000000 +0000
++++ b/configure.in 2012-01-29 18:46:09.544462430 +0000
+@@ -85,6 +85,8 @@
+ x11_disabled="== X11 disabled. =="
+ pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
+ pulse_disabled="== PulseAudio support manually disabled. =="
++mysql_not_found="Could not find required library libmysqlclient for MythTV."
++mythtv_disabled="== MythTV support disabled. =="
+ dvdcss_enabled="== DVDCSS support enabled. =="
+ dvdcss_disabled="== DVDCSS support disabled. =="
+ hal_not_found="== Could not find hal. HAL support disabled. =="
+@@ -325,6 +327,12 @@
+ [use_ffmpeg_libvorbis=$enableval],
+ [use_ffmpeg_libvorbis=no])
+
++AC_ARG_ENABLE([mythtv],
++ [AS_HELP_STRING([--enable-mythtv],
++ [enable MythTV support (default is yes)])],
++ [use_mythtv=$enableval],
++ [use_mythtv=yes])
++
+ AC_ARG_ENABLE([dvdcss],
+ [AS_HELP_STRING([--enable-dvdcss],
+ [enable DVDCSS support (default is yes)])],
+@@ -675,6 +683,7 @@
+ fi
+
+ # platform common libraries
++if test "$use_mythtv" = "yes"; then
+ AC_CHECK_PROG(MYSQL_CONFIG, mysql_config, "yes", "no")
+ if test $MYSQL_CONFIG = "yes"; then
+ INCLUDES="$INCLUDES `mysql_config --include`"
+@@ -684,6 +693,12 @@
+ else
+ AC_MSG_ERROR($missing_program)
+ fi
++ AC_CHECK_LIB([mysqlclient], [main],
++ AC_DEFINE([BUILD_MYTHTV], [1], [Define to 1 to build mythtv.]),
++ AC_MSG_ERROR($mysql_not_found))
++else
++ AC_MSG_RESULT($mythtv_disabled)
++fi
+ AC_CHECK_HEADER([ass/ass.h],, AC_MSG_ERROR($missing_library))
+ AC_CHECK_HEADER([mpeg2dec/mpeg2.h],, AC_MSG_ERROR($missing_library))
+ AC_CHECK_HEADER([mpeg2dec/mpeg2convert.h],, AC_MSG_ERROR($missing_library),
+@@ -718,7 +733,6 @@
+ AC_CHECK_LIB([z], [main],, AC_MSG_ERROR($missing_library))
+ AC_CHECK_LIB([crypto], [main],, AC_MSG_ERROR($missing_library))
+ AC_CHECK_LIB([ssl], [main],, AC_MSG_ERROR($missing_library))
+-AC_CHECK_LIB([mysqlclient], [main],, AC_MSG_ERROR($missing_library))
+ AC_CHECK_LIB([ssh], [sftp_tell64],, AC_MSG_RESULT([Could not find suitable version of libssh]))
+ AC_CHECK_LIB([bluetooth], [hci_devid],, AC_MSG_RESULT([Could not find suitable version of libbluetooth]))
+ AC_CHECK_LIB([yajl], [main],, AC_MSG_ERROR($missing_library))
+@@ -1704,6 +1718,12 @@
+ final_message="$final_message\n HAL Support:\tNo"
+ fi
+
++if test "$use_mythtv" = "yes"; then
++ final_message="$final_message\n MythTV:\tYes"
++else
++ final_message="$final_message\n MythTV:\tNo"
++fi
++
+ # DVDCSS
+ if test "$use_dvdcss" = "yes"; then
+ AC_MSG_NOTICE($dvdcss_enabled)
+@@ -1926,6 +1946,7 @@
+ AC_SUBST(PYTHON_VERSION)
+ AC_SUBST(OUTPUT_FILES)
+ AC_SUBST(HAVE_XBMC_NONFREE)
++AC_SUBST(BUILD_MYTHTV)
+ AC_SUBST(USE_ASAP_CODEC)
+ AC_SUBST(LIBCURL_BASENAME)
+ AC_SUBST(LIBFLAC_BASENAME)
diff --git a/media-tv/xbmc/xbmc-11.0_beta2.ebuild b/media-tv/xbmc/xbmc-11.0_beta2.ebuild
index 468627e..1cb8f84 100644
--- a/media-tv/xbmc/xbmc-11.0_beta2.ebuild
+++ b/media-tv/xbmc/xbmc-11.0_beta2.ebuild
@@ -73,7 +73,6 @@ COMMON_DEPEND="app-arch/bzip2
sys-libs/zlib
virtual/jpeg
virtual/opengl
- virtual/mysql
x11-apps/xdpyinfo
x11-apps/mesa-progs
x11-libs/libXinerama
diff --git a/media-tv/xbmc/xbmc-11.0_beta3.ebuild b/media-tv/xbmc/xbmc-11.0_beta3.ebuild
new file mode 100644
index 0000000..e53d38a
--- /dev/null
+++ b/media-tv/xbmc/xbmc-11.0_beta3.ebuild
@@ -0,0 +1,225 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="2"
+
+inherit autotools eutils python
+
+EGIT_REPO_URI="git://github.com/xbmc/xbmc.git"
+if [[ ${PV} == "9999" ]] ; then
+ inherit git-2
+else
+ if [[ ${PV} == *beta* ]] ; then
+ inherit versionator
+ CODENAME="Eden"
+ MY_PV=`get_version_component_range 1-2`-${CODENAME}_`get_version_component_range 3`
+
+ MY_P="${PN}-${MY_PV}"
+ else
+ MY_P=${P/_/-}
+ fi
+ SRC_URI="http://mirrors.xbmc.org/releases/source/${MY_P}.tar.gz"
+ KEYWORDS="~amd64 ~x86"
+ S="${WORKDIR}/${MY_P}${EXTRA_PV}"
+fi
+
+DESCRIPTION="XBMC is a free and open source media-player and entertainment hub"
+HOMEPAGE="http://xbmc.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="airplay alsa altivec avahi bluray css debug goom joystick midi profile +projectm pulseaudio pvr +rsxs rtmp +samba sse sse2 udev vaapi vdpau webserver +xrandr"
+
+# TODO: Verify that media-video/ffmpeg is correct (not virtual/ffmpeg)
+COMMON_DEPEND="app-arch/bzip2
+ app-arch/unzip
+ app-arch/zip
+ app-i18n/enca
+ >=dev-lang/python-2.4
+ dev-libs/boost
+ dev-libs/fribidi
+ dev-libs/libcdio[-minimal]
+ dev-libs/libpcre[cxx]
+ dev-libs/lzo
+ dev-libs/yajl
+ >=dev-python/pysqlite-2
+ dev-python/simplejson
+ media-libs/alsa-lib
+ media-libs/flac
+ media-libs/fontconfig
+ media-libs/freetype
+ media-libs/glew
+ media-libs/jasper
+ media-libs/jbigkit
+ media-libs/libass
+ media-libs/libmad
+ media-libs/libmodplug
+ media-libs/libmpeg2
+ media-libs/libogg
+ media-libs/libpng
+ media-libs/libsamplerate
+ media-libs/libsdl[audio,opengl,video,X]
+ 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
+ media-sound/wavpack
+ media-video/ffmpeg
+ net-misc/curl
+ =net-wireless/bluez-4.96
+ sys-apps/dbus
+ sys-libs/zlib
+ virtual/jpeg
+ virtual/opengl
+ x11-apps/xdpyinfo
+ x11-apps/mesa-progs
+ x11-libs/libXinerama
+ x11-libs/libXrender
+ airplay? ( app-pda/libplist )
+ alsa? ( media-libs/libsdl[alsa] )
+ avahi? ( net-dns/avahi )
+ bluray? ( media-libs/libbluray )
+ css? ( media-libs/libdvdcss )
+ pulseaudio? ( media-sound/pulseaudio )
+ projectm? ( media-libs/libprojectm )
+ pvr? ( virtual/mysql )
+ rtmp? ( media-video/rtmpdump )
+ samba? ( >=net-fs/samba-3.4.6[smbclient] )
+ vaapi? ( x11-libs/libva )
+ vdpau? (
+ || ( x11-libs/libvdpau >=x11-drivers/nvidia-drivers-180.51 )
+ media-video/ffmpeg[vdpau]
+ )
+ webserver? ( net-libs/libmicrohttpd )
+ xrandr? ( x11-libs/libXrandr )"
+
+RDEPEND="${COMMON_DEPEND}
+ udev? ( sys-fs/udisks sys-power/upower )"
+DEPEND="${COMMON_DEPEND}
+ dev-util/cmake
+ dev-util/gperf
+ x11-proto/xineramaproto
+ x86? ( dev-lang/nasm )"
+
+src_unpack() {
+ if [[ ${PV} == "9999" ]] ; then
+ git-2_src_unpack
+ cd "${S}" || die
+ rm -f configure
+ else
+ unpack ${A} || die
+
+ # TODO: fix this
+ # zipfile: 11.0-Eden_beta3 has folder 11.0-Eden_beta3.1
+ if ! [ -d ${S} ] && [ -d "${S}.1" ] ; then
+ S="${S}.1"
+ fi
+ cd "${S}" || die
+ fi
+
+ # Fix case sensitivity
+ mv media/Fonts/{a,A}rial.ttf || die
+ mv media/{S,s}plash.png || die
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${P}-nomysql.patch || die
+ epatch "${FILESDIR}"/${P}-libpng1.5-zenkibou-github.patch || die
+
+ # some dirs ship generated autotools, some dont
+ local d
+ for d in \
+ . \
+ lib/{libdvd/lib*/,cpluff,libapetag,libid3tag/libid3tag} \
+ xbmc/screensavers/rsxs-* \
+ xbmc/visualizations/Goom/goom2k4-0
+ do
+ [[ -e ${d}/configure ]] && continue
+ pushd ${d} >/dev/null
+ einfo "Generating autotools in ${d}"
+ eautoreconf
+ popd >/dev/null
+ done
+
+ 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}" \
+ lib/libsquish/Makefile.in || die
+
+ # Fix XBMC's final version string showing as "exported"
+ # instead of the SVN revision number.
+ export HAVE_GIT=no GIT_REV=${EGIT_VERSION:-exported}
+
+ # Avoid lsb-release dependency
+ sed -i \
+ -e 's:lsb_release -d:cat /etc/gentoo-release:' \
+ xbmc/utils/SystemInfo.cpp || die
+
+ # avoid long delays when powerkit isn't running #348580
+ sed -i \
+ -e '/dbus_connection_send_with_reply_and_block/s:-1:3000:' \
+ xbmc/linux/*.cpp || die
+
+ 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)
+
+ econf \
+ --docdir=/usr/share/doc/${PF} \
+ --disable-ccache \
+ --disable-optimizations \
+ --enable-external-libraries \
+ --enable-gl \
+ $(use_enable airplay) \
+ $(use_enable avahi) \
+ $(use_enable bluray libbluray) \
+ $(use_enable css dvdcss) \
+ $(use_enable debug) \
+ $(use_enable goom) \
+ --disable-hal \
+ $(use_enable joystick) \
+ $(use_enable midi mid) \
+ $(use_enable profile profiling) \
+ $(use_enable projectm) \
+ $(use_enable pulseaudio pulse) \
+ $(use_enable pvr mythtv) \
+ $(use_enable rsxs) \
+ $(use_enable rtmp) \
+ $(use_enable samba) \
+ $(use_enable vaapi) \
+ $(use_enable vdpau) \
+ $(use_enable webserver) \
+ $(use_enable xrandr)
+}
+
+src_install() {
+ emake install DESTDIR="${D}" || die
+ prepalldocs
+
+ insinto /usr/share/applications
+ doins tools/Linux/xbmc.desktop
+ doicon tools/Linux/xbmc.png
+
+ 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"
+}