The changes to fix problem reported in issue #420 seem to prevent compilation at least on PPC Mac OS X 10.4.11, Tiger
Hello!
The default compiler on this system is GCC 4.2. When Cairo 1.16.0 is being built this failure happens:
/bin/sh ../libtool --tag=CC --mode=compile /opt/local/bin/gcc-apple-4.2 -DHAVE_CONFIG_H -I. -I.. -I. -D_REENTRANT -I/opt/local/include/pixman-1 -I/opt/local/include/ossp -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include/libpng16 -Wall -Wextra -Wmissing-declarations -Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings -Wsign-compare -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wvolatile-register-var -Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations -Wno-missing-field-initializers -Wno-unused-parameter -Wno-attributes -Wno-long-long -Winline -fno-strict-aliasing -fno-common -Wp,-D_FORTIFY_SOURCE=2 -I/opt/local/include -pipe -Os -arch ppc -MT cairo-quartz-image-surface.lo -MD -MP -MF .deps/cairo-quartz-image-surface.Tpo -c -o cairo-quartz-image-surface.lo cairo-quartz-image-surface.c
libtool: compile: /opt/local/bin/gcc-apple-4.2 -DHAVE_CONFIG_H -I. -I.. -I. -D_REENTRANT -I/opt/local/include/pixman-1 -I/opt/local/include/ossp -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include/libpng16 -Wall -Wextra -Wmissing-declarations -Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings -Wsign-compare -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wvolatile-register-var -Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations -Wno-missing-field-initializers -Wno-unused-parameter -Wno-attributes -Wno-long-long -Winline -fno-strict-aliasing -fno-common -Wp,-D_FORTIFY_SOURCE=2 -I/opt/local/include -pipe -Os -arch ppc -MT cairo-quartz-image-surface.lo -MD -MP -MF .deps/cairo-quartz-image-surface.Tpo -c cairo-quartz-image-surface.c -fno-common -DPIC -o .libs/cairo-quartz-image-surface.o
cairo-quartz-image-surface.c: In function '_cairo_quartz_image_surface_finish':
cairo-quartz-image-surface.c:91: warning: passing argument 1 of 'cairo_surface_destroy' from incompatible pointer type
cairo-quartz-image-surface.c: In function '_cairo_quartz_image_surface_flush':
cairo-quartz-image-surface.c:149: warning: unused variable 'size'
cairo-quartz-image-surface.c: In function 'cairo_quartz_image_surface_create':
cairo-quartz-image-surface.c:345: error: incompatible types in return
make[3]: *** [cairo-quartz-image-surface.lo] Error 1
make[3]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_graphics_cairo/cairo/work/cairo-1.16.0/src'
When the alternative compiler GCC 7.5 is used, the failure is similar:
/bin/sh ../libtool --tag=CC --mode=compile /opt/local/bin/gcc-mp-7 -DHAVE_CONFIG_H -I. -I.. -I. -D_REENTRANT -I/opt/local/include/pixman-1 -I/opt/local/include/ossp -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include/libpng16 -Wall -Wextra -Wmissing-declarations -Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings -Wsign-compare -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wvolatile-register-var -Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations -Wno-missing-field-initializers -Wno-unused-parameter -Wno-attributes -Wno-long-long -Winline -fno-strict-aliasing -fno-common -Wp,-D_FORTIFY_SOURCE=2 -Wno-unused-but-set-variable -I/opt/local/include -pipe -Os -arch ppc -MT cairo-quartz-image-surface.lo -MD -MP -MF .deps/cairo-quartz-image-surface.Tpo -c -o cairo-quartz-image-surface.lo cairo-quartz-image-surface.c
libtool: compile: /opt/local/bin/gcc-mp-7 -DHAVE_CONFIG_H -I. -I.. -I. -D_REENTRANT -I/opt/local/include/pixman-1 -I/opt/local/include/ossp -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include/libpng16 -Wall -Wextra -Wmissing-declarations -Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings -Wsign-compare -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wvolatile-register-var -Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations -Wno-missing-field-initializers -Wno-unused-parameter -Wno-attributes -Wno-long-long -Winline -fno-strict-aliasing -fno-common -Wp,-D_FORTIFY_SOURCE=2 -Wno-unused-but-set-variable -I/opt/local/include -pipe -Os -arch ppc -MT cairo-quartz-image-surface.lo -MD -MP -MF .deps/cairo-quartz-image-surface.Tpo -c cairo-quartz-image-surface.c -fno-common -DPIC -o .libs/cairo-quartz-image-surface.o
cairo-quartz-image-surface.c: In function '_cairo_quartz_image_surface_finish':
cairo-quartz-image-surface.c:91:28: warning: passing argument 1 of 'cairo_surface_destroy' from incompatible pointer type [-Wincompatible-pointer-types]
cairo_surface_destroy (surface->imageSurface);
^~~~~~~
In file included from cairoint.h:70:0,
from cairo-quartz-image-surface.c:37:
cairo.h:2334:1: note: expected 'cairo_surface_t * {aka struct _cairo_surface *}' but argument is of type 'cairo_image_surface_t * {aka struct _cairo_image_surface *}'
cairo_surface_destroy (cairo_surface_t *surface);
^~~~~~~~~~~~~~~~~~~~~
cairo-quartz-image-surface.c: In function '_cairo_quartz_image_surface_flush':
cairo-quartz-image-surface.c:149:24: warning: unused variable 'size' [-Wunused-variable]
const unsigned int size = surface->imageSurface->height * surface->imageSurface->stride;
^~~~
cairo-quartz-image-surface.c: In function 'cairo_quartz_image_surface_create':
cairo-quartz-image-surface.c:345:9: error: incompatible types when returning type 'cairo_status_t {aka enum _cairo_status}' but 'cairo_surface_t * {aka struct _cairo_surface *}' was expected
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[3]: *** [cairo-quartz-image-surface.lo] Error 1
make[3]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_graphics_cairo/cairo/work/cairo-1.16.0/src'
make[2]: *** [all] Error 2
Since the changes are applied via a patch file the build succeeds with both compilers when the patches were omitted. A test on macOS High Sierra, Version 10.13.6, showed that Cairo 1.16.0 built with Clang 9.0.1 with and without the patch set.
See also the original report: https://trac.macports.org/ticket/62156.