# HG changeset patch # User Michael Goffioul # Date 1374522011 14400 # Node ID 6aaa1723e277da9e2457a71acfe0633da4ab2fe5 # Parent b52db21b9dcd9c464ded3519e259278d1dfd6b0d [MSVC] enable Cairo compilation (and bump version to 1.12.14) diff -r b52db21b9dcd -r 6aaa1723e277 dist-files.mk --- 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 \ diff -r b52db21b9dcd -r 6aaa1723e277 index.html --- 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 @@ cairo - 1.12.8 + 1.12.14 cairo diff -r b52db21b9dcd -r 6aaa1723e277 src/cairo-1-ssize-t-defined.patch --- 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 - #include - -+#define _SSIZE_T_DEFINED 1 -+ - #ifdef _WIN32 - #define WIN32_LEAN_AND_MEAN - #include diff -r b52db21b9dcd -r 6aaa1723e277 src/cairo-2-static-init.patch --- 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); diff -r b52db21b9dcd -r 6aaa1723e277 src/cairo.mk --- 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 diff -r b52db21b9dcd -r 6aaa1723e277 src/mingw-cairo-1-ssize-t-defined.patch --- /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 + #include + ++#define _SSIZE_T_DEFINED 1 ++ + #ifdef _WIN32 + #define WIN32_LEAN_AND_MEAN + #include diff -r b52db21b9dcd -r 6aaa1723e277 src/msvc-cairo-1.patch --- /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 + + #ifdef _MSC_VER ++#ifdef __CLGCC__ ++#include ++#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 + + #ifdef _MSC_VER ++#ifdef __CLGCC__ ++#include ++#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 ++#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)