external/lcms2/0001-const-up-some-static-arrays.patch.1 |  392 ++++++++++++++++
 external/lcms2/UnpackedTarball_lcms2.mk                 |    4 
 2 files changed, 396 insertions(+)

New commits:
commit 61227073e1b3f37bb4ee49fd1dd32f320ca876f8
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sun Jul 20 17:25:17 2025 +0100
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Mon Jul 21 00:24:46 2025 +0200

    const up lcms2
    
    Change-Id: Iaca3404bd9e8de00d84a89eb86b5e3b9cc12535b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188089
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Tested-by: Jenkins

diff --git a/external/lcms2/0001-const-up-some-static-arrays.patch.1 
b/external/lcms2/0001-const-up-some-static-arrays.patch.1
new file mode 100644
index 000000000000..c61b11d6b2ca
--- /dev/null
+++ b/external/lcms2/0001-const-up-some-static-arrays.patch.1
@@ -0,0 +1,392 @@
+From f48dd19c6cd6152b5fe56c6fb94d2e966c709f57 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolan.mcnam...@collabora.com>
+Date: Sun, 20 Jul 2025 17:43:36 +0100
+Subject: [PATCH] const up some static arrays
+
+which enables moving them out of the .data section
+---
+ src/cmsalpha.c       |  2 +-
+ src/cmscgats.c       |  4 ++--
+ src/cmscnvrt.c       |  8 ++++----
+ src/cmsio0.c         | 14 +++++++-------
+ src/cmsopt.c         | 12 ++++++------
+ src/cmspcs.c         | 26 +++++++++++++-------------
+ src/cmsps2.c         |  4 ++--
+ src/cmssamp.c        |  2 +-
+ src/cmstypes.c       | 16 ++++++++--------
+ src/lcms2_internal.h |  8 ++++----
+ 10 files changed, 48 insertions(+), 48 deletions(-)
+
+diff --git a/src/cmsalpha.c b/src/cmsalpha.c
+index a5f1a16..b8e1a26 100644
+--- a/src/cmsalpha.c
++++ b/src/cmsalpha.c
+@@ -377,7 +377,7 @@ int FormatterPos(cmsUInt32Number frm)
+ static
+ cmsFormatterAlphaFn _cmsGetFormatterAlpha(cmsContext id, cmsUInt32Number in, 
cmsUInt32Number out)
+ {
+-static cmsFormatterAlphaFn FormattersAlpha[6][6] = {
++static const cmsFormatterAlphaFn FormattersAlpha[6][6] = {
+ 
+        /* from 8 */  { copy8,       from8to16,   from8to16SE,   from8toHLF,   
from8toFLT,    from8toDBL    },
+        /* from 16*/  { from16to8,   copy16,      from16to16,    from16toHLF,  
from16toFLT,   from16toDBL   },
+diff --git a/src/cmscgats.c b/src/cmscgats.c
+index 53e3442..27be3b9 100644
+--- a/src/cmscgats.c
++++ b/src/cmscgats.c
+@@ -266,7 +266,7 @@ typedef struct {
+         WRITEMODE as;      // How is supposed to be written
+     } PROPERTY;
+ 
+-static PROPERTY PredefinedProperties[] = {
++static const PROPERTY PredefinedProperties[] = {
+ 
+         {"NUMBER_OF_FIELDS", WRITE_UNCOOKED},    // Required - NUMBER OF 
FIELDS
+         {"NUMBER_OF_SETS",   WRITE_UNCOOKED},    // Required - NUMBER OF SETS
+@@ -344,7 +344,7 @@ static PROPERTY PredefinedProperties[] = {
+ 
+ 
+ // Predefined sample types on dataset
+-static const char* PredefinedSampleID[] = {
++static const char* const PredefinedSampleID[] = {
+         "SAMPLE_ID",      // Identifies sample that data represents
+         "STRING",         // Identifies label, or other non-machine readable 
value.
+                           // Value must begin and end with a " symbol
+diff --git a/src/cmscnvrt.c b/src/cmscnvrt.c
+index 9dfca7d..a050db3 100644
+--- a/src/cmscnvrt.c
++++ b/src/cmscnvrt.c
+@@ -103,7 +103,7 @@ void DupPluginIntentsList(struct _cmsContext_struct* ctx,
+                                                const struct 
_cmsContext_struct* src)
+ {
+    _cmsIntentsPluginChunkType newHead = { NULL };
+-   cmsIntentsList*  entry;
++   const cmsIntentsList*  entry;
+    cmsIntentsList*  Anterior = NULL;
+    _cmsIntentsPluginChunkType* head = (_cmsIntentsPluginChunkType*) 
src->chunks[IntentPlugin];
+ 
+@@ -148,10 +148,10 @@ void  _cmsAllocIntentsPluginChunk(struct 
_cmsContext_struct* ctx,
+ 
+ // Search the list for a suitable intent. Returns NULL if not found
+ static
+-cmsIntentsList* SearchIntent(cmsContext ContextID, cmsUInt32Number Intent)
++const cmsIntentsList* SearchIntent(cmsContext ContextID, cmsUInt32Number 
Intent)
+ {
+     _cmsIntentsPluginChunkType* ctx = ( _cmsIntentsPluginChunkType*) 
_cmsContextGetClientChunk(ContextID, IntentPlugin);
+-    cmsIntentsList* pt;
++    const cmsIntentsList* pt;
+ 
+     for (pt = ctx -> Intents; pt != NULL; pt = pt -> Next)
+         if (pt ->Intent == Intent) return pt;
+@@ -1108,7 +1108,7 @@ cmsPipeline* _cmsLinkProfiles(cmsContext     ContextID,
+                               cmsUInt32Number dwFlags)
+ {
+     cmsUInt32Number i;
+-    cmsIntentsList* Intent;
++    const cmsIntentsList* Intent;
+ 
+     // Make sure a reasonable number of profiles is provided
+     if (nProfiles <= 0 || nProfiles > 255) {
+diff --git a/src/cmsio0.c b/src/cmsio0.c
+index 859def3..30b6f1e 100644
+--- a/src/cmsio0.c
++++ b/src/cmsio0.c
+@@ -658,7 +658,7 @@ void _cmsDeleteTagByPos(_cmsICCPROFILE* Icc, int i)
+             _cmsFree(Icc ->ContextID, Icc ->TagPtrs[i]);
+         }
+         else {
+-            cmsTagTypeHandler* TypeHandler = Icc ->TagTypeHandlers[i];
++            const cmsTagTypeHandler* TypeHandler = Icc ->TagTypeHandlers[i];
+ 
+             if (TypeHandler != NULL) {
+ 
+@@ -1310,7 +1310,7 @@ cmsBool SaveTags(_cmsICCPROFILE* Icc, _cmsICCPROFILE* 
FileOrig)
+     cmsTagDescriptor* TagDescriptor;
+     cmsTagTypeSignature TypeBase;
+     cmsTagTypeSignature Type;
+-    cmsTagTypeHandler* TypeHandler;
++    const cmsTagTypeHandler* TypeHandler;
+     cmsFloat64Number   Version = cmsGetProfileVersion((cmsHPROFILE) Icc);
+     cmsTagTypeHandler LocalTypeHandler;
+ 
+@@ -1564,7 +1564,7 @@ void freeOneTag(_cmsICCPROFILE* Icc, cmsUInt32Number i)
+ {
+     if (Icc->TagPtrs[i]) {
+ 
+-        cmsTagTypeHandler* TypeHandler = Icc->TagTypeHandlers[i];
++        const cmsTagTypeHandler* TypeHandler = Icc->TagTypeHandlers[i];
+ 
+         if (TypeHandler != NULL) {
+             cmsTagTypeHandler LocalTypeHandler = *TypeHandler;
+@@ -1637,7 +1637,7 @@ void* CMSEXPORT cmsReadTag(cmsHPROFILE hProfile, 
cmsTagSignature sig)
+ {
+     _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile;
+     cmsIOHANDLER* io;
+-    cmsTagTypeHandler* TypeHandler;
++    const cmsTagTypeHandler* TypeHandler;
+     cmsTagTypeHandler LocalTypeHandler;
+     cmsTagDescriptor*  TagDescriptor;
+     cmsTagTypeSignature BaseType;
+@@ -1771,7 +1771,7 @@ Error:
+ cmsTagTypeSignature _cmsGetTagTrueType(cmsHPROFILE hProfile, cmsTagSignature 
sig)
+ {
+     _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile;
+-    cmsTagTypeHandler* TypeHandler;
++    const cmsTagTypeHandler* TypeHandler;
+     int n;
+ 
+     // Search for given tag in ICC profile directory
+@@ -1789,7 +1789,7 @@ cmsTagTypeSignature _cmsGetTagTrueType(cmsHPROFILE 
hProfile, cmsTagSignature sig
+ cmsBool CMSEXPORT cmsWriteTag(cmsHPROFILE hProfile, cmsTagSignature sig, 
const void* data)
+ {
+     _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile;
+-    cmsTagTypeHandler* TypeHandler = NULL;
++    const cmsTagTypeHandler* TypeHandler = NULL;
+     cmsTagTypeHandler LocalTypeHandler;
+     cmsTagDescriptor* TagDescriptor = NULL;
+     cmsTagTypeSignature Type;
+@@ -1910,7 +1910,7 @@ cmsUInt32Number CMSEXPORT cmsReadRawTag(cmsHPROFILE 
hProfile, cmsTagSignature si
+     void *Object;
+     int i;
+     cmsIOHANDLER* MemIO;
+-    cmsTagTypeHandler* TypeHandler = NULL;
++    const cmsTagTypeHandler* TypeHandler = NULL;
+     cmsTagTypeHandler LocalTypeHandler;
+     cmsTagDescriptor* TagDescriptor = NULL;
+     cmsUInt32Number rc;
+diff --git a/src/cmsopt.c b/src/cmsopt.c
+index 7d4fcf4..27f8d6b 100644
+--- a/src/cmsopt.c
++++ b/src/cmsopt.c
+@@ -547,7 +547,7 @@ cmsBool  PatchLUT(cmsStage* CLUT, cmsUInt16Number At[], 
cmsUInt16Number Value[],
+ 
+ // Auxiliary, to see if two values are equal or very different
+ static
+-cmsBool WhitesAreEqual(cmsUInt32Number n, cmsUInt16Number White1[], 
cmsUInt16Number White2[] )
++cmsBool WhitesAreEqual(cmsUInt32Number n, const cmsUInt16Number White1[], 
const cmsUInt16Number White2[] )
+ {
+     cmsUInt32Number i;
+ 
+@@ -564,7 +564,7 @@ cmsBool WhitesAreEqual(cmsUInt32Number n, cmsUInt16Number 
White1[], cmsUInt16Num
+ static
+ cmsBool FixWhiteMisalignment(cmsPipeline* Lut, cmsColorSpaceSignature 
EntryColorSpace, cmsColorSpaceSignature ExitColorSpace)
+ {
+-    cmsUInt16Number *WhitePointIn, *WhitePointOut;
++    const cmsUInt16Number *WhitePointIn, *WhitePointOut;
+     cmsUInt16Number  WhiteIn[cmsMAXCHANNELS], WhiteOut[cmsMAXCHANNELS], 
ObtainedOut[cmsMAXCHANNELS];
+     cmsUInt32Number i, nOuts, nIns;
+     cmsStage *PreLin = NULL, *CLUT = NULL, *PostLin = NULL;
+@@ -1799,13 +1799,13 @@ typedef struct _cmsOptimizationCollection_st {
+ 
+     _cmsOPToptimizeFn  OptimizePtr;
+ 
+-    struct _cmsOptimizationCollection_st *Next;
++    const struct _cmsOptimizationCollection_st *Next;
+ 
+ } _cmsOptimizationCollection;
+ 
+ 
+ // The built-in list. We currently implement 4 types of optimizations. 
Joining of curves, matrix-shaper, linearization and resampling
+-static _cmsOptimizationCollection DefaultOptimization[] = {
++static const _cmsOptimizationCollection DefaultOptimization[] = {
+ 
+     { OptimizeByJoiningCurves,            &DefaultOptimization[1] },
+     { OptimizeMatrixShaper,               &DefaultOptimization[2] },
+@@ -1823,7 +1823,7 @@ void DupPluginOptimizationList(struct 
_cmsContext_struct* ctx,
+                                const struct _cmsContext_struct* src)
+ {
+    _cmsOptimizationPluginChunkType newHead = { NULL };
+-   _cmsOptimizationCollection*  entry;
++   const _cmsOptimizationCollection*  entry;
+    _cmsOptimizationCollection*  Anterior = NULL;
+    _cmsOptimizationPluginChunkType* head = (_cmsOptimizationPluginChunkType*) 
src->chunks[OptimizationPlugin];
+ 
+@@ -1910,7 +1910,7 @@ cmsBool CMSEXPORT _cmsOptimizePipeline(cmsContext 
ContextID,
+                              cmsUInt32Number* dwFlags)
+ {
+     _cmsOptimizationPluginChunkType* ctx = ( 
_cmsOptimizationPluginChunkType*) _cmsContextGetClientChunk(ContextID, 
OptimizationPlugin);
+-    _cmsOptimizationCollection* Opts;
++    const _cmsOptimizationCollection* Opts;
+     cmsBool AnySuccess = FALSE;
+     cmsStage* mpe;
+ 
+diff --git a/src/cmspcs.c b/src/cmspcs.c
+index 84a62b4..6295dfd 100644
+--- a/src/cmspcs.c
++++ b/src/cmspcs.c
+@@ -705,22 +705,22 @@ cmsUInt32Number CMSEXPORT 
_cmsReasonableGridpointsByColorspace(cmsColorSpaceSign
+ 
+ 
+ cmsBool  _cmsEndPointsBySpace(cmsColorSpaceSignature Space,
+-                             cmsUInt16Number **White,
+-                             cmsUInt16Number **Black,
++                             const cmsUInt16Number **White,
++                             const cmsUInt16Number **Black,
+                              cmsUInt32Number *nOutputs)
+ {
+        // Only most common spaces
+ 
+-       static cmsUInt16Number RGBblack[4]  = { 0, 0, 0 };
+-       static cmsUInt16Number RGBwhite[4]  = { 0xffff, 0xffff, 0xffff };
+-       static cmsUInt16Number CMYKblack[4] = { 0xffff, 0xffff, 0xffff, 0xffff 
};   // 400% of ink
+-       static cmsUInt16Number CMYKwhite[4] = { 0, 0, 0, 0 };
+-       static cmsUInt16Number LABblack[4]  = { 0, 0x8080, 0x8080 };           
    // V4 Lab encoding
+-       static cmsUInt16Number LABwhite[4]  = { 0xFFFF, 0x8080, 0x8080 };
+-       static cmsUInt16Number CMYblack[4]  = { 0xffff, 0xffff, 0xffff };
+-       static cmsUInt16Number CMYwhite[4]  = { 0, 0, 0 };
+-       static cmsUInt16Number Grayblack[4] = { 0 };
+-       static cmsUInt16Number GrayWhite[4] = { 0xffff };
++       static const cmsUInt16Number RGBblack[4]  = { 0, 0, 0 };
++       static const cmsUInt16Number RGBwhite[4]  = { 0xffff, 0xffff, 0xffff };
++       static const cmsUInt16Number CMYKblack[4] = { 0xffff, 0xffff, 0xffff, 
0xffff };   // 400% of ink
++       static const cmsUInt16Number CMYKwhite[4] = { 0, 0, 0, 0 };
++       static const cmsUInt16Number LABblack[4]  = { 0, 0x8080, 0x8080 };     
          // V4 Lab encoding
++       static const cmsUInt16Number LABwhite[4]  = { 0xFFFF, 0x8080, 0x8080 };
++       static const cmsUInt16Number CMYblack[4]  = { 0xffff, 0xffff, 0xffff };
++       static const cmsUInt16Number CMYwhite[4]  = { 0, 0, 0 };
++       static const cmsUInt16Number Grayblack[4] = { 0 };
++       static const cmsUInt16Number GrayWhite[4] = { 0xffff };
+ 
+        switch (Space) {
+ 
+@@ -947,4 +947,4 @@ cmsUInt32Number CMSEXPORT 
cmsChannelsOf(cmsColorSpaceSignature ColorSpace)
+     int n = cmsChannelsOfColorSpace(ColorSpace);
+     if (n < 0) return 3;
+     return (cmsUInt32Number)n;
+-}
+\ No newline at end of file
++}
+diff --git a/src/cmsps2.c b/src/cmsps2.c
+index cb2db85..6fb828e 100644
+--- a/src/cmsps2.c
++++ b/src/cmsps2.c
+@@ -573,8 +573,8 @@ int OutputValueSampler(CMSREGISTER const cmsUInt16Number 
In[], CMSREGISTER cmsUI
+             if ((In[1] >= 0x7800 && In[1] <= 0x8800) &&
+                 (In[2] >= 0x7800 && In[2] <= 0x8800)) {
+ 
+-                cmsUInt16Number* Black;
+-                cmsUInt16Number* White;
++                const cmsUInt16Number* Black;
++                const cmsUInt16Number* White;
+                 cmsUInt32Number nOutputs;
+ 
+                 if (!_cmsEndPointsBySpace(sc ->ColorSpace, &White, &Black, 
&nOutputs))
+diff --git a/src/cmssamp.c b/src/cmssamp.c
+index af76afa..56aa859 100644
+--- a/src/cmssamp.c
++++ b/src/cmssamp.c
+@@ -66,7 +66,7 @@ cmsBool  BlackPointAsDarkerColorant(cmsHPROFILE    hInput,
+                                     cmsCIEXYZ* BlackPoint,
+                                     cmsUInt32Number dwFlags)
+ {
+-    cmsUInt16Number *Black;
++    const cmsUInt16Number *Black;
+     cmsHTRANSFORM xform;
+     cmsColorSpaceSignature Space;
+     cmsUInt32Number nChannels;
+diff --git a/src/cmstypes.c b/src/cmstypes.c
+index b456276..d9c0105 100644
+--- a/src/cmstypes.c
++++ b/src/cmstypes.c
+@@ -44,7 +44,7 @@
+ typedef struct _cmsTagTypeLinkedList_st {
+ 
+     cmsTagTypeHandler Handler;
+-    struct _cmsTagTypeLinkedList_st* Next;
++    const struct _cmsTagTypeLinkedList_st* Next;
+ 
+ } _cmsTagTypeLinkedList;
+ 
+@@ -96,9 +96,9 @@ cmsBool RegisterTypesPlugin(cmsContext id, cmsPluginBase* 
Data, _cmsMemoryClient
+ // Return handler for a given type or NULL if not found. Shared between 
normal types and MPE. It first tries the additions 
+ // made by plug-ins and then the built-in defaults.
+ static
+-cmsTagTypeHandler* GetHandler(cmsTagTypeSignature sig, _cmsTagTypeLinkedList* 
PluginLinkedList, _cmsTagTypeLinkedList* DefaultLinkedList)
++const cmsTagTypeHandler* GetHandler(cmsTagTypeSignature sig, 
_cmsTagTypeLinkedList* PluginLinkedList, const _cmsTagTypeLinkedList* 
DefaultLinkedList)
+ {
+-    _cmsTagTypeLinkedList* pt;
++    const _cmsTagTypeLinkedList* pt;
+ 
+     for (pt = PluginLinkedList;
+          pt != NULL;
+@@ -4701,7 +4701,7 @@ cmsBool  Type_MPEclut_Write(struct 
_cms_typehandler_struct* self, cmsIOHANDLER*
+ 
+ 
+ // This is the list of built-in MPE types
+-static _cmsTagTypeLinkedList SupportedMPEtypes[] = {
++static const _cmsTagTypeLinkedList SupportedMPEtypes[] = {
+ 
+ {{ (cmsTagTypeSignature) cmsSigBAcsElemType, NULL, NULL, NULL, NULL, NULL, 0 
}, &SupportedMPEtypes[1] },   // Ignore those elements for now
+ {{ (cmsTagTypeSignature) cmsSigEAcsElemType, NULL, NULL, NULL, NULL, NULL, 0 
}, &SupportedMPEtypes[2] },   // (That's what the spec says)
+@@ -4721,7 +4721,7 @@ cmsBool ReadMPEElem(struct _cms_typehandler_struct* self,
+                     cmsUInt32Number SizeOfTag)
+ {
+     cmsStageSignature ElementSig;
+-    cmsTagTypeHandler* TypeHandler;
++    const cmsTagTypeHandler* TypeHandler;
+     cmsUInt32Number nItems;
+     cmsPipeline *NewLUT = (cmsPipeline *) Cargo;
+     _cmsTagTypePluginChunkType* MPETypePluginChunk  = ( 
_cmsTagTypePluginChunkType*) _cmsContextGetClientChunk(self->ContextID, 
MPEPlugin);
+@@ -4817,7 +4817,7 @@ cmsBool Type_MPE_Write(struct _cms_typehandler_struct* 
self, cmsIOHANDLER* io, v
+     cmsStageSignature ElementSig;
+     cmsPipeline* Lut = (cmsPipeline*) Ptr;
+     cmsStage* Elem = Lut ->Elements;
+-    cmsTagTypeHandler* TypeHandler;
++    const cmsTagTypeHandler* TypeHandler;
+     _cmsTagTypePluginChunkType* MPETypePluginChunk  = ( 
_cmsTagTypePluginChunkType*) _cmsContextGetClientChunk(self->ContextID, 
MPEPlugin);
+ 
+     BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase);
+@@ -5934,7 +5934,7 @@ void DupTagTypeList(struct _cmsContext_struct* ctx,
+                     int loc)
+ {
+    _cmsTagTypePluginChunkType newHead = { NULL };
+-   _cmsTagTypeLinkedList*  entry;
++   const _cmsTagTypeLinkedList*  entry;
+    _cmsTagTypeLinkedList*  Anterior = NULL;
+    _cmsTagTypePluginChunkType* head = (_cmsTagTypePluginChunkType*) 
src->chunks[loc];
+ 
+@@ -6006,7 +6006,7 @@ cmsBool  
_cmsRegisterMultiProcessElementPlugin(cmsContext id, cmsPluginBase* Dat
+ 
+ 
+ // Wrapper for tag types
+-cmsTagTypeHandler* _cmsGetTagTypeHandler(cmsContext ContextID, 
cmsTagTypeSignature sig)
++const cmsTagTypeHandler* _cmsGetTagTypeHandler(cmsContext ContextID, 
cmsTagTypeSignature sig)
+ {
+     _cmsTagTypePluginChunkType* ctx = ( _cmsTagTypePluginChunkType*) 
_cmsContextGetClientChunk(ContextID, TagTypePlugin);
+ 
+diff --git a/src/lcms2_internal.h b/src/lcms2_internal.h
+index 5b3f263..569ccfb 100644
+--- a/src/lcms2_internal.h
++++ b/src/lcms2_internal.h
+@@ -838,7 +838,7 @@ typedef struct _cms_iccprofile_struct {
+     cmsUInt32Number          TagOffsets[MAX_TABLE_TAG];
+     cmsBool                  TagSaveAsRaw[MAX_TABLE_TAG];        // True to 
write uncooked
+     void *                   TagPtrs[MAX_TABLE_TAG];
+-    cmsTagTypeHandler*       TagTypeHandlers[MAX_TABLE_TAG];     // Same 
structure may be serialized on different types
++    const cmsTagTypeHandler* TagTypeHandlers[MAX_TABLE_TAG];     // Same 
structure may be serialized on different types
+                                                                  // depending 
on profile version, so we keep track of the
+                                                                  // type 
handler for each tag in the list.
+     // Special
+@@ -855,7 +855,7 @@ cmsBool              _cmsWriteHeader(_cmsICCPROFILE* Icc, 
cmsUInt32Number UsedSp
+ int                  _cmsSearchTag(_cmsICCPROFILE* Icc, cmsTagSignature sig, 
cmsBool lFollowLinks);
+ 
+ // Tag types
+-cmsTagTypeHandler*   _cmsGetTagTypeHandler(cmsContext ContextID, 
cmsTagTypeSignature sig);
++const cmsTagTypeHandler*   _cmsGetTagTypeHandler(cmsContext ContextID, 
cmsTagTypeSignature sig);
+ cmsTagTypeSignature  _cmsGetTagTrueType(cmsHPROFILE hProfile, cmsTagSignature 
sig);
+ cmsTagDescriptor*    _cmsGetTagDescriptor(cmsContext ContextID, 
cmsTagSignature sig);
+ 
+@@ -995,8 +995,8 @@ CMSCHECKPOINT cmsUInt16Number  CMSEXPORT 
_cmsQuantizeVal(cmsFloat64Number i, cms
+ CMSAPI cmsUInt32Number  CMSEXPORT 
_cmsReasonableGridpointsByColorspace(cmsColorSpaceSignature Colorspace, 
cmsUInt32Number dwFlags);
+ 
+ cmsBool          _cmsEndPointsBySpace(cmsColorSpaceSignature Space,
+-                                      cmsUInt16Number **White,
+-                                      cmsUInt16Number **Black,
++                                      const cmsUInt16Number **White,
++                                      const cmsUInt16Number **Black,
+                                       cmsUInt32Number *nOutputs);
+ 
+ CMSAPI cmsBool CMSEXPORT _cmsOptimizePipeline(cmsContext ContextID,
+-- 
+2.49.0
+
diff --git a/external/lcms2/UnpackedTarball_lcms2.mk 
b/external/lcms2/UnpackedTarball_lcms2.mk
index f99fc708a33e..b09b38c80f91 100644
--- a/external/lcms2/UnpackedTarball_lcms2.mk
+++ b/external/lcms2/UnpackedTarball_lcms2.mk
@@ -20,8 +20,12 @@ ifneq ($(MSYSTEM),)
 $(eval $(call gb_UnpackedTarball_set_patchflags,lcms2,--binary))
 endif
 
+# external/lcms2/0001-const-up-some-static-arrays.patch.1
+# upstream effort at: https://github.com/mm2/Little-CMS/pull/501
+
 $(eval $(call gb_UnpackedTarball_add_patches,lcms2,\
        external/lcms2/lcms2-2.4-windows.patch \
+       external/lcms2/0001-const-up-some-static-arrays.patch.1 \
 ))
 
 # vim: set noet sw=4 ts=4:

Reply via email to