git: af881884649f - main - devel/hyprwayland-scanner: unbreak build with libc++ 16

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Sat, 27 Apr 2024 05:52:05 UTC
The branch main has been updated by jbeich:

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

commit af881884649fbd6555898f6b2b7e4aaaa0a3728c
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2024-04-27 05:50:26 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2024-04-27 05:51:36 +0000

    devel/hyprwayland-scanner: unbreak build with libc++ 16
    
    src/main.cpp:218:24: error: no member named 'format' in namespace 'std'
            HEADER += std::format("enum {} : uint32_t {{\n", en.name);
                      ~~~~~^
    src/main.cpp:220:28: error: no member named 'format' in namespace 'std'
                HEADER += std::format("    {} = {},\n", k, v);
                          ~~~~~^
    src/main.cpp:228:24: error: no member named 'format' in namespace 'std'
            HEADER += std::format("\nclass {};", IFACE_CLASS_NAME_CAMEL);
                      ~~~~~^
    src/main.cpp:237:24: error: no member named 'format' in namespace 'std'
            HEADER += std::format("extern const wl_interface {};\n", IFACE_WL_NAME, IFACE_WL_NAME_CAMEL, IFACE_WL_NAME);
                      ~~~~~^
    src/main.cpp:247:24: error: no member named 'format' in namespace 'std'
            HEADER += std::format(R"#(
                      ~~~~~^
    src/main.cpp:289:28: error: no member named 'format' in namespace 'std'
                HEADER += std::format("    void {}(F<void({}*{})> handler);\n", camelize("set_" + rq.name), IFACE_CLASS_NAME_CAMEL, args);
                          ~~~~~^
    src/main.cpp:307:28: error: no member named 'format' in namespace 'std'
                HEADER += std::format("    void {}({});\n", camelize("send_" + ev.name), args);
                          ~~~~~^
    src/main.cpp:330:28: error: no member named 'format' in namespace 'std'
                HEADER += std::format("        F<void({}*{})> {};\n", IFACE_CLASS_NAME_CAMEL, args, camelize(rq.name));
                          ~~~~~^
    src/main.cpp:337:24: error: no member named 'format' in namespace 'std'
            HEADER += std::format(R"#(
                      ~~~~~^
    src/main.cpp:356:20: error: no member named 'format' in namespace 'std'
        SOURCE += std::format(R"#(#define private public
                  ~~~~~^
    src/main.cpp:385:24: error: no member named 'format' in namespace 'std'
            SOURCE += std::format("extern const wl_interface {};\n", IFACE_WL_NAME, IFACE_WL_NAME_CAMEL, IFACE_WL_NAME);
                      ~~~~~^
    src/main.cpp:399:36: error: no member named 'format' in namespace 'std'
                        SOURCE += std::format("extern const wl_interface {};\n", IFACE_WL_NAME2, IFACE_WL_NAME_CAMEL2, IFACE_WL_NAME2);
                                  ~~~~~^
    src/main.cpp:414:36: error: no member named 'format' in namespace 'std'
                        SOURCE += std::format("extern const wl_interface {};\n", IFACE_WL_NAME2, IFACE_WL_NAME_CAMEL2, IFACE_WL_NAME2);
                                  ~~~~~^
    src/main.cpp:452:28: error: no member named 'format' in namespace 'std'
                SOURCE += std::format(R"#(
                          ~~~~~^
    src/main.cpp:463:24: error: no member named 'format' in namespace 'std'
            SOURCE += std::format(R"#(
                      ~~~~~^
    src/main.cpp:475:24: error: no member named 'format' in namespace 'std'
            SOURCE += std::format(R"#(
                      ~~~~~^
    src/main.cpp:482:28: error: no member named 'format' in namespace 'std'
                SOURCE += std::format("    (void*){},\n", REQUEST_NAME);
                          ~~~~~^
    src/main.cpp:514:28: error: no member named 'format' in namespace 'std'
                SOURCE += std::format(R"#(
                          ~~~~~^
    src/main.cpp:532:28: error: no member named 'format' in namespace 'std'
                SOURCE += std::format("static const wl_interface* {}[] = {{\n", TYPE_TABLE_NAME);
                          ~~~~~^
    fatal error: too many errors emitted, stopping now [-ferror-limit=]
    
    Reported by:    pkg-fallout
---
 devel/hyprwayland-scanner/Makefile | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/devel/hyprwayland-scanner/Makefile b/devel/hyprwayland-scanner/Makefile
index 01022242b3df..51d3ed40f831 100644
--- a/devel/hyprwayland-scanner/Makefile
+++ b/devel/hyprwayland-scanner/Makefile
@@ -18,4 +18,10 @@ GH_ACCOUNT=	hyprwm
 PLIST_FILES=	bin/${PORTNAME} \
 		libdata/pkgconfig/${PORTNAME}.pc
 
+# XXX Drop after FreeBSD 14.0 EOL around 2025-03-01
+.if exists(/usr/include/c++/v1/__format/format_functions.h) && \
+   !exists(/usr/include/c++/v1/__format/write_escaped.h)
+CXXFLAGS+=	-fexperimental-library
+.endif
+
 .include <bsd.port.mk>