summaryrefslogtreecommitdiff
path: root/extra/libgdiplus
diff options
context:
space:
mode:
Diffstat (limited to 'extra/libgdiplus')
-rw-r--r--extra/libgdiplus/PKGBUILD30
-rw-r--r--extra/libgdiplus/libgdiplus-2.10.9-gold.patch16
-rw-r--r--extra/libgdiplus/libgdiplus0-giflib5.patch117
3 files changed, 153 insertions, 10 deletions
diff --git a/extra/libgdiplus/PKGBUILD b/extra/libgdiplus/PKGBUILD
index 8a6d1e1eb..7863a185e 100644
--- a/extra/libgdiplus/PKGBUILD
+++ b/extra/libgdiplus/PKGBUILD
@@ -1,28 +1,38 @@
-# $Id: PKGBUILD 184402 2013-05-06 19:38:19Z foutrelis $
+# $Id: PKGBUILD 191924 2013-08-01 06:59:55Z bpiotrowski $
# Maintainer: Daniel Isenmann <daniel@archlinux.org>
pkgname=libgdiplus
-pkgver=2.10
-pkgrel=4
+pkgver=2.10.9
+pkgrel=1
pkgdesc="An Open Source Implementation of the GDI+ API"
arch=(i686 x86_64 'mips64el')
license=('MPL' 'LGPL')
url="http://www.mono-project.com"
-depends=('libtiff>=3.9.2-2' 'cairo>=1.8.10' 'giflib' 'glib2>=2.24.0' 'libexif')
+depends=('libtiff' 'cairo' 'giflib' 'glib2' 'libexif')
options=('!libtool')
-source=(http://download.mono-project.com/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2 libpng15.patch)
-md5sums=('451966e8f637e3a1f02d1d30f900255d'
- 'a2d143676bbaceeb88b4c34069e93986')
+source=(http://download.mono-project.com/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ libpng15.patch
+ libgdiplus0-giflib5.patch
+ libgdiplus-2.10.9-gold.patch)
+md5sums=('b4615c14584b5d73cbb9757c28887654'
+ 'a2d143676bbaceeb88b4c34069e93986'
+ 'ad97558c721106eea03c7808b501814b'
+ '95fb92750c131ce9287419c3ac5fcb76')
+prepare() {
+ cd ${pkgname}-${pkgver}
+ patch -Np0 -i ../libpng15.patch
+ patch -Np1 -i ../libgdiplus0-giflib5.patch
+ patch -Np1 -i ../libgdiplus-2.10.9-gold.patch
+}
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- patch -p0 <../libpng15.patch
+ cd ${pkgname}-${pkgver}
./configure --prefix=/usr --with-cairo=system
make
}
package() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+ cd ${pkgname}-${pkgver}
make DESTDIR="${pkgdir}" install
}
diff --git a/extra/libgdiplus/libgdiplus-2.10.9-gold.patch b/extra/libgdiplus/libgdiplus-2.10.9-gold.patch
new file mode 100644
index 000000000..379ae941e
--- /dev/null
+++ b/extra/libgdiplus/libgdiplus-2.10.9-gold.patch
@@ -0,0 +1,16 @@
+ tests/Makefile.in | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/tests/Makefile.in b/tests/Makefile.in
+index 97f5f4e..c02ca25 100644
+--- a/tests/Makefile.in
++++ b/tests/Makefile.in
+@@ -228,7 +228,7 @@ DEPS = \
+ $(top_builddir)/src/libgdiplus.la
+
+ LDADDS = \
+- $(top_builddir)/src/libgdiplus.la
++ $(top_builddir)/src/libgdiplus.la -lX11 -lglib-2.0
+
+ testgdi_DEPENDENCIES = $(TEST_DEPS)
+ testgdi_LDADD = $(LDADDS)
diff --git a/extra/libgdiplus/libgdiplus0-giflib5.patch b/extra/libgdiplus/libgdiplus0-giflib5.patch
new file mode 100644
index 000000000..36d2bf836
--- /dev/null
+++ b/extra/libgdiplus/libgdiplus0-giflib5.patch
@@ -0,0 +1,117 @@
+diff --git a/src/gifcodec.c b/src/gifcodec.c
+index 8dee0eb..564beed 100644
+--- a/src/gifcodec.c
++++ b/src/gifcodec.c
+@@ -39,8 +39,10 @@ GUID gdip_gif_image_format_guid = {0xb96b3cb0U, 0x0728U, 0x11d3U, {0x9d, 0x7b, 0
+
+ #include "gifcodec.h"
+
++#if GIFLIB_MAJOR < 5
+ /* giflib declares this incorrectly as EgifOpen */
+ extern GifFileType *EGifOpen(void *userData, OutputFunc writeFunc);
++#endif
+
+ /* Data structure used for callback */
+ typedef struct
+@@ -105,7 +107,7 @@ gdip_gif_inputfunc (GifFileType *gif, GifByteType *data, int len)
+ */
+
+ static int
+-AddExtensionBlockMono(SavedImage *New, int Len, BYTE ExtData[])
++AddExtensionBlockMono(SavedImage *New, int Len, int func, BYTE ExtData[])
+ {
+ ExtensionBlock *ep;
+
+@@ -129,7 +131,7 @@ AddExtensionBlockMono(SavedImage *New, int Len, BYTE ExtData[])
+
+ if (ExtData) {
+ memcpy(ep->Bytes, ExtData, Len);
+- ep->Function = New->Function;
++ ep->Function = func;
+ }
+
+ return (GIF_OK);
+@@ -232,20 +234,20 @@ DGifSlurpMono(GifFileType * GifFile, SavedImage *TrailingExtensions)
+ }
+
+ case EXTENSION_RECORD_TYPE: {
+- if (DGifGetExtension(GifFile, &temp_save.Function, &ExtData) == GIF_ERROR) {
++ int func;
++ if (DGifGetExtension(GifFile, &func, &ExtData) == GIF_ERROR) {
+ return (GIF_ERROR);
+ }
+
+ while (ExtData != NULL) {
+ /* Create an extension block with our data */
+- if (AddExtensionBlockMono(&temp_save, ExtData[0], &ExtData[1]) == GIF_ERROR) {
++ if (AddExtensionBlockMono(&temp_save, func, ExtData[0], &ExtData[1]) == GIF_ERROR) {
+ return (GIF_ERROR);
+ }
+
+ if (DGifGetExtensionNext(GifFile, &ExtData) == GIF_ERROR) {
+ return (GIF_ERROR);
+ }
+- temp_save.Function = 0;
+ }
+ break;
+ }
+@@ -303,12 +305,19 @@ gdip_load_gif_image (void *stream, GpImage **image, BOOL from_file)
+ result = NULL;
+ loop_counter = FALSE;
+
++#if GIFLIB_MAJOR < 5
+ if (from_file) {
+ gif = DGifOpen(stream, &gdip_gif_fileinputfunc);
+ } else {
+ gif = DGifOpen (stream, &gdip_gif_inputfunc);
+ }
+-
++#else
++ if (from_file)
++ gif = DGifOpen(stream, &gdip_gif_fileinputfunc, NULL);
++ else
++ gif = DGifOpen(stream, &gdip_gif_inputfunc, NULL);
++#endif
++
+ if (gif == NULL) {
+ goto error;
+ }
+@@ -660,11 +669,22 @@ gdip_save_gif_image (void *stream, GpImage *image, BOOL from_file)
+ return InvalidParameter;
+ }
+
++#if GIFLIB_MAJOR < 5
+ if (from_file) {
+ fp = EGifOpenFileName (stream, 0);
+ } else {
+ fp = EGifOpen (stream, gdip_gif_outputfunc);
+ }
++#else
++ if (from_file)
++ fp = EGifOpenFileName (stream, 0, NULL);
++ else
++ fp = EGifOpen (stream, gdip_gif_outputfunc, NULL);
++#define MakeMapObject GifMakeMapObject
++#define FreeMapObject GifFreeMapObject
++#define QuantizeBuffer GifQuantizeBuffer
++#define BitSize GifBitSize
++#endif
+
+ if (!fp) {
+ return FileNotFound;
+@@ -848,8 +868,15 @@ gdip_save_gif_image (void *stream, GpImage *image, BOOL from_file)
+ Buffer[0] = 1;
+ Buffer[1] = ptr[0];
+ Buffer[2] = ptr[1];
++#if GIFLIB_MAJOR < 5
+ EGifPutExtensionFirst(fp, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0");
+ EGifPutExtensionLast(fp, APPLICATION_EXT_FUNC_CODE, 3, Buffer);
++#else
++ EGifPutExtensionLeader(fp, APPLICATION_EXT_FUNC_CODE);
++ EGifPutExtensionBlock(fp, 11, "NETSCAPE2.0");
++ EGifPutExtensionBlock(fp, 3, Buffer);
++ EGifPutExtensionTrailer(fp);
++#endif
+ }
+ }
+