git: 8c86705f8b3c - main - devel/simdjson: fix build with clang 19

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Fri, 16 Aug 2024 15:39:12 UTC
The branch main has been updated by dim:

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

commit 8c86705f8b3cead5d81271a071c331b619da4b8b
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2024-08-03 13:58:40 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2024-08-16 15:33:49 +0000

    devel/simdjson: fix build with clang 19
    
    With clang 19, if a port uses simdjson.h, it leads to compile errors:
    
        In file included from /wrkdirs/usr/ports/sysutils/intel-pcm/work/pcm-202405/src/pcm-raw.cpp:31:
        /usr/local/include/simdjson.h:6156:13: error: no member named 'print_newline' in 'base_formatter<formatter>'
         6156 |       this->print_newline();
              |       ~~~~  ^
        /usr/local/include/simdjson.h:6160:13: error: no member named 'print_indents' in 'base_formatter<formatter>'
         6160 |       this->print_indents(depth);
              |       ~~~~  ^
        /usr/local/include/simdjson.h:6164:13: error: no member named 'print_space' in 'base_formatter<formatter>'
         6164 |       this->print_space();
              |       ~~~~  ^
    
    Upstream <https://github.com/simdjson/simdjson/commit/5d35e7ca> fixes
    this, but it does not directly add the change to the generated single
    header version of simdjson.h. So apply the fix to both the individual
    header and the amalgamated version.
    
    PR:             280590
    Approved by:    olevole@olevole.ru (maintainer)
    MFH:            2024Q3
---
 devel/simdjson/Makefile                             |  1 +
 .../patch-include_simdjson_dom_serialization.h      | 21 +++++++++++++++++++++
 devel/simdjson/files/patch-singleheader_simdjson.h  | 21 +++++++++++++++++++++
 3 files changed, 43 insertions(+)

diff --git a/devel/simdjson/Makefile b/devel/simdjson/Makefile
index 69e8fe65332a..a035cc77293b 100644
--- a/devel/simdjson/Makefile
+++ b/devel/simdjson/Makefile
@@ -1,6 +1,7 @@
 PORTNAME=	simdjson
 DISTVERSIONPREFIX=	v
 DISTVERSION=	3.6.2
+PORTREVISION=	1
 CATEGORIES=	devel
 
 MAINTAINER=	olevole@olevole.ru
diff --git a/devel/simdjson/files/patch-include_simdjson_dom_serialization.h b/devel/simdjson/files/patch-include_simdjson_dom_serialization.h
new file mode 100644
index 000000000000..09dc68e86977
--- /dev/null
+++ b/devel/simdjson/files/patch-include_simdjson_dom_serialization.h
@@ -0,0 +1,21 @@
+--- include/simdjson/dom/serialization.h.orig	2023-12-01 18:56:12 UTC
++++ include/simdjson/dom/serialization.h
+@@ -57,15 +57,15 @@ class base_formatter { (public)
+   simdjson_inline void one_char(char c);
+ 
+   simdjson_inline void call_print_newline() {
+-      this->print_newline();
++      static_cast<formatter*>(this)->print_newline();
+   }
+ 
+   simdjson_inline void call_print_indents(size_t depth) {
+-      this->print_indents(depth);
++      static_cast<formatter*>(this)->print_indents(depth);
+   }
+ 
+   simdjson_inline void call_print_space() {
+-      this->print_space();
++      static_cast<formatter*>(this)->print_space();
+   }
+ 
+ protected:
diff --git a/devel/simdjson/files/patch-singleheader_simdjson.h b/devel/simdjson/files/patch-singleheader_simdjson.h
new file mode 100644
index 000000000000..e41f85236f17
--- /dev/null
+++ b/devel/simdjson/files/patch-singleheader_simdjson.h
@@ -0,0 +1,21 @@
+--- singleheader/simdjson.h.orig	2023-12-01 18:56:12 UTC
++++ singleheader/simdjson.h
+@@ -6153,15 +6153,15 @@ class base_formatter { (public)
+   simdjson_inline void one_char(char c);
+ 
+   simdjson_inline void call_print_newline() {
+-      this->print_newline();
++      static_cast<formatter*>(this)->print_newline();
+   }
+ 
+   simdjson_inline void call_print_indents(size_t depth) {
+-      this->print_indents(depth);
++      static_cast<formatter*>(this)->print_indents(depth);
+   }
+ 
+   simdjson_inline void call_print_space() {
+-      this->print_space();
++      static_cast<formatter*>(this)->print_space();
+   }
+ 
+ protected: