git: 52a101b577a5 - 2024Q3 - devel/simdjson: fix build with clang 19

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

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

commit 52a101b577a5d2987dd7d8010cdfd20fac687d1d
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:43:50 +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
    
    (cherry picked from commit 8c86705f8b3cead5d81271a071c331b619da4b8b)
---
 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: