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.