git: 7c091b1abc84 - main - graphics/rawtherapee: pin GCC version to 13.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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.