git: 787a10daa41c - main - graphics/argyllcms: update from 1.9.2 to 3.5.0
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 27 Apr 2026 00:03:38 UTC
The branch main has been updated by fuz:
URL: https://cgit.FreeBSD.org/ports/commit/?id=787a10daa41c7d4c7c15abc6e9f5c85b2688cede
commit 787a10daa41c7d4c7c15abc6e9f5c85b2688cede
Author: Mikhail Teterin <mi@FreeBSD.org>
AuthorDate: 2026-04-26 06:10:26 +0000
Commit: Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2026-04-27 00:01:11 +0000
graphics/argyllcms: update from 1.9.2 to 3.5.0
Changed to use preinstalled yajl and MiniXML (mxml). Address
compiler warnings.
Changelog: https://www.argyllcms.com/doc/ChangesSummary.html
PR: 240568
Reported by: Walter Schwarzenfeld <w.schwarzenfeld@utanet.at>
Event: Wiesbaden Hackathon 202604
---
graphics/argyllcms/Makefile | 20 +-
graphics/argyllcms/distinfo | 6 +-
graphics/argyllcms/files/patch-Jambase | 13 +-
graphics/argyllcms/files/patch-Jamfile | 17 ++
graphics/argyllcms/files/patch-Jamtop | 56 +----
graphics/argyllcms/files/patch-gamut_gamut.h | 11 -
graphics/argyllcms/files/patch-gcc5 | 20 --
graphics/argyllcms/files/patch-mxml | 270 +++++++++++++++++++++
graphics/argyllcms/files/patch-spectro_dispwin.c | 101 ++++++--
graphics/argyllcms/files/patch-spectro_vinflate.c | 31 ---
graphics/argyllcms/files/patch-warnings | 275 ++++++++++++++++++++++
graphics/argyllcms/files/patch-yajl | 160 +++++++++++++
graphics/argyllcms/pkg-plist | 18 ++
13 files changed, 855 insertions(+), 143 deletions(-)
diff --git a/graphics/argyllcms/Makefile b/graphics/argyllcms/Makefile
index e32d603737e0..fc462e229690 100644
--- a/graphics/argyllcms/Makefile
+++ b/graphics/argyllcms/Makefile
@@ -1,6 +1,5 @@
PORTNAME= argyllcms
-PORTVERSION= 1.9.2
-PORTREVISION= 7
+PORTVERSION= 3.5.0
CATEGORIES= graphics
MASTER_SITES= https://www.argyllcms.com/
DISTNAME= Argyll_V${PORTVERSION}_src
@@ -12,14 +11,24 @@ WWW= https://www.argyllcms.com/
LICENSE= AGPLv3
BUILD_DEPENDS= jam:devel/jam
-LIB_DEPENDS= libtiff.so:graphics/tiff \
- libpng.so:graphics/png
-
+LIB_DEPENDS= libjpeg.so:graphics/jpeg-turbo \
+ libmxml.so:textproc/mxml \
+ libpng.so:graphics/png \
+ libtiff.so:graphics/tiff \
+ libyajl.so:devel/yajl
+
+EXCLUDE= zlib tiff png jpeg usb xml yajl
+EXTRACT_AFTER_ARGS=${EXCLUDE:C|^(.*)$|-x */\1/*|}
WRKSRC= ${WRKDIR}/Argyll_V${PORTVERSION}
+MAKE_ENV+= CCFLAGS="${CFLAGS} -DUNIX -Wno-dangling-else"
USES= compiler:c11 cpe jpeg ssl xorg zip
USE_XORG= x11 xau xdmcp xext xinerama xrandr xscrnsaver xxf86vm
+post-patch:
+ ${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
+ ${WRKSRC}/Jamtop ${WRKSRC}/Jambase
+
do-build:
@cd ${WRKSRC} && ${MAKE_ENV} jam -dx -q -fJambase -j${MAKE_JOBS_NUMBER}
@@ -31,4 +40,5 @@ do-install:
${STAGEDIR}${PREFIX}/share/argyll/
${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/*
+
.include <bsd.port.mk>
diff --git a/graphics/argyllcms/distinfo b/graphics/argyllcms/distinfo
index 3ea739365171..69d3184db84b 100644
--- a/graphics/argyllcms/distinfo
+++ b/graphics/argyllcms/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1479769420
-SHA256 (Argyll_V1.9.2_src.zip) = 4d61ae0b91686dea721d34df2e44eaf36c88da87086fd50ccc4e999a58e9ce90
-SIZE (Argyll_V1.9.2_src.zip) = 13624924
+TIMESTAMP = 1777157893
+SHA256 (Argyll_V3.5.0_src.zip) = f8576ce5589fd15620abb73ff049ea31f55ddbd1bba6d1ffa87452658e7bc85f
+SIZE (Argyll_V3.5.0_src.zip) = 15352322
diff --git a/graphics/argyllcms/files/patch-Jambase b/graphics/argyllcms/files/patch-Jambase
index 41d58080be7e..2f448f93ff3d 100644
--- a/graphics/argyllcms/files/patch-Jambase
+++ b/graphics/argyllcms/files/patch-Jambase
@@ -1,15 +1,6 @@
---- Jambase.orig 2016-09-28 02:58:53 UTC
+--- Jambase
+++ Jambase
-@@ -966,7 +966,7 @@ else if $(UNIX)
- YACCFILES ?= y.tab ;
- YACCFLAGS ?= -d ;
-
-- HDRS ?= /usr/local/include ;
-+ HDRS ?= $(LOCALBASE)/include ;
-
- # Add some good defaults for OS X
- if $(OS) = MACOSX {
-@@ -999,7 +999,11 @@ else if $(UNIX)
+@@ -1038,7 +1038,11 @@ else if $(UNIX)
# General defaults; a lot like UNIX
#
diff --git a/graphics/argyllcms/files/patch-Jamfile b/graphics/argyllcms/files/patch-Jamfile
new file mode 100644
index 000000000000..585b065e5cd6
--- /dev/null
+++ b/graphics/argyllcms/files/patch-Jamfile
@@ -0,0 +1,17 @@
+The purpose of the com.argyllcms.metainfo.xml is unclear, it claims the
+license to be MIT -- rather than AGPLv3 stated elsewhere -- and it
+certainly does not belong in bin/
+
+Just disabling it for now.
+
+ -mi
+
+--- Jamfile 2026-02-09 17:25:03.000000000 -0500
++++ Jamfile 2026-04-26 01:31:03.587297000 -0400
+@@ -19,5 +19,5 @@
+
+ #Install
+-InstallFile $(DESTDIR)$(PREFIX)/bin : com.argyllcms.metainfo.xml ;
++# InstallFile $(DESTDIR)$(PREFIX)/bin : com.argyllcms.metainfo.xml ;
+
+ # Need compile date ?
diff --git a/graphics/argyllcms/files/patch-Jamtop b/graphics/argyllcms/files/patch-Jamtop
index d68103a50548..b0de7a9a7a62 100644
--- a/graphics/argyllcms/files/patch-Jamtop
+++ b/graphics/argyllcms/files/patch-Jamtop
@@ -1,49 +1,11 @@
---- Jamtop.orig 2017-05-22 19:09:44 UTC
+--- Jamtop
+++ Jamtop
-@@ -76,8 +76,8 @@ if $(UNIX) {
- LibWinH = /usr/X11R6/include ;
- } else if [ GLOB /usr/include/X11 : X.h ] {
- LibWinH = /usr/include ;
-- } else if [ GLOB /usr/local/include/X11 : X.h ] {
-- LibWinH = /usr/local/include ;
-+ } else if [ GLOB $(LOCALBASE)/include/X11 : X.h ] {
-+ LibWinH = $(LOCALBASE)/include ;
- } else {
- EXIT Unable to locate the X11 include files ;
- }
-@@ -91,8 +91,8 @@ if $(UNIX) {
- LibWinD = /usr/lib64 ;
- } else if [ GLOB /usr/lib : libX11.so libX11.a ] {
- LibWinD = /usr/lib ;
-- } else if [ GLOB /usr/local/lib : libX11.so libX11.a ] {
-- LibWinD = /usr/local/lib ;
-+ } else if [ GLOB $(LOCALBASE)/lib : libX11.so libX11.a ] {
-+ LibWinD = $(LOCALBASE)/lib ;
- } else {
- ECHO Unable to locate the 64 bit X11 library files ;
- }
-@@ -103,8 +103,8 @@ if $(UNIX) {
- LibWinD = /usr/lib/i386-linux-gnu ;
- } else if [ GLOB /usr/lib : libX11.so libX11.a ] {
- LibWinD = /usr/lib ;
-- } else if [ GLOB /usr/local/lib : libX11.so libX11.a ] {
-- LibWinD = /usr/local/lib ;
-+ } else if [ GLOB $(LOCALBASE)/lib : libX11.so libX11.a ] {
-+ LibWinD = $(LOCALBASE)/lib ;
- } else {
- ECHO Unable to locate the 32 bit X11 library files ;
+@@ -167,7 +167,7 @@ rule CheckForLibrary {
+ echo "Using system $(UCASE) library" ;
+ $(UCASE)LIB = ;
+ $(UCASE)INC = ;
+- LINKFLAGS += $(LINKFLAG)$(lcase) ;
++ LINKFLAGS += -L$(LOCALBASE)/lib $(LINKFLAG)$(lcase) ;
+ HAVE_$(UCASE) = true ;
}
-@@ -140,11 +140,11 @@ rule CheckForLibrary {
-
- if ! $(BUILTIN_$(UCASE)) && $(UNIX) {
- if [ GLOB /usr/include$(subd) : $(lcase).h $(lcase)lib.h ]
-- || [ GLOB /usr/local/include$(subd) : $(lcase).h $(lcase)lib.h ]
-+ || [ GLOB $(LOCALBASE)/include$(subd) : $(lcase).h $(lcase)lib.h ]
- || [ GLOB /usr/include/x86_64-linux-gnu$(subd) : $(lcase).h $(lcase)lib.h ]
- || [ GLOB /usr/include/i386-linux-gnu$(subd) : $(lcase).h $(lcase)lib.h ] {
- if [ GLOB /usr/lib : lib$(lcase).so ] || [ GLOB /usr/lib : lib$(lcase).a ]
-- || [ GLOB /usr/local/lib : lib$(lcase).so ] || [ GLOB /usr/local/lib : lib$(lcase).a ]
-+ || [ GLOB $(LOCALBASE)/lib : lib$(lcase).so ] || [ GLOB /usr/local/lib : lib$(lcase).a ]
- || [ GLOB /usr/lib64 : lib$(lcase).so ] || [ GLOB /usr/lib64 : lib$(lcase).a ]
- || [ GLOB /usr/lib/x86_64-linux-gnu : lib$(lcase).so ]
- || [ GLOB /usr/lib/x86_64-linux-gnu : lib$(lcase).a ]
+ }
diff --git a/graphics/argyllcms/files/patch-gamut_gamut.h b/graphics/argyllcms/files/patch-gamut_gamut.h
deleted file mode 100644
index 2b447b336b7b..000000000000
--- a/graphics/argyllcms/files/patch-gamut_gamut.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- gamut/gamut.h.orig 2020-08-19 11:32:00 UTC
-+++ gamut/gamut.h
-@@ -36,7 +36,7 @@
- #define MAXGAMN 10 /* Maximum gamut point neighbors returned */
- #define NSLOTS 6 /* Number of maximum direction slots */
-
--struct _vrml *wrl; /* Declared in vrml.h, which may be #included after this */
-+extern struct _vrml *wrl; /* Declared in vrml.h, which may be #included after this */
-
- /* ------------------------------------ */
- #define NODE_STRUCT \
diff --git a/graphics/argyllcms/files/patch-gcc5 b/graphics/argyllcms/files/patch-gcc5
deleted file mode 100644
index 96961ddd3737..000000000000
--- a/graphics/argyllcms/files/patch-gcc5
+++ /dev/null
@@ -1,20 +0,0 @@
-Description: Fix FTBFS with GCC 5
-Author: James Cowgill <james410@cowgill.org.uk>
-Bug-Debian: https://bugs.debian.org/777779
-Forwarded: no
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- icc/icc.h
-+++ icc/icc.h
-@@ -100,7 +100,11 @@
- #define CF64PREC "LL" /* Constant precision specifier */
-
- #ifndef ATTRIBUTE_NORETURN
-+#ifdef _MSC_VER
- # define ATTRIBUTE_NORETURN __declspec(noreturn)
-+#else
-+# define ATTRIBUTE_NORETURN __attribute__((noreturn))
-+#endif
- #endif
-
- #else /* !__STDC_VERSION__ */
diff --git a/graphics/argyllcms/files/patch-mxml b/graphics/argyllcms/files/patch-mxml
new file mode 100644
index 000000000000..491b5245f553
--- /dev/null
+++ b/graphics/argyllcms/files/patch-mxml
@@ -0,0 +1,270 @@
+The changes necessary to use the newer MiniXML version.
+Tested against mxml-3.3.1.
+
+ -mi
+
+--- namedc/namedc.c 2026-02-09 17:25:54.000000000 -0500
++++ namedc/namedc.c 2026-04-25 22:37:10.093787000 -0400
+@@ -120,10 +120,10 @@
+ static mxml_type_t
+ type_cb(mxml_node_t *node) {
+- const char *name = node->value.element.name;
++ const char *name = mxmlGetElement(node);
+ mxml_node_t *parent = mxmlGetParent(node);
+ const char *pname = NULL;
+
+ if (parent != NULL)
+- pname = parent->value.element.name;
++ pname = mxmlGetElement(parent);
+
+ // printf("~1 type_cb got node named '%s', parent '%s'\n",name,pname);
+@@ -345,7 +345,7 @@
+ return p->errc = 1;
+ }
+- name = cxf->value.element.name;
++ name = mxmlGetElement(cxf);
+
+- if ((attr = strchr(cxf->value.element.name, ':')) != NULL) {
++ if ((attr = strchr(name, ':')) != NULL) {
+ int len = attr - name;
+ if (len > 99)
+@@ -390,5 +390,5 @@
+ /* Grab the description */
+ if (cxf2) {
+- if ((node = mxmlFindPathNode(cxf, pfxp(p,"Palette"))) == NULL
++ if ((node = mxmlFindPath(cxf, pfxp(p, "Palette"))) == NULL
+ || (name = mxmlElementGetAttr(node, "PaletteName")) == NULL)
+ name = NULL;
+@@ -407,5 +407,5 @@
+
+ } else { /* else cxf3 */
+- if ((node = mxmlFindPathNode(cxf, pfxp(p,"FileInformation/Description"))) == NULL)
++ if ((node = mxmlFindPath(cxf, pfxp(p,"FileInformation/Description"))) == NULL)
+ name = NULL;
+ else
+@@ -425,7 +425,7 @@
+
+ /* Look through the color specifications and see if there are spectral details */
+- pnode = mxmlFindPathNode(cxf, pfxp(p,"Resources/ColorSpecificationCollection/ColorSpecification/WavelengthRange"));
++ pnode = mxmlFindPath(cxf, pfxp(p,"Resources/ColorSpecificationCollection/ColorSpecification/WavelengthRange"));
+ if (pnode == NULL)
+- pnode = mxmlFindPathNode(cxf, pfxp(p,"Resources/ColorSpecificationCollection/ColorSpecification/MeasurementSpec/WavelengthRange"));
++ pnode = mxmlFindPath(cxf, pfxp(p,"Resources/ColorSpecificationCollection/ColorSpecification/MeasurementSpec/WavelengthRange"));
+ while (pnode != NULL) {
+ name = mxmlElementGetAttr(pnode, "StartWL");
+@@ -454,5 +454,5 @@
+ if (cxf2) {
+ /* Locate the Palette/ColorSet node */
+- if ((pnode = mxmlFindPathNode(cxf, pfxp(p,"Palette/ColorSet"))) == NULL) {
++ if ((pnode = mxmlFindPath(cxf, pfxp(p,"Palette/ColorSet"))) == NULL) {
+ snprintf(p->err, NAMEDC_ERRL, "Failed to find Resources/ObjectCollection in '%s'",p->filename);
+ a1logd(p->log, 1, "read_cxf: %s\n",p->err);
+@@ -468,5 +468,5 @@
+ } else {
+ /* Locate the Resources/ObjectCollection node */
+- if ((pnode = mxmlFindPathNode(cxf, pfxp(p,"Resources/ObjectCollection"))) == NULL) {
++ if ((pnode = mxmlFindPath(cxf, pfxp(p,"Resources/ObjectCollection"))) == NULL) {
+ snprintf(p->err, NAMEDC_ERRL, "Failed to find Resources/ObjectCollection in '%s'",p->filename);
+ a1logd(p->log, 1, "read_cxf: %s\n",p->err);
+@@ -500,7 +500,8 @@
+ goto next;
+ }
+- a1logd(p->log, DEB6, "read_cxf: read node '%s'\n",node->value.element.name);
++ a1logd(p->log, DEB6, "read_cxf: read node '%s'\n", name);
+
+- if (strcmp(node->value.element.name, pfx(p,SampleKey)) != 0) {
++ name = mxmlGetElement(node);
++ if (strcmp(name, pfx(p,SampleKey)) != 0) {
+ a1logd(p->log, DEB6, "read_cxf: skipping non %s node\n",SampleKey);
+ goto next;
+@@ -776,5 +777,5 @@
+ if (cxf2) {
+ /* Grab the creator */
+- if ((node = mxmlFindPathNode(cxf, pfxp(p,"Preamble/Header/Creator"))) == NULL)
++ if ((node = mxmlFindPath(cxf, pfxp(p, "Preamble/Header/Creator"))) == NULL)
+ name = NULL;
+ else
+@@ -792,5 +793,5 @@
+
+ /* Grab the illuminant type */
+- if ((node = mxmlFindPathNode(cxf, pfxp(p,"Palette/ColorSet/CollectionColorSpaceSpecification/ColorSpaceSpecificationSpectrumTristimulus/IlluminationOptions/Illuminant"))) == NULL
++ if ((node = mxmlFindPath(cxf, pfxp(p, "Palette/ColorSet/CollectionColorSpaceSpecification/ColorSpaceSpecificationSpectrumTristimulus/IlluminationOptions/Illuminant"))) == NULL
+ || (name = mxmlGetOpaque(node)) == NULL) {
+ a1logd(p->log, 2, "read_cxf: failed to locate Illuminant - assuming D50\n");
+@@ -815,5 +816,5 @@
+
+ /* Grab the observer type */
+- if ((node = mxmlFindPathNode(cxf, pfxp(p,"Palette/ColorSet/CollectionColorSpaceSpecification/ColorSpaceSpecificationSpectrumTristimulus/FieldOfView"))) == NULL
++ if ((node = mxmlFindPath(cxf, pfxp(p,"Palette/ColorSet/CollectionColorSpaceSpecification/ColorSpaceSpecificationSpectrumTristimulus/FieldOfView"))) == NULL
+ || (name = mxmlGetOpaque(node)) == NULL) {
+ a1logd(p->log, 2, "read_cxf: failed to locate FieldOfView - assuming 2 degree\n");
+@@ -835,5 +836,5 @@
+
+ /* Grab the creator */
+- if ((node = mxmlFindPathNode(cxf, pfxp(p,"FileInformation/Creator"))) == NULL)
++ if ((node = mxmlFindPath(cxf, pfxp(p,"FileInformation/Creator"))) == NULL)
+ name = NULL;
+ else
+@@ -856,5 +857,5 @@
+ /* Look through the color specifications and find the one that matches */
+ /* the Lab or XYZ color specification */
+- pnode = mxmlFindPathNode(cxf, pfxp(p,"Resources/ColorSpecificationCollection/ColorSpecification"));
++ pnode = mxmlFindPath(cxf, pfxp(p,"Resources/ColorSpecificationCollection/ColorSpecification"));
+ while (pnode != NULL) {
+ name = mxmlElementGetAttr(pnode, "Id");
+@@ -866,5 +867,5 @@
+
+ /* Grab the illuminant type */
+- if ((node = mxmlFindPathNode(pnode, pfxp(p,"TristimulusSpec/Illuminant"))) == NULL
++ if ((node = mxmlFindPath(pnode, pfxp(p,"TristimulusSpec/Illuminant"))) == NULL
+ || (name = mxmlGetOpaque(node)) == NULL) {
+ a1logd(p->log, 2, "read_cxf: failed to locate Illuminant - assuming D50\n");
+@@ -889,5 +890,5 @@
+
+ /* Grab the first observer type */
+- if ((node = mxmlFindPathNode(cxf, pfxp(p,"Resources/ColorSpecificationCollection/ColorSpecification/TristimulusSpec/Observer"))) == NULL
++ if ((node = mxmlFindPath(cxf, pfxp(p,"Resources/ColorSpecificationCollection/ColorSpecification/TristimulusSpec/Observer"))) == NULL
+ || (name = mxmlGetOpaque(node)) == NULL) {
+ a1logd(p->log, 2, "read_cxf: failed to locate Observer - assuming 2 degree\n");
+--- profile/cxf2ti3.c 2026-02-09 17:25:29.000000000 -0500
++++ profile/cxf2ti3.c 2026-04-26 00:23:21.375782000 -0400
+@@ -88,10 +88,10 @@
+ static mxml_type_t
+ type_cb(mxml_node_t *node) {
+- const char *name = node->value.element.name;
++ const char *name = mxmlGetElement(node);
+ mxml_node_t *parent = mxmlGetParent(node);
+ const char *pname = NULL;
+
+ if (parent != NULL)
+- pname = parent->value.element.name;
++ pname = mxmlGetElement(parent);
+
+ // printf("~1 type_cb got node named '%s', parent '%s'\n",name,pname);
+@@ -425,7 +425,7 @@
+ error("Top element is not type MXML_ELEMENT in '%s'",inname);
+ }
+- name = cxf->value.element.name;
++ name = mxmlGetElement(cxf);
+
+- if ((attr = strchr(cxf->value.element.name, ':')) != NULL) {
++ if ((attr = strchr(name, ':')) != NULL) {
+ int len = attr - name;
+ if (len > 99)
+@@ -471,5 +471,5 @@
+
+ /* Copy the description */
+- if ((node = mxmlFindPathNode(cxf, pfxp(&ctx,"FileInformation/Description"))) != NULL) {
++ if ((node = mxmlFindPath(cxf, pfxp(&ctx,"FileInformation/Description"))) != NULL) {
+ name = mxmlGetOpaque(node);
+ a1logd(g_log, 2, "cxf2ti3: got description '%s'\n",name);
+@@ -479,5 +479,5 @@
+
+ /* Grab the creator */
+- if ((node = mxmlFindPathNode(cxf, pfxp(&ctx,"FileInformation/Creator"))) != NULL) {
++ if ((node = mxmlFindPath(cxf, pfxp(&ctx,"FileInformation/Creator"))) != NULL) {
+ name = mxmlGetOpaque(node);
+ a1logd(g_log, 2, "cxf2ti3: got creator '%s'\n",name);
+@@ -486,5 +486,5 @@
+ }
+
+- if ((node = mxmlFindPathNode(cxf, pfxp(&ctx,"FileInformation/CreationDate"))) != NULL) {
++ if ((node = mxmlFindPath(cxf, pfxp(&ctx,"FileInformation/CreationDate"))) != NULL) {
+ name = mxmlGetOpaque(node);
+ a1logd(g_log, 2, "cxf2ti3: got creation date '%s'\n",name);
+@@ -495,12 +495,12 @@
+ /* Look through the color specifications and see if there are spectral details */
+ a1logd(g_log, 4, "cxf2ti3: Looking through color specifications for spectral details\n");
+- pnode = mxmlFindPathNode(cxf, pfxp(&ctx,"Resources/ColorSpecificationCollection/ColorSpecification/WavelengthRange"));
++ pnode = mxmlFindPath(cxf, pfxp(&ctx,"Resources/ColorSpecificationCollection/ColorSpecification/WavelengthRange"));
+ if (pnode == NULL)
+- pnode = mxmlFindPathNode(cxf, pfxp(&ctx,"Resources/ColorSpecificationCollection/ColorSpecification/MeasurementSpec/WavelengthRange"));
++ pnode = mxmlFindPath(cxf, pfxp(&ctx,"Resources/ColorSpecificationCollection/ColorSpecification/MeasurementSpec/WavelengthRange"));
+
+ if (pnode == NULL)
+- pnode = mxmlFindPathNode(cxf, pfxp(&ctx,"Resources/ColourSpecificationCollection/ColourSpecification/WavelengthRange"));
++ pnode = mxmlFindPath(cxf, pfxp(&ctx,"Resources/ColourSpecificationCollection/ColourSpecification/WavelengthRange"));
+ if (pnode == NULL)
+- pnode = mxmlFindPathNode(cxf, pfxp(&ctx,"Resources/ColourSpecificationCollection/ColourSpecification/MeasurementSpec/WavelengthRange"));
++ pnode = mxmlFindPath(cxf, pfxp(&ctx,"Resources/ColourSpecificationCollection/ColourSpecification/MeasurementSpec/WavelengthRange"));
+
+ if (pnode == NULL)
+@@ -540,5 +540,5 @@
+
+ /* Locate the Resources/ObjectCollection node */
+- if ((pnode = mxmlFindPathNode(cxf, pfxp(&ctx,"Resources/ObjectCollection"))) == NULL) {
++ if ((pnode = mxmlFindPath(cxf, pfxp(&ctx,"Resources/ObjectCollection"))) == NULL) {
+ error("Failed to find Resources/ObjectCollection in '%s'",inname);
+ }
+@@ -564,7 +564,8 @@
+ goto next;
+ }
+- a1logd(g_log, 6, "cxf2ti3: read node '%s'\n",node->value.element.name);
++ name = mxmlGetElement(node);
++ a1logd(g_log, 6, "cxf2ti3: read node '%s'\n", name);
+
+- if (strcmp(node->value.element.name, pfx(&ctx,"Object")) != 0) {
++ if (strcmp(name, pfx(&ctx, "Object")) != 0) {
+ a1logd(g_log, 6, "cxf2ti3: skipping non %s node\n","Object");
+ goto next;
+--- profile/ls2ti3.c 2026-02-09 17:25:29.000000000 -0500
++++ profile/ls2ti3.c 2026-04-26 00:28:35.173791000 -0400
+@@ -59,10 +59,11 @@
+ mxml_node_t *parent = mxmlGetParent(node);
+ const char *pname;
+- const char *name = node->value.element.name;
++ const char *name;
+
+ if (parent == NULL)
+ return MXML_TEXT;
+
+- pname = parent->value.element.name;
++ name = mxmlGetElement(node);
++ pname = mxmlGetElement(parent);
+
+ // printf("~1 type_cb got pnode '%s' node '%s'\n",pname, name);
+@@ -185,5 +186,5 @@
+ error("Failed to find top element in '%s'",inname);
+
+- if (strcmp(top->value.element.name, "builder_color_space") != 0)
++ if (strcmp(mxmlGetElement(top), "builder_color_space") != 0)
+ error("'%s' doesn't seem to be a LightSpace .bcs file ?",inname);
+
+@@ -238,5 +239,5 @@
+ goto next;
+ }
+- a1logd(g_log, DEB, "read node '%s'\n",node->value.element.name);
++ a1logd(g_log, DEB, "read node '%s'\n", mxmlGetElement(node));
+
+ if ((attr = mxmlElementGetAttr(node, "frame")) == NULL) {
+--- profile/Jamfile 2026-02-09 17:25:29.000000000 -0500
++++ profile/Jamfile 2026-04-26 01:02:04.153120000 -0400
+@@ -36,4 +36,5 @@
+
+ LINKFLAGS += $(GUILINKFLAGS) ;
++LINKFLAGS += -lmxml ;
+
+ # Simple profile generator
+@@ -53,8 +54,8 @@
+
+ #CxF to Argyll CGATS format
+-Main cxf2ti3 : cxf2ti3.c : : : ../xml : : ../xml/libmxml ;
++Main cxf2ti3 : cxf2ti3.c ;
+
+ #LightSpace to Argyll CGATS format
+-Main ls2ti3 : ls2ti3.c : : : ../xml : : ../xml/libmxml ;
++Main ls2ti3 : ls2ti3.c ;
+
+ #Split a .ti3 into two pieces randomly
+--- namedc/Jamfile 2026-02-09 17:25:54.000000000 -0500
++++ namedc/Jamfile 2026-04-26 01:04:05.783387000 -0400
+@@ -12,7 +12,8 @@
+
+ LINKLIBS = ./libnamedc ../xicc/libxicc ../spectro/libconv ../icc/libicc ../cgats/libcgats
+- ../plot/libplot ../numlib/libui ../numlib/libnum ../xml/libmxml ;
++ ../plot/libplot ../numlib/libui ../numlib/libnum ;
+
+ LINKFLAGS += $(GUILINKFLAGS) ;
++LINKFLAGS += -lmxml ;
+
+ # Individual stand alone test of namedc
diff --git a/graphics/argyllcms/files/patch-spectro_dispwin.c b/graphics/argyllcms/files/patch-spectro_dispwin.c
index 4b1abadcd18a..920042b2e757 100644
--- a/graphics/argyllcms/files/patch-spectro_dispwin.c
+++ b/graphics/argyllcms/files/patch-spectro_dispwin.c
@@ -1,16 +1,87 @@
-Description: Add check for NULL pointer
-Author: Jörg Frings-Fürst <debian@jff-webhsoting.net>
-Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=700253
-Forwarded: http://www.freelists.org/post/argyllcms/dispwin-bad-command-line-option-makes-dispwin-segfault
-Reviewed-by:
-Last-Update: 2014-09-14
---- spectro/dispwin.c.orig 2016-09-28 02:59:10 UTC
-+++ spectro/dispwin.c
-@@ -6055,6 +6055,7 @@ main(int argc, char *argv[]) {
+--- spectro/dispwin.c 2026-02-09 17:25:25.000000000 -0500
++++ spectro/dispwin.c 2026-04-25 21:46:10.494515000 -0400
+@@ -760,5 +760,5 @@
- /* Display number */
- else if (argv[fa][1] == 'd') {
-+ if(na == NULL) usage(0,"-d parameter missing");
- if (strncmp(na,"web",3) == 0
- || strncmp(na,"WEB",3) == 0) {
- webdisp = 8080;
+ primary = _XRRGetOutputPrimary(mydisplay, RootWindow(mydisplay,i));
+- debugrr2((errout,"XRRGetOutputPrimary returned XID %x\n",primary));
++ debugrr2((errout, "XRRGetOutputPrimary returned XID %lx\n", primary));
+
+ if (primary != None) {
+@@ -1000,5 +1000,5 @@
+ Atom edid_atom, ret_type;
+ int ret_format;
+- long ret_len = 0, ret_togo;
++ unsigned long ret_len = 0, ret_togo;
+ unsigned char *atomv = NULL;
+ int ii;
+@@ -1166,5 +1166,5 @@
+ Atom edid_atom, ret_type;
+ int ret_format = 8;
+- long ret_len, ret_togo;
++ unsigned long ret_len, ret_togo;
+ unsigned char *atomv = NULL;
+
+@@ -1574,5 +1574,6 @@
+
+ if (nent != p->nent) {
+- debugr2((errout,"XF86VidModeGetGammaRampSize number of entries %d inconsistent with previous value\n",nent,p->nent));
++ debugr2((errout,"XF86VidModeGetGammaRampSize number of entries %d "
++ "inconsistent with previous value of %d\n", nent, p->nent));
+ return NULL;
+ }
+@@ -3567,5 +3568,5 @@
+ Atom ret_type;
+ int ret_format;
+- long ret_len, ret_togo;
++ unsigned long ret_len, ret_togo;
+ char aname[30];
+ unsigned char *atomv = NULL; /* Profile loaded from/to atom */
+@@ -5439,5 +5440,6 @@
+
+ if (depth != p->fdepth) {
+- debugr2((errout,"new_dispwin: Default Visual red mask 0x%x is not %d bits\n",vinfo->red_mask,p->fdepth));
++ debugr2((errout, "new_dispwin: Default Visual red mask 0x%lx is not %d bits\n",
++ vinfo->red_mask, p->fdepth));
+ XFree(vinfo);
+ dispwin_del(p);
+@@ -5452,5 +5454,6 @@
+
+ if (depth != p->fdepth) {
+- debugr2((errout,"new_dispwin: Default Visual green mask 0x%x is not %d bits\n",vinfo->red_mask,p->fdepth));
++ debugr2((errout, "new_dispwin: Default Visual green mask 0x%lx is not %d bits\n",
++ vinfo->red_mask, p->fdepth));
+ XFree(vinfo);
+ dispwin_del(p);
+@@ -5465,5 +5468,6 @@
+
+ if (depth != p->fdepth) {
+- debugr2((errout,"new_dispwin: Default Visual blue mask 0x%x is not %d bits\n",vinfo->red_mask,p->fdepth));
++ debugr2((errout, "new_dispwin: Default Visual blue mask 0x%lx is not %d bits\n",
++ vinfo->red_mask, p->fdepth));
+ XFree(vinfo);
+ dispwin_del(p);
+@@ -5700,5 +5704,4 @@
+ Atom optat;
+ unsigned int opaque = 0xffffffff;
+- unsigned int xid = (unsigned int)rootwindow; /* Hope this is 32 bit */
+ XChangeProperty(
+ p->mydisplay, p->mywindow,
+@@ -5707,5 +5710,5 @@
+ 32, /* format = bits in type of unsigned int */
+ PropModeReplace, /* Change mode */
+- (char *)(&xid), /* Data is Root Window XID */
++ (void *)(&rootwindow), /* Data is Root Window XID */
+ 1 /* Number of elements of data */
+ );
+@@ -5714,9 +5717,9 @@
+ if ((optat = XInternAtom(p->mydisplay, "_NET_WM_WINDOW_OPACITY", False)) != None) {
+ XChangeProperty(p->mydisplay, p->mywindow, optat,
+- XA_CARDINAL, 32, PropModeReplace, (char *)(&opaque), 1);
++ XA_CARDINAL, 32, PropModeReplace, (void *)(&opaque), 1);
+ }
+ if ((optat = XInternAtom(p->mydisplay, "_NET_WM_WINDOW_OPACITY_LOCKED", False)) != None) {
+ XChangeProperty(p->mydisplay, p->mywindow, optat,
+- XA_CARDINAL, 32, PropModeReplace, (char *)(&opaque), 1);
++ XA_CARDINAL, 32, PropModeReplace, (void *)(&opaque), 1);
+ }
+ }
diff --git a/graphics/argyllcms/files/patch-spectro_vinflate.c b/graphics/argyllcms/files/patch-spectro_vinflate.c
deleted file mode 100644
index 15502529e161..000000000000
--- a/graphics/argyllcms/files/patch-spectro_vinflate.c
+++ /dev/null
@@ -1,31 +0,0 @@
---- spectro/vinflate.c.orig 2020-08-19 12:08:33 UTC
-+++ spectro/vinflate.c
-@@ -92,7 +92,7 @@ int vinflate(void);
- */
-
- #define WSIZE 0x8000
--unsigned int wp; /* current position in slide */
-+extern unsigned int wp; /* current position in slide */
- uch slide[32768];
-
- static int vflush_output(unsigned int w) {
-@@ -160,8 +160,8 @@ static ush cpdext[] = { /* Extra bits for dist
- the stream.
- */
-
--ulg bb; /* bit buffer */
--unsigned bk; /* bits in bit buffer */
-+extern ulg bb; /* bit buffer */
-+extern unsigned bk; /* bits in bit buffer */
-
- ush vmask_bits[] = {
- 0x0000,
-@@ -239,7 +239,7 @@ int vdbits = 6; /* bits in base distance look
- #define N_MAX 288 /* maximum number of codes in any set */
-
-
--unsigned hufts; /* track memory usage */
-+extern unsigned hufts; /* track memory usage */
-
- /* Given a list of code lengths and a maximum table size, make a set of
- tables to decode that set of codes. Return zero on success, one if
diff --git a/graphics/argyllcms/files/patch-warnings b/graphics/argyllcms/files/patch-warnings
new file mode 100644
index 000000000000..9eb998747503
--- /dev/null
+++ b/graphics/argyllcms/files/patch-warnings
@@ -0,0 +1,275 @@
+--- render/render.c 2026-02-09 17:25:30.000000000 -0500
++++ render/render.c 2026-04-25 21:57:54.964993000 -0400
+@@ -317,9 +317,9 @@
+ #ifdef RENDER_TIFF
+ TIFF *wh = NULL;
+- uint16 samplesperpixel = 0, bitspersample = 0;
+- uint16 extrasamples = 0; /* Extra "alpha" samples */
+- uint16 extrainfo[MXCH2D]; /* Info about extra samples */
+- uint16 photometric = 0;
+- uint16 inkset = 0xffff;
++ uint16_t samplesperpixel = 0, bitspersample = 0;
++ uint16_t extrasamples = 0; /* Extra "alpha" samples */
++ uint16_t extrainfo[MXCH2D]; /* Info about extra samples */
++ uint16_t photometric = 0;
++ uint16_t inkset = 0xffff;
+ char *inknames = NULL;
+ #endif
+--- ucmm/ucmm.c 2026-02-09 17:25:31.000000000 -0500
++++ ucmm/ucmm.c 2026-04-25 23:53:58.581849000 -0400
+@@ -438,5 +438,7 @@
+ if (ii > recno) /* Track biggest, so we know what to create next */
+ recno = ii;
+- if ((pp = jc_get_nth_elem(key, 3)) != NULL && strcmp(pp, mname) == 0 && type == jc_string && strcmp(data, mval) == 0) {
++ if ((pp = jc_get_nth_elem(key, 3)) != NULL &&
++ strcmp(pp, mname) == 0 && type == jc_string &&
++ strcmp((char *)data, mval) == 0) {
+ /* Found matching record */
+ free(pp);
+@@ -472,5 +474,5 @@
+ debug2((errout,"jcnf locate/get_key failed with error %d\n",ev));
+ }
+- if ((xprofile = strdup(data)) == NULL) {
++ if ((xprofile = strdup((char *)data)) == NULL) {
+ debug2((errout,"jcnf get_key malloc failed\n"));
+ }
+@@ -481,6 +483,6 @@
+ sprintf(keyn1, "devices/display/%d/%s", recno, mname);
+ sprintf(keyn2, "devices/display/%d/ICC_PROFILE", recno);
+- if ((ev = jc->set_key(jc, -1, keyn1, jc_string, mval, strlen(mval)+1, NULL)) != jc_ok
+- || (ev = jc->set_key(jc, -1, keyn2, jc_string, data_name, strlen(data_name)+1, NULL)) != jc_ok) {
++ if ((ev = jc->set_key(jc, -1, keyn1, jc_string, (unsigned char *)mval, strlen(mval)+1, NULL)) != jc_ok
++ || (ev = jc->set_key(jc, -1, keyn2, jc_string, (unsigned char *)data_name, strlen(data_name)+1, NULL)) != jc_ok) {
+ debug2((errout,"jcnf set_key failed with error %d\n",ev));
+ free(mval);
+@@ -515,5 +517,5 @@
+ if (strcmp(pp,"ICC_PROFILE") != 0
+ || type != jc_string
+- || strcmp(data, xprofile) != 0) {
++ || strcmp((char *)data, xprofile) != 0) {
+ free(pp);
+ continue;
+@@ -698,5 +700,5 @@
+ && strcmp(pp, mname) == 0
+ && type == jc_string
+- && strcmp(data, mval) == 0) {
++ && strcmp((char *)data, mval) == 0) {
+ /* Found matching record */
+ free(pp);
+@@ -729,5 +731,5 @@
+ return ucmm_access_config;
+ }
+- if ((*pprofile = strdup(data)) == NULL) {
++ if ((*pprofile = strdup((char *)data)) == NULL) {
+ debug2((errout,"jcnf get_key malloc failed\n"));
+ jc->del(jc);
+@@ -766,5 +768,6 @@
+ int recno = -1;
+ int ix;
+- ucmm_error ev = ucmm_ok;
++ ucmm_error uev;
++ jc_error ev;
+
+ if (edid != NULL)
+@@ -774,7 +777,7 @@
+
+ /* Locate the config record containing the config file entry. */
+- if ((ev = ucmm_get_monitor_config(&dprof, &recno, &jc, edid, edid_len, display_name,
++ if ((uev = ucmm_get_monitor_config(&dprof, &recno, &jc, edid, edid_len, display_name,
+ jc_modify, scope)) != ucmm_ok) {
+- return ev;
++ return uev;
+ }
+
+@@ -828,5 +831,5 @@
+ if (strcmp(pp,"ICC_PROFILE") != 0
+ || type != jc_string
+- || strcmp(data, dprof) != 0) {
++ || strcmp((char *)data, dprof) != 0) {
+ free(pp);
+ continue;
+--- xicc/tiffgamut.c 2026-02-09 17:25:22.000000000 -0500
++++ xicc/tiffgamut.c 2026-04-25 23:59:53.426553000 -0400
+@@ -329,6 +329,8 @@
+ case JCS_YCCK:
+ return "YCCK";
++ default:
++ snprintf(buf, sizeof(buf) - 1,
++ "Unknown JPEG colorspace %d", cspace);
+ }
+- sprintf(buf,"Unknown JPEG colorspace %d",cspace);
+ return buf;
+ }
+@@ -384,12 +386,12 @@
+ TIFF *rh = NULL;
+ int x, y, width, height; /* Size of image */
+- uint16 samplesperpixel, bitspersample;
+- uint16 pconfig, photometric, pmtc;
++ uint16_t samplesperpixel, bitspersample;
++ uint16_t pconfig, photometric, pmtc;
+ tdata_t *inbuf;
+ int inbpix = 0; /* Number of pixels in jpeg in buf */
+ void (*cvt)(double *out, double *in) = NULL; /* TIFF conversion function, NULL if none */
+ icColorSpaceSignature tcs = 0; /* TIFF colorspace */
+- uint16 extrasamples = 0; /* Extra "alpha" samples */
+- uint16 *extrainfo = NULL; /* Info about extra samples */
++ uint16_t extrasamples = 0; /* Extra "alpha" samples */
++ uint16_t *extrainfo = NULL; /* Info about extra samples */
+ int sign_mask = 0; /* Handling of encoding sign */
+
+--- xicc/tiffgmts.c 2026-02-09 17:25:22.000000000 -0500
++++ xicc/tiffgmts.c 2026-04-26 00:02:06.008046000 -0400
+@@ -314,13 +314,13 @@
+ TIFF *rh = NULL;
+ int x, y, width, height; /* Size of image */
+- uint16 samplesperpixel, bitspersample;
+- uint16 pconfig, photometric, pmtc;
+- uint16 resunits;
++ uint16_t samplesperpixel, bitspersample;
++ uint16_t pconfig, photometric, pmtc;
++ uint16_t resunits;
+ float resx, resy;
+ tdata_t *inbuf;
+ void (*cvt)(double *out, double *in); /* TIFF conversion function, NULL if none */
+ icColorSpaceSignature tcs; /* TIFF colorspace */
+- uint16 extrasamples; /* Extra "alpha" samples */
+- uint16 *extrainfo; /* Info about extra samples */
++ uint16_t extrasamples; /* Extra "alpha" samples */
++ uint16_t *extrainfo; /* Info about extra samples */
+ int sign_mask; /* Handling of encoding sign */
+
+--- imdi/greytiff.c 2026-02-09 17:25:27.000000000 -0500
++++ imdi/greytiff.c 2026-04-26 00:04:18.213233000 -0400
+@@ -205,7 +205,7 @@
+ TIFF *rh = NULL, *wh = NULL;
+ int x, y, width, height; /* Size of image */
+- uint16 samplesperpixel, bitspersample;
+- uint16 pconfig, photometric, pmtc;
+- uint16 resunits;
++ uint16_t samplesperpixel, bitspersample;
++ uint16_t pconfig, photometric, pmtc;
++ uint16_t resunits;
+ float resx, resy;
+ tdata_t *inbuf, *outbuf, *checkbuf;
+--- imdi/cctiff.c 2026-02-09 17:25:26.000000000 -0500
++++ imdi/cctiff.c 2026-04-26 00:05:58.493232000 -0400
+@@ -351,5 +351,5 @@
+ int
+ ColorSpaceSignature2TiffPhotometric(
+-uint16 tags[10], /* Pointer to return array, up to 10 */
++uint16_t tags[10], /* Pointer to return array, up to 10 */
+ icColorSpaceSignature cspace /* Input ICC colorspace */
+ ) {
+@@ -969,6 +969,8 @@
+ case JCS_YCCK:
+ return "YCCK";
++ default:
++ snprintf(buf, sizeof(buf) - 1,
++ "Unknown JPEG colorspace %d", cspace);
+ }
+- sprintf(buf,"Unknown JPEG colorspace %d",cspace);
+ return buf;
+ }
+@@ -1007,13 +1009,13 @@
+
+ int x, y, width, height; /* Common size of image */
+- uint16 bitspersample; /* Bits per sample */
+- uint16 resunits;
++ uint16_t bitspersample; /* Bits per sample */
++ uint16_t resunits;
+ float resx, resy;
+- uint16 pconfig; /* Planar configuration */
++ uint16_t pconfig; /* Planar configuration */
+
+- uint16 rsamplesperpixel, wsamplesperpixel; /* Channels per sample */
+- uint16 rphotometric, wphotometric; /* Photometrics */
+- uint16 rextrasamples, wextrasamples; /* Extra "alpha" samples */
+- uint16 *rextrainfo, wextrainfo[MAX_CHAN]; /* Info about extra samples */
++ uint16_t rsamplesperpixel, wsamplesperpixel; /* Channels per sample */
++ uint16_t rphotometric, wphotometric; /* Photometrics */
++ uint16_t rextrasamples, wextrasamples; /* Extra "alpha" samples */
++ uint16_t *rextrainfo, wextrainfo[MAX_CHAN]; /* Info about extra samples */
+ char *rdesc = NULL; /* Existing description */
+ char *ddesc = "[ Color corrected by ArgyllCMS ]"; /* Default description */
+@@ -1691,5 +1693,5 @@
+ {
+ int no_pmtc; /* Number of possible photometrics */
+- uint16 pmtc[10]; /* Photometrics of output file */
++ uint16_t pmtc[10]; /* Photometrics of output file */
+ if ((no_pmtc = ColorSpaceSignature2TiffPhotometric(pmtc,
+ last_colorspace)) == 0)
+--- target/filmtarg.c 2026-02-09 17:25:27.000000000 -0500
++++ target/filmtarg.c 2026-04-26 00:11:20.962318000 -0400
+@@ -194,7 +194,5 @@
+
+ int
+-main(argc,argv)
+-int argc;
+-char *argv[];
++main(int argc, char *argv[])
+ {
+ int fa,nfa; /* current argument we're looking at */
+--- target/ifarp.c 2026-02-09 17:25:27.000000000 -0500
++++ target/ifarp.c 2026-04-26 00:12:58.354474000 -0400
+@@ -831,7 +831,5 @@
+
+ int
+-main(argc,argv)
+-int argc;
+-char *argv[];
++main(int argc, char *argv[])
+ {
+ int npoints = 500;
+--- target/ofps.c 2026-02-09 17:25:27.000000000 -0500
++++ target/ofps.c 2026-04-26 00:13:44.527466000 -0400
+@@ -8526,7 +8526,5 @@
+
+ int
+-main(argc,argv)
+-int argc;
+-char *argv[];
++main(int argc, char *argv[])
+ {
+ int npoints = 55;
+--- target/simplat.c 2026-02-09 17:25:27.000000000 -0500
++++ target/simplat.c 2026-04-26 00:15:13.359774000 -0400
+@@ -911,7 +911,5 @@
+
+ int
+-main(argc,argv)
+-int argc;
+-char *argv[];
++main(int argc, char *argv[])
+ {
+ int npoints = 50;
+--- target/simdlat.c 2026-02-09 17:25:27.000000000 -0500
++++ target/simdlat.c 2026-04-26 00:16:29.160795000 -0400
+@@ -879,7 +879,5 @@
+
+ int
+-main(argc,argv)
+-int argc;
+-char *argv[];
++main(int argc, char *argv[])
+ {
+ int npoints = 50;
+--- scanin/scanin.c 2026-02-09 17:25:28.000000000 -0500
++++ scanin/scanin.c 2026-04-26 00:17:29.075659000 -0400
+@@ -168,11 +168,11 @@
+
+ TIFF *rh = NULL, *wh = NULL;
+- uint16 depth, bps; /* Useful depth, bits per sample */
+- uint16 tdepth; /* Total depth including alpha */
+- uint16 pconfig, photometric;
+- uint16 rextrasamples; /* Extra "alpha" samples */
+- uint16 *rextrainfo; /* Info about extra samples */
++ uint16_t depth, bps; /* Useful depth, bits per sample */
++ uint16_t tdepth; /* Total depth including alpha */
++ uint16_t pconfig, photometric;
++ uint16_t rextrasamples; /* Extra "alpha" samples */
++ uint16_t *rextrainfo; /* Info about extra samples */
+ int gotres = 0;
+- uint16 resunits;
++ uint16_t resunits;
+ float resx, resy;
+
diff --git a/graphics/argyllcms/files/patch-yajl b/graphics/argyllcms/files/patch-yajl
new file mode 100644
index 000000000000..d9eba3f4464f
--- /dev/null
+++ b/graphics/argyllcms/files/patch-yajl
@@ -0,0 +1,160 @@
+Build against the stock yajl instead of the bundled copy.
+
+ -mi
+--- ccast/ccast.c 2026-02-09 17:25:54.000000000 -0500
++++ ccast/ccast.c 2026-04-25 23:11:46.141616000 -0400
+@@ -30,8 +30,12 @@
+ #include "conv.h"
+ #include "base64.h"
+-#include "yajl.h"
++#include <yajl/yajl_tree.h>
+ #include "ccpacket.h"
+ #include "ccmes.h"
+ #include "ccast.h"
++
++#define yajl_tree_get_first(parent, key, type) \
++ yajl_tree_get((parent), (const char *[]){ (key), NULL }, (type))
++#define YAJL_GET_STRINGDUP(v) (YAJL_IS_STRING(v) ? strdup((v)->u.string) : NULL)
+
+ #undef DEBUG /* [und] */
+--- ccast/ccmes.c 2026-02-09 17:25:54.000000000 -0500
++++ ccast/ccmes.c 2026-04-25 23:08:23.822112000 -0400
+@@ -37,5 +37,5 @@
+ #endif
+
+-#include "yajl.h"
++#include <yajl/yajl_tree.h>
+ #include "conv.h"
+ #include "ccpacket.h"
+@@ -45,4 +45,8 @@
+ #undef LOWVERBTRACE /* [und] Low verboseness message trace */
+ #undef DEBUG /* [und] Full message trace + debug */
++
++
++#define yajl_tree_get_first(parent, key, type) \
++ yajl_tree_get((parent), (const char *[]){ (key), NULL }, (type))
*** 204 LINES SKIPPED ***