graphics/freeimage bundles an old libpng whose pngpriv.h detects neon
support at compile time unless PNG_ARM_NEON_OPT is defined. Since
libpng's arm source directory is missing, this leads to missing external
references such as png_init_filter_functions_neon. This in turn leads
to these build failures:

http://build-failures.rhaalovely.net/aarch64/2022-08-01/emulators/emulationstation.log
http://build-failures.rhaalovely.net/aarch64/2022-08-01/x11/ogre.log

With the diff below these ports build and package. I am not set up to
test these or any other reverse dependencies of graphics/freeimage.

Index: Makefile
===================================================================
RCS file: /cvs/ports/graphics/freeimage/Makefile,v
retrieving revision 1.19
diff -u -p -r1.19 Makefile
--- Makefile    10 Jul 2022 12:27:10 -0000      1.19
+++ Makefile    3 Aug 2022 19:10:43 -0000
@@ -3,6 +3,7 @@ COMMENT=                c++ library for common image f
 DISTNAME=              FreeImage3180
 PKGNAME=               freeimage-3.18.0
 CATEGORIES=            graphics
+REVISION=              0
 
 SHARED_LIBS+=          freeimage       3.0
 
@@ -28,6 +29,12 @@ MAKE_ENV=            LIBfreeimage_VERSION=${LIBfre
 MAKE_TARGET=           Makefile.gnu
 
 FIX_CRLF_FILES=                Makefile.gnu TestAPI/Makefile
+
+# The bundled libpng ships without the source for neon support, so
+# disable it to avoid undefined symbols.
+.if ${MACHINE_ARCH} == "aarch64"
+CFLAGS +=              -DPNG_ARM_NEON_OPT=0
+.endif
 
 do-test:
        cd ${WRKSRC}/TestAPI && ${MAKE_PROGRAM} ${MAKE_ENV}

Reply via email to