git: 7c091b1abc84 - main - graphics/rawtherapee: pin GCC version to 13.

From: Matthias Andree <mandree_at_FreeBSD.org>
Date: Fri, 31 Jan 2025 21:42:25 UTC
The branch main has been updated by mandree:

URL: https://cgit.FreeBSD.org/ports/commit/?id=7c091b1abc84f4246e557aaf7d04d111e4db9b8f

commit 7c091b1abc84f4246e557aaf7d04d111e4db9b8f
Author:     Matthias Andree <mandree@FreeBSD.org>
AuthorDate: 2025-01-31 21:37:37 +0000
Commit:     Matthias Andree <mandree@FreeBSD.org>
CommitDate: 2025-01-31 21:42:11 +0000

    graphics/rawtherapee: pin GCC version to 13.
    
    Apparently GCC 14 has new libstdc++ bits spill over somewhere,
    and this would break rawtherapee's build at link time,
    salvadore@ wrote
    
    /usr/local/bin/ld: /tmp/ccgto6pJ.ltrans65.ltrans.o: in function `Spot::~Spot() [clone .cold]':
    <artificial>:(.text.unlikely+0x89d): undefined reference to `__cxa_call_terminate'
    /usr/local/bin/ld: /tmp/ccgto6pJ.ltrans76.ltrans.o: in function `(anonymous namespace)::dfInfo::updateBadPixelList(rtengine::RawImage const*) [clone ._omp_fn.0] [clone .cold]':
    <artificial>:(.text.unlikely+0x93): undefined reference to `__cxa_call_terminate'
    /usr/local/bin/ld: /tmp/ccgto6pJ.ltrans77.ltrans.o: in function `rtengine::ImProcFunctions::RGB_denoise(int, rtengine::Imagefloat*, rtengine::Imagefloat*, rtengine::Imagefloat*, float*, float*, float*, bool, rtengine::procparams::DirPyrDenoiseParams const&, double, rtengine::NoiseCurve const&, rtengine::NoiseCurve const&, float&, float&) [clone ._omp_fn.2] [clone .cold]':
    <artificial>:(.text.unlikely+0x1d9): undefined reference to `__cxa_call_terminate'
    /usr/local/bin/ld: /tmp/ccgto6pJ.ltrans81.ltrans.o: in function `rtengine::init(rtengine::Settings const*, Glib::ustring const&, Glib::ustring const&, bool) [clone ._omp_fn.0] [clone .lto_priv.0] [clone .cold]':
    <artificial>:(.text.unlikely+0x4be): undefined reference to `__cxa_call_terminate'
    /usr/local/bin/ld: /tmp/ccgto6pJ.ltrans84.ltrans.o: in function `rtengine::ImProcFunctions::ciecamloc_02float(rtengine::local_params&, int, rtengine::LabImage*, int, int, int, int, LUT<float> const&, bool, LUT<float> const&, bool, LUT<float> const&, bool, LUT<float> const&, bool, LUT<float> const&, bool, rtengine::LocCHCurve const&, rtengine::LocHHCurve const&, rtengine::LocLHCurve const&, bool, bool, bool, rtengine::LocwavCurve const&, bool, float&, float&, float&) [clone ._omp_fn.11] [clone .lto_priv.0] [clone .cold]':
    <artificial>:(.text.unlikely+0x5f): undefined reference to `__cxa_call_terminate'
    
    And this seems to be https://gcc.gnu.org/pipermail/libstdc++/2023-May/056011.html
    related to C++ standards compliance - however __cxa_call_terminate
    specifically is a libstdc++ export function, unavailable in libc++.
    
    Rawtherapee needs to link against libc++ because otherwise all
    C++ libraries it imports would also have to be compiled against
    libstdc++.
    
    Reported by:    Lorenzo salvadore@
    PR:             284487
---
 graphics/rawtherapee/Makefile | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/graphics/rawtherapee/Makefile b/graphics/rawtherapee/Makefile
index 58d98dd32baa..f9119609bf02 100644
--- a/graphics/rawtherapee/Makefile
+++ b/graphics/rawtherapee/Makefile
@@ -113,7 +113,14 @@ OPENMP_LDFLAGS=		-lm -lomp
 # up to twice as fast as clang-16.0 compiled code.
 # So we shall stick to a modern GCC for now.
 #
-USE_GCC=	yes # default
+# However, libstdc++14 appears to have some parts spill over into
+# GCC14, and that breaks at link time with a linker error
+#    `undefined reference to `__cxa_call_terminate'
+# that stems from our using the FreeBSD base system libc++
+# because otherwise all other C++ libraries would have to
+# be compiled with libstdc++ instead.
+# See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=284487
+USE_GCC=	13 # default as of 2025-01-31
 
 .if (${OPSYS} == FreeBSD) && (${OSVERSION} >= 1500000)
 # don't waste everybody's time with Tier-2 and moving targets.