changeset 3167:6aaa1723e277

[MSVC] enable Cairo compilation (and bump version to 1.12.14)
author Michael Goffioul <michael.goffioul@gmail.com>
date Mon, 22 Jul 2013 15:40:11 -0400
parents b52db21b9dcd
children 81ef4be24f2e
files dist-files.mk index.html src/cairo-1-ssize-t-defined.patch src/cairo-2-static-init.patch src/cairo.mk src/mingw-cairo-1-ssize-t-defined.patch src/msvc-cairo-1.patch
diffstat 7 files changed, 193 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/dist-files.mk	Mon Jul 22 12:16:41 2013 -0400
+++ b/dist-files.mk	Mon Jul 22 15:40:11 2013 -0400
@@ -30,7 +30,6 @@
   build-pkg-config.mk \
   build-texinfo.mk \
   bzip2.mk \
-  cairo-1-ssize-t-defined.patch \
   cairo-2-static-init.patch \
   cairo.mk \
   cairomm.mk \
@@ -276,6 +275,7 @@
   lzo.mk \
   matio.mk \
   mdbtools.mk \
+  mingw-cairo-1-ssize-t-defined.patch \
   mingw-utils-1-portability-fix.patch \
   mingw-utils.mk \
   mingwrt.mk \
@@ -283,6 +283,7 @@
   msitools.mk \
   msvc-atk-1.patch \
   msvc-build-cmake-1.patch \
+  msvc-cairo-1.patch \
   msvc-dbus-1.patch \
   msvc-fftw-1.patch \
   msvc-fltk-1.patch \
--- a/index.html	Mon Jul 22 12:16:41 2013 -0400
+++ b/index.html	Mon Jul 22 15:40:11 2013 -0400
@@ -1045,7 +1045,7 @@
     </tr>
     <tr>
         <td id="cairo-package">cairo</td>
-        <td id="cairo-version">1.12.8</td>
+        <td id="cairo-version">1.12.14</td>
         <td id="cairo-website"><a href="http://cairographics.org/">cairo</a></td>
     </tr>
     <tr>
--- a/src/cairo-1-ssize-t-defined.patch	Mon Jul 22 12:16:41 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-This file is part of MXE.
-See index.html for further information.
-
-Insist that ssize_t is defined.
-
-diff --git a/util/cairo-missing/cairo-missing.h b/util/cairo-missing/cairo-missing.h
-index 7e4f0a3..c20b869 100644
---- a/util/cairo-missing/cairo-missing.h
-+++ b/util/cairo-missing/cairo-missing.h
-@@ -37,6 +37,8 @@
- #include <string.h>
- #include <sys/types.h>
- 
-+#define _SSIZE_T_DEFINED 1
-+
- #ifdef _WIN32
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
--- a/src/cairo-2-static-init.patch	Mon Jul 22 12:16:41 2013 -0400
+++ b/src/cairo-2-static-init.patch	Mon Jul 22 15:40:11 2013 -0400
@@ -7,20 +7,24 @@
 index a65d81b..31d854d 100644
 --- a/src/win32/cairo-win32-font.c
 +++ b/src/win32/cairo-win32-font.c
-@@ -1912,6 +1912,8 @@ _cairo_win32_font_face_hash_table_destroy (void)
+@@ -1912,6 +1912,10 @@ _cairo_win32_font_face_hash_table_destroy (void)
  {
      cairo_hash_table_t *hash_table;
- 
+
++#ifndef DLL_EXPORT 
 +    CAIRO_MUTEX_INITIALIZE ();
++#endif
 +
      /* We manually acquire the lock rather than calling
       * _cairo_win32_font_face_hash_table_lock simply to avoid creating
       * the table only to destroy it again. */
-@@ -1927,6 +1929,8 @@ _cairo_win32_font_face_hash_table_destroy (void)
+@@ -1927,6 +1929,10 @@ _cairo_win32_font_face_hash_table_destroy (void)
  static cairo_hash_table_t *
  _cairo_win32_font_face_hash_table_lock (void)
  {
++#ifndef DLL_EXPORT
 +    CAIRO_MUTEX_INITIALIZE ();
++#endif
 +
      CAIRO_MUTEX_LOCK (_cairo_win32_font_face_mutex);
  
--- a/src/cairo.mk	Mon Jul 22 12:16:41 2013 -0400
+++ b/src/cairo.mk	Mon Jul 22 15:40:11 2013 -0400
@@ -3,11 +3,11 @@
 
 PKG             := cairo
 $(PKG)_IGNORE   :=
-$(PKG)_CHECKSUM := 56a10bf3b804367c97734d655c23a9f652d5c297
+$(PKG)_CHECKSUM := 9106ab09b2e7b9f90521b18dd4a7e9577eba6c15
 $(PKG)_SUBDIR   := cairo-$($(PKG)_VERSION)
 $(PKG)_FILE     := cairo-$($(PKG)_VERSION).tar.xz
 $(PKG)_URL      := http://cairographics.org/releases/$($(PKG)_FILE)
-$(PKG)_DEPS     := zlib libpng fontconfig freetype pixman
+$(PKG)_DEPS     := zlib libpng fontconfig freetype pixman glib
 
 define $(PKG)_UPDATE
     $(WGET) -q -O- 'http://cairographics.org/releases/?C=M;O=D' | \
@@ -15,6 +15,21 @@
     head -1
 endef
 
+$(PKG)_EXTRA_CONFIGURE_OPTIONS :=
+# FIXME: Not sure why i was disabled...
+#$(PKG)_EXTRA_CONFIGURE_OPTIONS += --disable-atomic
+# Add special flag for static Win32 builds
+ifneq ($(filter mingw msvc,$(MXE_SYSTEM)),)
+    ifeq ($(BUILD_STATIC),yes)
+        $(PKG)_EXTRA_CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS) -DCAIRO_WIN32_STATIC_BUILD"
+    endif
+endif
+
+# Configure script to detect float word endianness fails on MSVC.
+ifeq ($(MXE_SYSTEM),msvc)
+    $(PKG)_EXTRA_CONFIGURE_OPTIONS += ax_cv_c_float_words_bigendian=no
+endif
+
 define $(PKG)_BUILD
     $(SED) -i 's,libpng12,libpng,g'                          '$(1)/configure'
     $(SED) -i 's,^\(Libs:.*\),\1 @CAIRO_NONPKGCONFIG_LIBS@,' '$(1)/src/cairo.pc.in'
@@ -34,7 +49,6 @@
         --disable-os2 \
         --disable-beos \
         --disable-directfb \
-        --disable-atomic \
         --enable-win32 \
         --enable-win32-font \
         --enable-png \
@@ -43,7 +57,10 @@
         --enable-pdf \
         --enable-svg \
         --disable-pthread \
-        CFLAGS="$(CFLAGS) -DCAIRO_WIN32_STATIC_BUILD" \
-        LIBS="-lmsimg32 -lgdi32 `$(MXE_PKG_CONFIG) pixman-1 --libs`"
-    $(MAKE) -C '$(1)' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS=
+        $($(PKG)_EXTRA_CONFIGURE_OPTIONS) \
+        PKG_CONFIG='$(MXE_PKG_CONFIG)' \
+        PKG_CONFIG_PATH='$(HOST_LIBDIR)/pkgconfig' \
+        && $(CONFIGURE_POST_HOOK)
+    $(MAKE) -C '$(1)' -j '$(JOBS)' install noinst_PROGRAMS=
+    $(SED) -i 's,^Libs:,& -L$${libdir} -lcairo-script ,' '$(HOST_LIBDIR)/pkgconfig/cairo-script.pc'
 endef
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/mingw-cairo-1-ssize-t-defined.patch	Mon Jul 22 15:40:11 2013 -0400
@@ -0,0 +1,18 @@
+This file is part of MXE.
+See index.html for further information.
+
+Insist that ssize_t is defined.
+
+diff --git a/util/cairo-missing/cairo-missing.h b/util/cairo-missing/cairo-missing.h
+index 7e4f0a3..c20b869 100644
+--- a/util/cairo-missing/cairo-missing.h
++++ b/util/cairo-missing/cairo-missing.h
+@@ -37,6 +37,8 @@
+ #include <string.h>
+ #include <sys/types.h>
+ 
++#define _SSIZE_T_DEFINED 1
++
+ #ifdef _WIN32
+ #define WIN32_LEAN_AND_MEAN
+ #include <windows.h>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/msvc-cairo-1.patch	Mon Jul 22 15:40:11 2013 -0400
@@ -0,0 +1,142 @@
+diff -ur cairo-1.12.14-orig/perf/cairo-analyse-trace.c cairo-1.12.14/perf/cairo-analyse-trace.c
+--- cairo-1.12.14-orig/perf/cairo-analyse-trace.c	2012-02-01 19:48:14 -0500
++++ cairo-1.12.14/perf/cairo-analyse-trace.c	2013-07-22 13:51:18 -0400
+@@ -53,7 +53,19 @@
+ #include <sys/stat.h>
+ 
+ #ifdef _MSC_VER
++#ifdef __CLGCC__
++#include <dirent.h>
++#else
+ #include "dirent-win32.h"
++#endif
++
++#ifndef R_OK
++#define R_OK 4
++#endif
++
++#ifndef S_ISDIR
++#define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
++#endif
+ 
+ static char *
+ basename_no_ext (char *path)
+@@ -212,8 +224,8 @@
+ {
+     char *trace_cpy, *name;
+     const cairo_script_interpreter_hooks_t hooks = {
+-	.closure = args,
+-	.surface_create = surface_create,
++	/*.closure =*/ args,
++	/*.surface_create =*/ surface_create,
+     };
+ 
+     trace_cpy = xstrdup (trace);
+diff -ur cairo-1.12.14-orig/perf/cairo-perf-trace.c cairo-1.12.14/perf/cairo-perf-trace.c
+--- cairo-1.12.14-orig/perf/cairo-perf-trace.c	2013-01-29 08:54:51 -0500
++++ cairo-1.12.14/perf/cairo-perf-trace.c	2013-07-22 13:51:41 -0400
+@@ -54,7 +54,19 @@
+ #include <sys/stat.h>
+ 
+ #ifdef _MSC_VER
++#ifdef __CLGCC__
++#include <dirent.h>
++#else
+ #include "dirent-win32.h"
++#endif
++
++#ifndef R_OK
++#define R_OK 4
++#endif
++
++#ifndef S_ISDIR
++#define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
++#endif
+ 
+ static char *
+ basename_no_ext (char *path)
+diff -ur cairo-1.12.14-orig/src/Makefile.in cairo-1.12.14/src/Makefile.in
+--- cairo-1.12.14-orig/src/Makefile.in	2013-02-10 08:39:15 -0500
++++ cairo-1.12.14/src/Makefile.in	2013-07-22 13:16:42 -0400
+@@ -1639,7 +1639,7 @@
+ #MAINTAINERCLEANFILES += $(srcdir)/Makefile.win32.features
+ AM_CPPFLAGS = -I$(srcdir) $(CAIRO_CFLAGS)
+ AM_LDFLAGS = $(CAIRO_LDFLAGS)
+-@OS_WIN32_TRUE@export_symbols = -export-symbols cairo.def
++@OS_WIN32_TRUE@export_symbols = -export-symbols-regex "xXx" -Wl,cairo.def
+ @OS_WIN32_TRUE@cairo_def_dependency = cairo.def
+ cairoincludedir = $(includedir)/cairo
+ 
+@@ -2720,7 +2720,6 @@
+ 	$(EGREP) '^cairo_.* \(' | \
+ 	sed -e 's/[ 	].*//' | \
+ 	sort; \
+-	echo LIBRARY libcairo-$(CAIRO_VERSION_SONUM).dll; \
+ 	) >$@
+ 	@ ! grep -q cairo_ERROR $@ || ($(RM) $@; false)
+ 
+diff -ur cairo-1.12.14-orig/src/cairo-ft-font.c cairo-1.12.14/src/cairo-ft-font.c
+--- cairo-1.12.14-orig/src/cairo-ft-font.c	2013-01-03 15:06:16 -0500
++++ cairo-1.12.14/src/cairo-ft-font.c	2013-07-22 13:13:21 -0400
+@@ -66,6 +66,9 @@
+ 
+ #if HAVE_UNISTD_H
+ #include <unistd.h>
++#if defined (_MSC_VER) && ! defined (R_OK)
++#define R_OK 4
++#endif
+ #else
+ #define access(p, m) 0
+ #endif
+diff -ur cairo-1.12.14-orig/test/bitmap-font.c cairo-1.12.14/test/bitmap-font.c
+--- cairo-1.12.14-orig/test/bitmap-font.c	2010-06-13 15:58:21 -0400
++++ cairo-1.12.14/test/bitmap-font.c	2013-07-22 13:39:06 -0400
+@@ -36,6 +36,10 @@
+ #define FONT "6x13.pcf"
+ #define TEXT_SIZE 13
+ 
++#if defined (_MSC_VER) && ! defined (S_ISREG)
++#  define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
++#endif
++
+ static cairo_bool_t
+ font_extents_equal (const cairo_font_extents_t *A,
+ 	            const cairo_font_extents_t *B)
+diff -ur cairo-1.12.14-orig/test/ft-show-glyphs-table.c cairo-1.12.14/test/ft-show-glyphs-table.c
+--- cairo-1.12.14-orig/test/ft-show-glyphs-table.c	2010-06-13 15:58:21 -0400
++++ cairo-1.12.14/test/ft-show-glyphs-table.c	2013-07-22 13:36:00 -0400
+@@ -88,7 +88,9 @@
+     {
+ 	charcode = FT_Get_First_Char(face, &idx);
+ 	while (idx && (i < NUM_GLYPHS)) {
+-	    glyphs[i] = (cairo_glyph_t) {idx, PAD + GRID_SIZE * (i/GRID_ROWS), PAD + TEXT_SIZE + GRID_SIZE * (i%GRID_ROWS)};
++	    glyphs[i].index = idx;
++	    glyphs[i].x = PAD + GRID_SIZE * (i/GRID_ROWS);
++	    glyphs[i].y = PAD + TEXT_SIZE + GRID_SIZE * (i%GRID_ROWS);
+ 	    i++;
+ 	    charcode = FT_Get_Next_Char(face, charcode, &idx);
+ 	}
+diff -ur cairo-1.12.14-orig/util/cairo-gobject/Makefile.in cairo-1.12.14/util/cairo-gobject/Makefile.in
+--- cairo-1.12.14-orig/util/cairo-gobject/Makefile.in	2013-02-10 08:39:17 -0500
++++ cairo-1.12.14/util/cairo-gobject/Makefile.in	2013-07-22 13:28:22 -0400
+@@ -388,7 +388,7 @@
+ 	$(NULL)
+ 
+ libcairo_gobject_la_CFLAGS = $(CAIRO_CFLAGS) $(GOBJECT_CFLAGS)
+-libcairo_gobject_la_LDFLAGS = -version-info $(CAIRO_LIBTOOL_VERSION_INFO) -no-undefined $(export_symbols)
++libcairo_gobject_la_LDFLAGS = -version-info $(CAIRO_LIBTOOL_VERSION_INFO) -no-undefined $(export_symbols) -export-symbols-regex "^cairo_gobject_.*"
+ libcairo_gobject_la_LIBADD = $(top_builddir)/src/libcairo.la $(CAIRO_LIBS) $(GOBJECT_LIBS)
+ all: all-am
+ 
+diff -ur cairo-1.12.14-orig/util/cairo-script/Makefile.in cairo-1.12.14/util/cairo-script/Makefile.in
+--- cairo-1.12.14-orig/util/cairo-script/Makefile.in	2013-02-10 08:39:17 -0500
++++ cairo-1.12.14/util/cairo-script/Makefile.in	2013-07-22 13:28:01 -0400
+@@ -480,7 +480,7 @@
+ 	$(NULL)
+ 
+ libcairo_script_interpreter_la_CFLAGS = $(CAIRO_CFLAGS)
+-libcairo_script_interpreter_la_LDFLAGS = -version-info $(CAIRO_LIBTOOL_VERSION_INFO) -no-undefined $(export_symbols)
++libcairo_script_interpreter_la_LDFLAGS = -version-info $(CAIRO_LIBTOOL_VERSION_INFO) -no-undefined $(export_symbols) -export-symbols-regex "^cairo_script_.*"
+ libcairo_script_interpreter_la_LIBADD = $(top_builddir)/src/libcairo.la $(CAIRO_LIBS) $(lzo_LIBS) -lz
+ csi_replay_SOURCES = csi-replay.c
+ csi_replay_CFLAGS = $(CAIRO_CFLAGS)