To be clear: on powerpc (and by default outside of MacPorts generally) gcc
uses libstdc++, and that works fine.
MacPorts uses libc++ with gcc on archs other than powerpc, which is what
fails. It is not a fault of gcc, it is a fault of libc++ being outdated.
This should work fine on 10.5 out of the box.

On Tue, Mar 24, 2026 at 7:27 PM Riccardo Mottola via macports-dev <
[email protected]> wrote:

> Hi,
>
> a way to test a workaround for the poppler issue
> (https://trac.macports.org/ticket/73696) was to build also gpgme and
> gpgmepp with gcc. I tested first on 10.13.
>
> A good test anyway for 10.5 where gcc is more used and PPC of course
> where it is the only one!
>
> I used the suggested way to force a rebuild with sources (to be sure not
> a binary gets pulled in)
>
> sudo port -ns upgrade --force gpgme configure.compiler=macports-gcc-15
>
> -> worked fine
>
>
> sudo port -nvs upgrade --force gpgmepp configure.compiler=macports-gcc-15
>
> -> fails
>
> [  4%] Building CXX object src/CMakeFiles/Gpgmepp.dir/callbacks.cpp.o
> cd /opt/local/var/macports/build/gpgmepp-52f96e84/work/build/src &&
> /opt/local/bin/g++-mp-15 -DGPG_ERR_SOURCE_DEFAULT=GPG_ERR_SOURCE_GPGME
> -DGpgmepp_EXPORTS -D_LARGEFILE64_SOURCE
> -I/opt/local/var/macports/build/gpgmepp-52f96e84/work/build/src
> -I/opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src
> -isystem /opt/local/include -pipe -Os -DNDEBUG -I/opt/local/include
> -stdlib=libc++ -Wall -Wextra -Wno-shadow -Wsuggest-override
> -Wzero-as-null-pointer-constant -std=c++17 -arch x86_64
> -mmacosx-version-min=10.13 -fPIC -fvisibility=hidden -MD -MT
> src/CMakeFiles/Gpgmepp.dir/callbacks.cpp.o -MF
> CMakeFiles/Gpgmepp.dir/callbacks.cpp.o.d -o
> CMakeFiles/Gpgmepp.dir/callbacks.cpp.o -c
>
> /opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src/callbacks.cpp
> In file included from
> /opt/local/libexec/gcc15/libc++/include/c++/v1/new:99,
>                   from
> /opt/local/libexec/gcc15/libc++/include/c++/v1/__memory/construct_at.h:23,
>                   from
>
> /opt/local/libexec/gcc15/libc++/include/c++/v1/__string/constexpr_c_functions.h:14,
>                   from
> /opt/local/libexec/gcc15/libc++/include/c++/v1/__algorithm/find.h:17,
>                   from
> /opt/local/libexec/gcc15/libc++/include/c++/v1/__algorithm/remove.h:12,
>                   from
> /opt/local/libexec/gcc15/libc++/include/c++/v1/string:569,
>                   from
>
> /opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src/error.h:31,
>                   from
>
> /opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src/result.h:29,
>                   from
>
> /opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src/verificationresult.h:29,
>                   from
>
> /opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src/notation.h:29,
>                   from
>
> /opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src/util.h:32,
>                   from
>
> /opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src/callbacks.cpp:30:
> /opt/local/libexec/gcc15/libc++/include/c++/v1/cstdlib:144:9: error:
> 'at_quick_exit' has not been declared in '::'
>    144 | using ::at_quick_exit _LIBCPP_USING_IF_EXISTS;
>        |         ^~~~~~~~~~~~~
> /opt/local/libexec/gcc15/libc++/include/c++/v1/cstdlib:145:9: error:
> 'quick_exit' has not been declared in '::'
>    145 | using ::quick_exit _LIBCPP_USING_IF_EXISTS;
>        |         ^~~~~~~~~~
> /opt/local/libexec/gcc15/libc++/include/c++/v1/cstdlib:148:9: error:
> 'aligned_alloc' has not been declared in '::'
>    148 | using ::aligned_alloc _LIBCPP_USING_IF_EXISTS;
>        |         ^~~~~~~~~~~~~
> In file included from
> /opt/local/libexec/gcc15/libc++/include/c++/v1/new:99,
>                   from
> /opt/local/libexec/gcc15/libc++/include/c++/v1/__memory/construct_at.h:23,
>                   from
>
> /opt/local/libexec/gcc15/libc++/include/c++/v1/__string/constexpr_c_functions.h:14,
>                   from
>
> /opt/local/libexec/gcc15/libc++/include/c++/v1/__algorithm/copy_move_common.h:18,
>                   from
> /opt/local/libexec/gcc15/libc++/include/c++/v1/__algorithm/copy.h:12,
>                   from
> /opt/local/libexec/gcc15/libc++/include/c++/v1/vector:304,
>                   from
>
> /opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src/configuration.h:34,
>                   from
>
> /opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src/configuration.cpp:29:
> /opt/local/libexec/gcc15/libc++/include/c++/v1/cstdlib:144:9: error:
> 'at_quick_exit' has not been declared in '::'
>    144 | using ::at_quick_exit _LIBCPP_USING_IF_EXISTS;
>        |         ^~~~~~~~~~~~~
> /opt/local/libexec/gcc15/libc++/include/c++/v1/cstdlib:145:9: error:
> 'quick_exit' has not been declared in '::'
>    145 | using ::quick_exit _LIBCPP_USING_IF_EXISTS;
>        |         ^~~~~~~~~~
> /opt/local/libexec/gcc15/libc++/include/c++/v1/cstdlib:148:9: error:
> 'aligned_alloc' has not been declared in '::'
>    148 | using ::aligned_alloc _LIBCPP_USING_IF_EXISTS;
>        |         ^~~~~~~~~~~~~
>
> I'm a bit wondering what is happening here. The error is in the C++
> header iself
>
> /opt/local/libexec/gcc15/libc++/include/c++/v1/cstdlib
>
> #if !defined(_LIBCPP_CXX03_LANG)
> using ::at_quick_exit _LIBCPP_USING_IF_EXISTS;
> using ::quick_exit _LIBCPP_USING_IF_EXISTS;
> #endif
>
>
> I suppose the issue here is that is not defined
>
> Does this ring a bell?
>
> The port has
> compiler.cxx_standard 2017
>
> shouldn't that be enough to enable 03?
>
> I added:
>
> however, it still fails  - value issue I have seen in the portfile this
> comment:
> # run-genrandom.cpp:114:31: error: 'value' is
> # unavailable: introduced in macOS 10.13
> # std::optional<T>::value is missing from the libc++ system
> # library, and Clang reports this error even with
> # macports-libcxx (except for <Lion), so pass this flag.
>
> I enabled it also for GCC and also for 10.13... and it fails this way:
>
> In file included from
> /opt/local/libexec/gcc15/libc++/include/c++/v1/__assert:13,
>                   from
> /opt/local/libexec/gcc15/libc++/include/c++/v1/iosfwd:97,
>                   from
>
> /opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src/global.h:32,
>                   from
>
> /opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src/configuration.h:29,
>                   from
>
> /opt/local/var/macports/build/gpgmepp-52f96e84/work/gpgmepp-2.0.0/src/configuration.cpp:29:
> /opt/local/libexec/gcc15/libc++/include/c++/v1/__config:593:9: error:
> '__char16_t' does not name a type; did you mean 'char16_t'?
>    593 | typedef __char16_t char16_t;
>        |         ^~~~~~~~~~
>        |         char16_t
> /opt/local/libexec/gcc15/libc++/include/c++/v1/__config:594:9: error:
> '__char32_t' does not name a type; did you mean 'char32_t'?
>    594 | typedef __char32_t char32_t;
>        |         ^~~~~~~~~~
>
>
> Ideas? Does it make sense to open  bug to build with gcc gpgmepp?
>
> Riccard
>

Reply via email to