[mingw-cairo] Update to 1.11.2 and added win64 support
epienbro
epienbro at fedoraproject.org
Sun Mar 11 16:15:04 UTC 2012
commit 0a5896bdf537c46abecfaae461c752b1390cd46f
Author: Erik van Pienbroek <epienbro at fedoraproject.org>
Date: Sun Mar 11 17:14:41 2012 +0100
Update to 1.11.2 and added win64 support
- Update to 1.11.2
- Added win64 support
- Make freetype/fontconfig an optional runtime dependency (delay-load)
- Enable tee support
.gitignore | 1 +
cairo-fix-def-file-generation.patch | 32 ++++++++
mingw-cairo.spec | 150 +++++++++++++++++++++++++++++++----
sources | 2 +-
4 files changed, 167 insertions(+), 18 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 869bce2..f5cdb29 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
cairo-1.8.10.tar.gz
/cairo-1.10.0.tar.gz
/cairo-1.10.2.tar.gz
+/cairo-1.11.2.tar.gz
diff --git a/cairo-fix-def-file-generation.patch b/cairo-fix-def-file-generation.patch
new file mode 100644
index 0000000..ff3fd59
--- /dev/null
+++ b/cairo-fix-def-file-generation.patch
@@ -0,0 +1,32 @@
+--- cairo-1.11.2/src/Makefile.am.orig 2012-02-19 21:36:31.805936062 +0100
++++ cairo-1.11.2/src/Makefile.am 2012-02-19 21:37:21.002819998 +0100
+@@ -65,14 +65,14 @@
+ CLEANFILES += cairo.def
+ cairo.def: cairo-features.h $(enabled_cairo_headers)
+ @echo Generating $@
+- @(echo EXPORTS; \
++ @(echo LIBRARY libcairo-$(CAIRO_VERSION_SONUM).dll; \
++ echo EXPORTS; \
+ (cd $(srcdir); cat $(enabled_cairo_headers) || echo 'cairo_ERROR ()' ) | \
+ grep -v -E '^# *include' | \
+ ( cat cairo-features.h - | $(CPP) -D__cplusplus - || echo 'cairo_ERROR ()' ) | \
+ grep -E '^cairo_.* \(' | \
+ sed -e 's/[ ].*//' | \
+ sort; \
+- echo LIBRARY libcairo-$(CAIRO_VERSION_SONUM).dll; \
+ ) >$@
+ @ ! grep -q cairo_ERROR $@ || ($(RM) $@; false)
+
+--- cairo-1.11.2/src/check-def.sh.orig 2012-02-19 22:28:46.681132716 +0100
++++ cairo-1.11.2/src/check-def.sh 2012-02-19 22:29:14.158624900 +0100
+@@ -38,10 +38,7 @@
+ echo Checking that $so has the same symbol list as $def
+
+ {
+- echo EXPORTS
+ eval $get_cairo_syms | c++filt --no-params | grep -v '^_cairo_test_\|^_fini\|^_init\|^_save[fg]pr\|^_rest[fg]pr\|^_Z\|^__gnu' | sort -u
+- # cheat: copy the last line from the def file!
+- tail -n1 "$def"
+ } | diff "$def" - >&2 || stat=1
+ done
+
diff --git a/mingw-cairo.spec b/mingw-cairo.spec
index 10dddb2..3cbf8d8 100644
--- a/mingw-cairo.spec
+++ b/mingw-cairo.spec
@@ -1,15 +1,17 @@
-%global __strip %{mingw32_strip}
-%global __objdump %{mingw32_objdump}
-%define __debug_install_post %{mingw32_debug_install_post}
+%?mingw_package_header
+
+%global mingw_build_win32 1
+%global mingw_build_win64 1
Name: mingw-cairo
-Version: 1.10.2
-Release: 10%{?dist}
+Version: 1.11.2
+Release: 1%{?dist}
Summary: MinGW Windows Cairo library
License: LGPLv2 or MPLv1.1
URL: http://cairographics.org
-Source0: http://cairographics.org/releases/cairo-%{version}.tar.gz
+#Source0: http://cairographics.org/releases/cairo-%{version}.tar.gz
+Source0: http://cairographics.org/snapshots/cairo-%{version}.tar.gz
Group: Development/Libraries
# The file cairo.c refers to a function called ffs(), but it
@@ -24,9 +26,16 @@ Patch1: mingw32-cairo-A1_surfaces.patch
# https://bugs.freedesktop.org/show_bug.cgi?id=42821
Patch2: mingw32-cairo-reset_clip.patch
+# In recent binutils snapshots (feb 2012) the handling of .def files got more strict
+# http://sourceware.org/bugzilla/show_bug.cgi?id=13710
+# https://bugs.freedesktop.org/show_bug.cgi?id=46299
+# https://savannah.gnu.org/support/?107959
+# http://msdn.microsoft.com/en-us/library/d91k01sh%28v=vs.80%29.aspx
+Patch3: cairo-fix-def-file-generation.patch
+
BuildArch: noarch
-BuildRequires: mingw32-filesystem >= 68
+BuildRequires: mingw32-filesystem >= 95
BuildRequires: mingw32-gcc
BuildRequires: mingw32-binutils
BuildRequires: mingw32-fontconfig
@@ -37,17 +46,31 @@ BuildRequires: mingw32-libpng
BuildRequires: mingw32-win-iconv
BuildRequires: mingw32-zlib
BuildRequires: mingw32-glib2
-BuildRequires: pkgconfig
-Requires: pkgconfig
+BuildRequires: mingw64-filesystem >= 95
+BuildRequires: mingw64-gcc
+BuildRequires: mingw64-binutils
+BuildRequires: mingw64-fontconfig
+BuildRequires: mingw64-freetype
+BuildRequires: mingw64-libxml2
+BuildRequires: mingw64-pixman
+BuildRequires: mingw64-libpng
+BuildRequires: mingw64-win-iconv
+BuildRequires: mingw64-zlib
+BuildRequires: mingw64-glib2
+
+BuildRequires: autoconf automake libtool
+BuildRequires: pkgconfig
%description
MinGW Windows Cairo library.
+# Win32
%package -n mingw32-cairo
Summary: MinGW Windows Cairo library
+Requires: pkgconfig
%description -n mingw32-cairo
MinGW Windows Cairo library.
@@ -60,8 +83,24 @@ Group: Development/Libraries
%description -n mingw32-cairo-static
Static version of the MinGW Windows Cairo library.
+# Win64
+%package -n mingw64-cairo
+Summary: MinGW Windows Cairo library
+Requires: pkgconfig
+
+%description -n mingw64-cairo
+MinGW Windows Cairo library.
+
+%package -n mingw64-cairo-static
+Summary: Static version of the MinGW Windows Cairo library
+Requires: mingw64-cairo = %{version}-%{release}
+Group: Development/Libraries
+
+%description -n mingw64-cairo-static
+Static version of the MinGW Windows Cairo library.
+
-%{?_mingw32_debug_package}
+%?mingw_debug_package
%prep
@@ -69,32 +108,75 @@ Static version of the MinGW Windows Cairo library.
%patch0 -p0
%patch1 -p1 -b .A1_surfaces
%patch2 -p1 -b .reset_clip
+%patch3 -p1 -b .def
+# The libtool bundled with this package is too old for win64 support
+NOCONFIGURE=1 ./autogen.sh
%build
-%{mingw32_configure} \
+# Function to generate an import library for delay-loading
+gen_delay_lib()
+{
+ local DLL="$1"
+ local OUT_IMPLIB="$2"
+
+ gendef - "%{mingw32_bindir}/$DLL" > build_win32/delay_load.def
+ %{mingw32_dlltool} --def build_win32/delay_load.def --kill-at --output-delaylib "build_win32/$OUT_IMPLIB"
+
+ gendef - "%{mingw64_bindir}/$DLL" > build_win64/delay_load.def
+ %{mingw64_dlltool} --def build_win64/delay_load.def --kill-at --output-delaylib "build_win64/$OUT_IMPLIB"
+}
+
+mkdir build_win32
+mkdir build_win64
+
+# Generate import libs for delay-loading fontconfig and freetype
+gen_delay_lib libfontconfig-1.dll libfontconfig-delayed.dll.a
+gen_delay_lib libfreetype-6.dll libfreetype-delayed.dll.a
+
+MINGW_CONFIGURE_ARGS=" \
+ --enable-win32 \
+ --disable-pthread \
--disable-xlib \
--disable-xcb \
- --enable-win32 \
--enable-fc \
--enable-ft \
--enable-png \
--enable-static \
- --disable-pthread \
- --enable-gobject
-make %{?_smp_mflags}
+ --enable-gobject \
+ --enable-tee"
+
+# The regular %%mingw_configure macro can't be used here as we need to inject custom
+# environment variables which are different between the win32 and win64 build
+pushd build_win32
+ %mingw32_configure \
+ FONTCONFIG_LIBS="-L`pwd` -lfontconfig-delayed" \
+ FREETYPE_LIBS="-L`pwd` -lfreetype-delayed"
+popd
+
+pushd build_win64
+ %mingw64_configure \
+ FONTCONFIG_LIBS="-L`pwd` -lfontconfig-delayed" \
+ FREETYPE_LIBS="-L`pwd` -lfreetype-delayed"
+popd
+
+%mingw_make %{?_smp_mflags}
%install
-make DESTDIR=$RPM_BUILD_ROOT install
+%mingw_make_install DESTDIR=$RPM_BUILD_ROOT
rm -f $RPM_BUILD_ROOT%{mingw32_libdir}/charset.alias
-rm -r $RPM_BUILD_ROOT%{mingw32_datadir}/gtk-doc/html/cairo/
+rm -f $RPM_BUILD_ROOT%{mingw64_libdir}/charset.alias
+
+rm -r $RPM_BUILD_ROOT%{mingw32_datadir}/gtk-doc
+rm -r $RPM_BUILD_ROOT%{mingw64_datadir}/gtk-doc
# Drop all .la files
find $RPM_BUILD_ROOT -name "*.la" -delete
+# Win32
%files -n mingw32-cairo
%doc COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1
%{mingw32_bindir}/libcairo-2.dll
@@ -111,6 +193,7 @@ find $RPM_BUILD_ROOT -name "*.la" -delete
%{mingw32_libdir}/pkgconfig/cairo-png.pc
%{mingw32_libdir}/pkgconfig/cairo-ps.pc
%{mingw32_libdir}/pkgconfig/cairo-svg.pc
+%{mingw32_libdir}/pkgconfig/cairo-tee.pc
%{mingw32_libdir}/pkgconfig/cairo-win32-font.pc
%{mingw32_libdir}/pkgconfig/cairo-win32.pc
%{mingw32_libdir}/pkgconfig/cairo.pc
@@ -120,8 +203,41 @@ find $RPM_BUILD_ROOT -name "*.la" -delete
%{mingw32_libdir}/libcairo-gobject.a
%{mingw32_libdir}/libcairo-script-interpreter.a
+# Win64
+%files -n mingw64-cairo
+%doc COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1
+%{mingw64_bindir}/libcairo-2.dll
+%{mingw64_bindir}/libcairo-gobject-2.dll
+%{mingw64_bindir}/libcairo-script-interpreter-2.dll
+%{mingw64_includedir}/cairo/
+%{mingw64_libdir}/libcairo.dll.a
+%{mingw64_libdir}/libcairo-gobject.dll.a
+%{mingw64_libdir}/libcairo-script-interpreter.dll.a
+%{mingw64_libdir}/pkgconfig/cairo-fc.pc
+%{mingw64_libdir}/pkgconfig/cairo-ft.pc
+%{mingw64_libdir}/pkgconfig/cairo-gobject.pc
+%{mingw64_libdir}/pkgconfig/cairo-pdf.pc
+%{mingw64_libdir}/pkgconfig/cairo-png.pc
+%{mingw64_libdir}/pkgconfig/cairo-ps.pc
+%{mingw64_libdir}/pkgconfig/cairo-svg.pc
+%{mingw64_libdir}/pkgconfig/cairo-tee.pc
+%{mingw64_libdir}/pkgconfig/cairo-win32-font.pc
+%{mingw64_libdir}/pkgconfig/cairo-win32.pc
+%{mingw64_libdir}/pkgconfig/cairo.pc
+
+%files -n mingw64-cairo-static
+%{mingw64_libdir}/libcairo.a
+%{mingw64_libdir}/libcairo-gobject.a
+%{mingw64_libdir}/libcairo-script-interpreter.a
+
%changelog
+* Sun Mar 11 2012 Erik van Pienbroek <epienbro at fedoraproject.org> - 1.11.2-1
+- Update to 1.11.2
+- Added win64 support
+- Make freetype/fontconfig an optional runtime dependency (delay-load)
+- Enable tee support
+
* Tue Mar 06 2012 Erik van Pienbroek <epienbro at fedoraproject.org> - 1.10.2-10
- Renamed the source package to mingw-cairo (RHBZ #800373)
- Use mingw macros without leading underscore
diff --git a/sources b/sources
index 5692bae..f4f6c24 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-f101a9e88b783337b20b2e26dfd26d5f cairo-1.10.2.tar.gz
+3c8c7b7500058e0c841b2f6db43f15a2 cairo-1.11.2.tar.gz
More information about the scm-commits
mailing list