devel/pango fails to build with LLVM 10, which takes out a large part
of the ports tree.
http://build-failures.rhaalovely.net/amd64-clang/2020-07-31/devel/pango.log

The fix has two parts, picked from upstream:
(1) In glib2, define G_GNUC_FALLTHROUGH in such a way that is also
    available with LLVM 10.
(2) In pango, make use of G_GNUC_FALLTHROUGH.

This is urgently required to allow us to make progress with LLVM 10
and the ports tree.  OK?


Index: glib2/Makefile
===================================================================
RCS file: /cvs/ports/devel/glib2/Makefile,v
retrieving revision 1.332
diff -u -p -r1.332 Makefile
--- glib2/Makefile      3 Jul 2020 21:12:39 -0000       1.332
+++ glib2/Makefile      1 Aug 2020 15:41:07 -0000
@@ -5,7 +5,7 @@ COMMENT=                general-purpose utility librar
 GNOME_PROJECT=         glib
 GNOME_VERSION=         2.64.4
 PKGNAME=               ${DISTNAME:S/glib/glib2/}
-REVISION=              0
+REVISION=              1
 
 CATEGORIES=            devel
 
Index: glib2/patches/patch-glib_gmacros_h
===================================================================
RCS file: glib2/patches/patch-glib_gmacros_h
diff -N glib2/patches/patch-glib_gmacros_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ glib2/patches/patch-glib_gmacros_h  1 Aug 2020 15:41:07 -0000
@@ -0,0 +1,26 @@
+$OpenBSD$
+
+Define G_GNUC_FALLTHROUGH for more compilers
+https://gitlab.gnome.org/GNOME/glib/-/commit/5f38ae5f
+
+Index: glib/gmacros.h
+--- glib/gmacros.h.orig
++++ glib/gmacros.h
+@@ -532,7 +532,7 @@
+ /**
+  * G_GNUC_FALLTHROUGH:
+  *
+- * Expands to the GNU C `fallthrough` statement attribute if the compiler is 
gcc.
++ * Expands to the GNU C `fallthrough` statement attribute if the compiler 
supports it.
+  * This allows declaring case statement to explicitly fall through in switch
+  * statements. To enable this feature, use `-Wimplicit-fallthrough` during
+  * compilation.
+@@ -558,6 +558,8 @@
+  * Since: 2.60
+  */
+ #if    __GNUC__ > 6
++#define G_GNUC_FALLTHROUGH __attribute__((fallthrough))
++#elif g_macro__has_attribute (fallthrough)
+ #define G_GNUC_FALLTHROUGH __attribute__((fallthrough))
+ #else
+ #define G_GNUC_FALLTHROUGH
Index: pango/patches/patch-examples_cairotwisted_c
===================================================================
RCS file: pango/patches/patch-examples_cairotwisted_c
diff -N pango/patches/patch-examples_cairotwisted_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pango/patches/patch-examples_cairotwisted_c 1 Aug 2020 15:41:07 -0000
@@ -0,0 +1,26 @@
+$OpenBSD$
+
+Replace fallthrough comments with G_GNUC_FALLTHROUGH
+https://gitlab.gnome.org/GNOME/pango/-/commit/5423136a
+
+Index: examples/cairotwisted.c
+--- examples/cairotwisted.c.orig
++++ examples/cairotwisted.c
+@@ -234,7 +234,7 @@ parametrize_path (cairo_path_t *path)
+     case CAIRO_PATH_CLOSE_PATH:
+       /* Make it look like it's a line_to to last_move_to */
+       data = (&last_move_to) - 1;
+-      /* fall through */
++        G_GNUC_FALLTHROUGH;
+     case CAIRO_PATH_LINE_TO:
+       parametrization[i] = two_points_distance (&current_point, &data[1]);
+       current_point = data[1];
+@@ -361,7 +361,7 @@ point_on_path (parametrized_path_t *param,
+   case CAIRO_PATH_CLOSE_PATH:
+       /* Make it look like it's a line_to to last_move_to */
+       data = (&last_move_to) - 1;
+-      /* fall through */
++      G_GNUC_FALLTHROUGH;
+   case CAIRO_PATH_LINE_TO:
+       {
+       ratio = the_x / parametrization[i];
Index: pango/patches/patch-pango_break_c
===================================================================
RCS file: pango/patches/patch-pango_break_c
diff -N pango/patches/patch-pango_break_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pango/patches/patch-pango_break_c   1 Aug 2020 15:41:07 -0000
@@ -0,0 +1,35 @@
+$OpenBSD$
+
+Replace fallthrough comments with G_GNUC_FALLTHROUGH
+https://gitlab.gnome.org/GNOME/pango/-/commit/5423136a
+
+Index: pango/break.c
+--- pango/break.c.orig
++++ pango/break.c
+@@ -405,7 +405,7 @@ pango_default_break (const gchar   *text,
+                 GB_type = GB_Prepend;
+                 break;
+               }
+-          /* fall through */
++            G_GNUC_FALLTHROUGH;
+         case G_UNICODE_CONTROL:
+         case G_UNICODE_LINE_SEPARATOR:
+         case G_UNICODE_PARAGRAPH_SEPARATOR:
+@@ -421,7 +421,7 @@ pango_default_break (const gchar   *text,
+               GB_type = GB_ControlCRLF;
+               break;
+             }
+-          /* fall through */
++            G_GNUC_FALLTHROUGH;
+ 
+         case G_UNICODE_OTHER_LETTER:
+           if (makes_hangul_syllable)
+@@ -594,7 +594,7 @@ pango_default_break (const gchar   *text,
+               case G_UNICODE_CONTROL:
+                 if (wc != 0x000D && wc != 0x000A && wc != 0x000B && wc != 
0x000C && wc != 0x0085)
+                   break;
+-                /* fall through */
++                  G_GNUC_FALLTHROUGH;
+               case G_UNICODE_LINE_SEPARATOR:
+               case G_UNICODE_PARAGRAPH_SEPARATOR:
+                 WB_type = WB_NewlineCRLF; /* CR, LF, Newline */
Index: pango/patches/patch-pango_pango-renderer_c
===================================================================
RCS file: pango/patches/patch-pango_pango-renderer_c
diff -N pango/patches/patch-pango_pango-renderer_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pango/patches/patch-pango_pango-renderer_c  1 Aug 2020 15:41:07 -0000
@@ -0,0 +1,17 @@
+$OpenBSD$
+
+Replace fallthrough comments with G_GNUC_FALLTHROUGH
+https://gitlab.gnome.org/GNOME/pango/-/commit/5423136a
+
+Index: pango/pango-renderer.c
+--- pango/pango-renderer.c.orig
++++ pango/pango-renderer.c
+@@ -222,7 +222,7 @@ draw_underline (PangoRenderer *renderer,
+                                    rect->y + 2 * rect->height,
+                                    rect->width,
+                                    rect->height);
+-      /* Fall through */
++      G_GNUC_FALLTHROUGH;
+     case PANGO_UNDERLINE_SINGLE:
+     case PANGO_UNDERLINE_LOW:
+       pango_renderer_draw_rectangle (renderer,
Index: pango/patches/patch-tests_testboundaries_ucd_c
===================================================================
RCS file: pango/patches/patch-tests_testboundaries_ucd_c
diff -N pango/patches/patch-tests_testboundaries_ucd_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pango/patches/patch-tests_testboundaries_ucd_c      1 Aug 2020 15:41:07 
-0000
@@ -0,0 +1,17 @@
+$OpenBSD$
+
+Replace fallthrough comments with G_GNUC_FALLTHROUGH
+https://gitlab.gnome.org/GNOME/pango/-/commit/5423136a
+
+Index: tests/testboundaries_ucd.c
+--- tests/testboundaries_ucd.c.orig
++++ tests/testboundaries_ucd.c
+@@ -104,7 +104,7 @@ parse_line (gchar *line,
+         {
+         case 0x00f7: /* DIVISION SIGN: boundary here */
+           temp_attr.bits |= bits.bits;
+-          /* fall through */
++          G_GNUC_FALLTHROUGH;
+ 
+         case 0x00d7: /* MULTIPLICATION SIGN: no boundary here */
+           break;
-- 
Christian "naddy" Weisgerber                          na...@mips.inka.de

Reply via email to