From 8f97c2f274b255acb0faf9e9356c8baea1690635 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Mon, 6 Oct 2014 18:08:43 +0200 Subject: [PATCH] cairo: fix recipe... --- x11-libs/cairo/cairo-1.12.16.recipe | 2 + x11-libs/cairo/patches/cairo-1.12.16.patchset | 24 +- x11-libs/cairo/patches/cairo-master.diff | 196 ------------ .../cairo/patches/cairo-patch-2009-03-06.diff | 300 ------------------ 4 files changed, 25 insertions(+), 497 deletions(-) delete mode 100644 x11-libs/cairo/patches/cairo-master.diff delete mode 100644 x11-libs/cairo/patches/cairo-patch-2009-03-06.diff diff --git a/x11-libs/cairo/cairo-1.12.16.recipe b/x11-libs/cairo/cairo-1.12.16.recipe index 4fbe646bd..6f1c87c93 100644 --- a/x11-libs/cairo/cairo-1.12.16.recipe +++ b/x11-libs/cairo/cairo-1.12.16.recipe @@ -53,6 +53,7 @@ REQUIRES=" # required by fontconfig lib:libbz2$secondaryArchSuffix lib:libxml2$secondaryArchSuffix + lib:libgcc_s$secondaryArchSuffix " BUILD_REQUIRES=" haiku${secondaryArchSuffix}_devel >= $haikuVersion @@ -79,6 +80,7 @@ BUILD_PREREQUIRES=" BUILD() { autoreconf -fi + export CFLAGS=-D__BSD_VISIBLE runConfigure ./configure make $jobArgs } diff --git a/x11-libs/cairo/patches/cairo-1.12.16.patchset b/x11-libs/cairo/patches/cairo-1.12.16.patchset index b078b2c21..a4680e542 100644 --- a/x11-libs/cairo/patches/cairo-1.12.16.patchset +++ b/x11-libs/cairo/patches/cairo-1.12.16.patchset @@ -1,4 +1,4 @@ -From 9a75978898bef649948b723701332b975b52a202 Mon Sep 17 00:00:00 2001 +From c61f7f73be49c3b04386a297a80db217a974f474 Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Fri, 3 Oct 2014 18:33:08 +0000 Subject: Haiku patch @@ -23,3 +23,25 @@ index fd54ad1..5146be6 100644 -- 1.8.3.4 + +From 65d7e5c89870562d59cb0317eaf20743fa745a18 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Mon, 6 Oct 2014 18:07:36 +0200 +Subject: Add missing include fenv.h. + + +diff --git a/test/cairo-test.c b/test/cairo-test.c +index a3a587a..e5b2945 100644 +--- a/test/cairo-test.c ++++ b/test/cairo-test.c +@@ -40,6 +40,7 @@ + #include + #endif + #include ++#include + #include + #if HAVE_FCFINI + #include +-- +1.8.3.4 + diff --git a/x11-libs/cairo/patches/cairo-master.diff b/x11-libs/cairo/patches/cairo-master.diff deleted file mode 100644 index c6cfab8a4..000000000 --- a/x11-libs/cairo/patches/cairo-master.diff +++ /dev/null @@ -1,196 +0,0 @@ -diff --git a/configure.in b/configure.in -index c7e457f..3af7f67 100644 ---- a/configure.in -+++ b/configure.in -@@ -445,7 +445,7 @@ dnl =========================================================================== - - CAIRO_BACKEND_ENABLE(beos, BeOS/Zeta, beos, BEOS_SURFACE, no, [ - case "$host" in -- *-*-beos) -+ *-*-beos|*-*-haiku*) - dnl Add libbe and libzeta if available - AC_CHECK_LIB(be,main,beos_LIBS="$beos_LIBS -lbe") - AC_CHECK_LIB(zeta,main,beos_LIBS="$beos_LIBS -lzeta") -diff --git a/src/Makefile.am b/src/Makefile.am -index 200867a..9890b36 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -242,7 +242,7 @@ if CAIRO_HAS_BEOS_SURFACE - cairo_headers += $(beos_headers) - # automake is stupid enough to always use c++ linker if we enable the - # following line, even if beos surface is not enabled. Disable it for now. --#cairo_sources += $(beos_sources) -+cairo_sources += $(beos_sources) - backend_pkgconfigs += cairo-beos.pc - endif - -diff --git a/src/cairo-beos-surface.cpp b/src/cairo-beos-surface.cpp -index 69dfd83..44ba8dd 100644 ---- a/src/cairo-beos-surface.cpp -+++ b/src/cairo-beos-surface.cpp -@@ -36,7 +36,9 @@ - - // This is a C++ file in order to use the C++ BeOS API - -+extern "C" { - #include "cairoint.h" -+} - - #include "cairo-beos.h" - -@@ -102,17 +104,17 @@ _cairo_beos_surface_create_internal (BView* view, - bool owns_bitmap_view = false); - - static BRect --_cairo_rect_to_brect (const cairo_rectangle_int16_t* rect) -+_cairo_rect_to_brect (const cairo_rectangle_int_t* rect) - { - // A BRect is one pixel wider than you'd think - return BRect(rect->x, rect->y, rect->x + rect->width - 1, - rect->y + rect->height - 1); - } - --static cairo_rectangle_int16_t -+static cairo_rectangle_int_t - _brect_to_cairo_rect (const BRect& rect) - { -- cairo_rectangle_int16_t retval; -+ cairo_rectangle_int_t retval; - retval.x = int(rect.left + 0.5); - retval.y = int(rect.top + 0.5); - retval.width = rect.IntegerWidth() + 1; -@@ -551,9 +553,9 @@ _cairo_beos_surface_release_source_image (void *abstract_surfac - - static cairo_status_t - _cairo_beos_surface_acquire_dest_image (void *abstract_surface, -- cairo_rectangle_int16_t *interest_rect, -+ cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, -- cairo_rectangle_int16_t *image_rect, -+ cairo_rectangle_int_t *image_rect, - void **image_extra) - { - cairo_beos_surface_t *surface = reinterpret_cast( -@@ -616,9 +618,9 @@ _cairo_beos_surface_acquire_dest_image (void *abstract_surface, - - static void - _cairo_beos_surface_release_dest_image (void *abstract_surface, -- cairo_rectangle_int16_t *intersect_rect, -+ cairo_rectangle_int_t *intersect_rect, - cairo_image_surface_t *image, -- cairo_rectangle_int16_t *image_rect, -+ cairo_rectangle_int_t *image_rect, - void *image_extra) - { - fprintf(stderr, "Fallback drawing\n"); -@@ -769,7 +771,7 @@ _cairo_beos_surface_composite (cairo_operator_t op, - - static void - _cairo_beos_surface_fill_rectangle (cairo_beos_surface_t *surface, -- cairo_rectangle_int16_t *rect) -+ cairo_rectangle_int_t *rect) - { - BRect brect(_cairo_rect_to_brect(rect)); - surface->view->FillRect(brect); -@@ -779,7 +781,7 @@ static cairo_int_status_t - _cairo_beos_surface_fill_rectangles (void *abstract_surface, - cairo_operator_t op, - const cairo_color_t *color, -- cairo_rectangle_int16_t *rects, -+ cairo_rectangle_int_t *rects, - int num_rects) - { - fprintf(stderr, "Drawing %i rectangles\n", num_rects); -@@ -835,9 +837,10 @@ _cairo_beos_surface_fill_rectangles (void *abstract_surface, - - static cairo_int_status_t - _cairo_beos_surface_set_clip_region (void *abstract_surface, -- pixman_region16_t *region) -+ cairo_region_t *reg) - { - fprintf(stderr, "Setting clip region\n"); -+ pixman_region16_t* region = reinterpret_cast(reg); - cairo_beos_surface_t *surface = reinterpret_cast( - abstract_surface); - AutoLockView locker(surface->view); -@@ -850,8 +853,8 @@ _cairo_beos_surface_set_clip_region (void *abstract_surface, - return CAIRO_INT_STATUS_SUCCESS; - } - -- int count = pixman_region_num_rects(region); -- pixman_box16_t* rects = pixman_region_rects(region); -+ int count; -+ pixman_box16_t* rects = pixman_region_rectangles(region, &count); - BRegion bregion; - for (int i = 0; i < count; ++i) { - // Have to substract one, because for pixman, the second coordinate -@@ -864,7 +867,7 @@ _cairo_beos_surface_set_clip_region (void *abstract_surface, - - static cairo_int_status_t - _cairo_beos_surface_get_extents (void *abstract_surface, -- cairo_rectangle_int16_t *rectangle) -+ cairo_rectangle_int_t *rectangle) - { - cairo_beos_surface_t *surface = reinterpret_cast( - abstract_surface); -@@ -914,6 +917,45 @@ static const struct _cairo_surface_backend cairo_beos_surface_backend = { - NULL /* show_glyphs */ - }; - -+#define DEFINE_NIL_SURFACE(status, name) \ -+const cairo_surface_t name = { \ -+ &cairo_image_surface_backend, /* backend */ \ -+ CAIRO_SURFACE_TYPE_IMAGE, \ -+ CAIRO_CONTENT_COLOR, \ -+ CAIRO_REFERENCE_COUNT_INVALID, /* ref_count */ \ -+ status, /* status */ \ -+ FALSE, /* finished */ \ -+ { 0, /* size */ \ -+ 0, /* num_elements */ \ -+ 0, /* element_size */ \ -+ NULL, /* elements */ \ -+ }, /* user_data */ \ -+ { 1.0, 0.0, \ -+ 0.0, 1.0, \ -+ 0.0, 0.0 \ -+ }, /* device_transform */ \ -+ { 1.0, 0.0, \ -+ 0.0, 1.0, \ -+ 0.0, 0.0 \ -+ }, /* device_transform_inverse */ \ -+ 0.0, /* x_resolution */ \ -+ 0.0, /* y_resolution */ \ -+ 0.0, /* x_fallback_resolution */ \ -+ 0.0, /* y_fallback_resolution */ \ -+ NULL, /* clip */ \ -+ 0, /* next_clip_serial */ \ -+ 0, /* current_clip_serial */ \ -+ FALSE, /* is_snapshot */ \ -+ FALSE, /* has_font_options */ \ -+ { CAIRO_ANTIALIAS_DEFAULT, \ -+ CAIRO_SUBPIXEL_ORDER_DEFAULT, \ -+ CAIRO_HINT_STYLE_DEFAULT, \ -+ CAIRO_HINT_METRICS_DEFAULT \ -+ } /* font_options */ \ -+} -+ -+static DEFINE_NIL_SURFACE(CAIRO_STATUS_NO_MEMORY, _cairo_surface_nil); -+ - static cairo_surface_t * - _cairo_beos_surface_create_internal (BView* view, - BBitmap* bmp, -diff --git a/test/Makefile.am b/test/Makefile.am -index ec98a49..225b6d2 100644 ---- a/test/Makefile.am -+++ b/test/Makefile.am -@@ -826,8 +826,10 @@ $(top_builddir)/test/pdiff/libpdiff.la: - cd $(top_builddir)/test/pdiff && $(MAKE) $(AM_MAKEFLAGS) libpdiff.la - - if HAVE_PTHREAD -+if !CAIRO_HAS_BEOS_SURFACE - LDADD += -lpthread - endif -+endif - - check_PROGRAMS += imagediff png-flatten - diff --git a/x11-libs/cairo/patches/cairo-patch-2009-03-06.diff b/x11-libs/cairo/patches/cairo-patch-2009-03-06.diff deleted file mode 100644 index 9f45ab95b..000000000 --- a/x11-libs/cairo/patches/cairo-patch-2009-03-06.diff +++ /dev/null @@ -1,300 +0,0 @@ -diff --git a/boilerplate/Makefile.sources b/boilerplate/Makefile.sources -index 1b82bbd..7131793 100644 ---- a/boilerplate/Makefile.sources -+++ b/boilerplate/Makefile.sources -@@ -19,7 +19,7 @@ cairo_boilerplate_sources = \ - # automake is stupid enough to always use c++ linker if we enable the - # following lines, even if beos surface is not enabled. Disable it for now. - cairo_boilerplate_beos_private = cairo-boilerplate-beos-private.h --#libcairoboilerplate_la_SOURCES += cairo-boilerplate-beos.cpp -+cairo_boilerplate_beos_sources = cairo-boilerplate-beos.cpp - - cairo_boilerplate_directfb_private = cairo-boilerplate-directfb-private.h - cairo_boilerplate_directfb_sources = cairo-boilerplate-directfb.c -diff --git a/boilerplate/cairo-boilerplate-beos.cpp b/boilerplate/cairo-boilerplate-beos.cpp -index 497d927..303c8ea 100644 ---- a/boilerplate/cairo-boilerplate-beos.cpp -+++ b/boilerplate/cairo-boilerplate-beos.cpp -@@ -153,8 +153,11 @@ AppRunner::~AppRunner() - if (be_app) { - if (be_app->Lock()) - be_app->Quit(); -+// XXX for some reason the follow lines cause boilerplate to crash on exit, commenting it out at least allows it to die without crashing -+#if 0 - delete be_app; - be_app = NULL; -+#endif - } - } - -@@ -171,11 +174,14 @@ struct beos_boilerplate_closure - // Test a real window - cairo_surface_t * - _cairo_boilerplate_beos_create_surface (const char *name, -- cairo_content_t content, -- int width, -- int height, -- cairo_boilerplate_mode_t mode, -- void **closure) -+ cairo_content_t content, -+ int width, -+ int height, -+ int max_width, -+ int max_height, -+ cairo_boilerplate_mode_t mode, -+ int id, -+ void **closure) - { - float right = width ? width - 1 : 0; - float bottom = height ? height - 1 : 0; -@@ -206,11 +212,14 @@ _cairo_boilerplate_beos_cleanup (void* closure) - // Test a bitmap - cairo_surface_t * - _cairo_boilerplate_beos_create_surface_for_bitmap (const char *name, -- cairo_content_t content, -- int width, -- int height, -- cairo_boilerplate_mode_t mode, -- void **closure) -+ cairo_content_t content, -+ int width, -+ int height, -+ int max_width, -+ int max_height, -+ cairo_boilerplate_mode_t mode, -+ int id, -+ void **closure) - { - BRect rect(0.0, 0.0, width - 1, height - 1); - color_space beosformat = (content == CAIRO_CONTENT_COLOR_ALPHA) ? B_RGBA32 -diff --git a/configure.ac b/configure.ac -index 48b61b2..f16e252 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -144,7 +144,7 @@ CAIRO_ENABLE_SURFACE_BACKEND(os2, OS/2, no, [ - - dnl =========================================================================== - --CAIRO_ENABLE_SURFACE_BACKEND(beos, BeOS/Zeta, no, [ -+CAIRO_ENABLE_SURFACE_BACKEND(beos, BeOS/Zeta/Haiku, no, [ - case "$host" in - *-*-beos) - beos_LIBS="" -@@ -152,6 +152,11 @@ CAIRO_ENABLE_SURFACE_BACKEND(beos, BeOS/Zeta, no, [ - AC_CHECK_LIB(be,main,beos_LIBS="$beos_LIBS -lbe") - AC_CHECK_LIB(zeta,main,beos_LIBS="$beos_LIBS -lzeta") - ;; -+ *-*-haiku) -+ beos_LIBS="" -+ AC_CHECK_LIB(be,main,beos_LIBS="$beos_LIBS -lbe") -+ AC_CHECK_LIB(network,main,beos_LIBS="$beos_LIBS -lnetwork") -+ ;; - *) - use_beos="no (requires a BeOS platform)" - ;; -diff --git a/src/Makefile.sources b/src/Makefile.sources -index 7305995..694a552 100644 ---- a/src/Makefile.sources -+++ b/src/Makefile.sources -@@ -242,7 +242,7 @@ cairo_os2_sources = cairo-os2-surface.c - # automake is stupid enough to always use c++ linker if we enable the - # following lines, even if beos surface is not enabled. Disable it for now. - cairo_beos_headers = cairo-beos.h --#cairo_beos_sources = cairo-beos-surface.cpp -+cairo_beos_sources = cairo-beos-surface.cpp - - cairo_glitz_headers = cairo-glitz.h - cairo_glitz_private = cairo-glitz-private.h -diff --git a/src/cairo-beos-surface.cpp b/src/cairo-beos-surface.cpp -index e527272..fca15aa 100644 ---- a/src/cairo-beos-surface.cpp -+++ b/src/cairo-beos-surface.cpp -@@ -36,7 +36,9 @@ - - // This is a C++ file in order to use the C++ BeOS API - -+extern "C" { - #include "cairoint.h" -+} - - #include "cairo-beos.h" - -@@ -102,17 +104,17 @@ _cairo_beos_surface_create_internal (BView* view, - bool owns_bitmap_view = false); - - static BRect --_cairo_rect_to_brect (const cairo_rectangle_int16_t* rect) -+_cairo_rect_to_brect (const cairo_rectangle_int_t* rect) - { - // A BRect is one pixel wider than you'd think - return BRect(rect->x, rect->y, rect->x + rect->width - 1, - rect->y + rect->height - 1); - } - --static cairo_rectangle_int16_t -+static cairo_rectangle_int_t - _brect_to_cairo_rect (const BRect& rect) - { -- cairo_rectangle_int16_t retval; -+ cairo_rectangle_int_t retval; - retval.x = int(rect.left + 0.5); - retval.y = int(rect.top + 0.5); - retval.width = rect.IntegerWidth() + 1; -@@ -551,9 +553,9 @@ _cairo_beos_surface_release_source_image (void *abstract_surfac - - static cairo_status_t - _cairo_beos_surface_acquire_dest_image (void *abstract_surface, -- cairo_rectangle_int16_t *interest_rect, -+ cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, -- cairo_rectangle_int16_t *image_rect, -+ cairo_rectangle_int_t *image_rect, - void **image_extra) - { - cairo_beos_surface_t *surface = reinterpret_cast( -@@ -616,9 +618,9 @@ _cairo_beos_surface_acquire_dest_image (void *abstract_surface, - - static void - _cairo_beos_surface_release_dest_image (void *abstract_surface, -- cairo_rectangle_int16_t *intersect_rect, -+ cairo_rectangle_int_t *intersect_rect, - cairo_image_surface_t *image, -- cairo_rectangle_int16_t *image_rect, -+ cairo_rectangle_int_t *image_rect, - void *image_extra) - { - fprintf(stderr, "Fallback drawing\n"); -@@ -646,8 +648,8 @@ _cairo_beos_surface_release_dest_image (void *abstract_surface, - - static cairo_int_status_t - _cairo_beos_surface_composite (cairo_operator_t op, -- cairo_pattern_t *src, -- cairo_pattern_t *mask, -+ const cairo_pattern_t *src, -+ const cairo_pattern_t *mask, - void *dst, - int src_x, - int src_y, -@@ -690,7 +692,7 @@ _cairo_beos_surface_composite (cairo_operator_t op, - src_y + ity + height - 1); - BRect dstRect(dst_x, dst_y, dst_x + width - 1, dst_y + height - 1); - -- cairo_surface_t* src_surface = reinterpret_cast(src)-> -+ cairo_surface_t* src_surface = reinterpret_cast(src)-> - surface; - - // Get a bitmap -@@ -769,7 +771,7 @@ _cairo_beos_surface_composite (cairo_operator_t op, - - static void - _cairo_beos_surface_fill_rectangle (cairo_beos_surface_t *surface, -- cairo_rectangle_int16_t *rect) -+ cairo_rectangle_int_t *rect) - { - BRect brect(_cairo_rect_to_brect(rect)); - surface->view->FillRect(brect); -@@ -779,7 +781,7 @@ static cairo_int_status_t - _cairo_beos_surface_fill_rectangles (void *abstract_surface, - cairo_operator_t op, - const cairo_color_t *color, -- cairo_rectangle_int16_t *rects, -+ cairo_rectangle_int_t *rects, - int num_rects) - { - fprintf(stderr, "Drawing %i rectangles\n", num_rects); -@@ -835,7 +837,7 @@ _cairo_beos_surface_fill_rectangles (void *abstract_surface, - - static cairo_int_status_t - _cairo_beos_surface_set_clip_region (void *abstract_surface, -- pixman_region16_t *region) -+ cairo_region_t *region) - { - fprintf(stderr, "Setting clip region\n"); - cairo_beos_surface_t *surface = reinterpret_cast( -@@ -850,8 +852,8 @@ _cairo_beos_surface_set_clip_region (void *abstract_surface, - return CAIRO_INT_STATUS_SUCCESS; - } - -- int count = pixman_region_num_rects(region); -- pixman_box16_t* rects = pixman_region_rects(region); -+ int count = pixman_region32_n_rects(®ion->rgn); -+ pixman_box32_t* rects = pixman_region32_rectangles(®ion->rgn, &count); - BRegion bregion; - for (int i = 0; i < count; ++i) { - // Have to substract one, because for pixman, the second coordinate -@@ -864,7 +866,7 @@ _cairo_beos_surface_set_clip_region (void *abstract_surface, - - static cairo_int_status_t - _cairo_beos_surface_get_extents (void *abstract_surface, -- cairo_rectangle_int16_t *rectangle) -+ cairo_rectangle_int_t *rectangle) - { - cairo_beos_surface_t *surface = reinterpret_cast( - abstract_surface); -@@ -913,7 +915,15 @@ static const struct _cairo_surface_backend cairo_beos_surface_backend = { - NULL, /* mask */ - NULL, /* stroke */ - NULL, /* fill */ -- NULL /* show_glyphs */ -+ NULL, /* show_glyphs */ -+ NULL, /* snapshot */ -+ NULL, /* is_similar */ -+ NULL, /* reset */ -+ NULL, /* fill_stroke */ -+ NULL, /* create_solid_pattern_surface */ -+ NULL, /* can_repaint_solid_pattern_surface */ -+ NULL, /* has_show_text_glyphs */ -+ NULL /* show_text_glyphs */ - }; - - static cairo_surface_t * -@@ -925,8 +935,7 @@ _cairo_beos_surface_create_internal (BView* view, - cairo_beos_surface_t *surface = static_cast( - malloc(sizeof(cairo_beos_surface_t))); - if (surface == NULL) { -- _cairo_error (CAIRO_STATUS_NO_MEMORY); -- return const_cast(&_cairo_surface_nil); -+ return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - cairo_content_t content = CAIRO_CONTENT_COLOR; -diff --git a/src/cairo.c b/src/cairo.c -index ddc8d4a..5f86820 100644 ---- a/src/cairo.c -+++ b/src/cairo.c -@@ -83,7 +83,10 @@ cairo_status_t - _cairo_error (cairo_status_t status) - { - CAIRO_ENSURE_UNIQUE; -+// XXX if we remove the assert for now, it allows Cairo on Haiku to run tests -+#if 0 - assert (_cairo_status_is_error (status)); -+#endif - - return status; - } -diff --git a/test/Makefile.am b/test/Makefile.am -index 2a1d93b..8f705ca 100644 ---- a/test/Makefile.am -+++ b/test/Makefile.am -@@ -88,8 +88,10 @@ cairo_test_suite_DEPENDENCIES += \ - any2ppm - endif - if HAVE_PTHREAD -+if !CAIRO_HAS_BEOS_SURFACE - cairo_test_suite_LDADD += -lpthread - endif -+endif - - BUILT_SOURCES += cairo-test-constructors.c - noinst_SCRIPTS = make-cairo-test-constructors.pl -diff --git a/test/make-cairo-test-constructors.pl b/test/make-cairo-test-constructors.pl -index 5e77175..bcd12b0 100755 ---- a/test/make-cairo-test-constructors.pl -+++ b/test/make-cairo-test-constructors.pl -@@ -1,4 +1,4 @@ --#!/usr/bin/perl -w -+#!/boot/common/bin/perl -w - - while (<>) { - next unless /CAIRO_TEST \((.*),/; # XXX Parse multi-line macro