git: 8b109070f7a1 - main - devel/cbang: fix the build with clang 16

From: Thierry Thomas <thierry_at_FreeBSD.org>
Date: Sun, 25 Jun 2023 20:58:11 UTC
The branch main has been updated by thierry:

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

commit 8b109070f7a17b38b78a4c21b080d02650f9f65e
Author:     Thierry Thomas <thierry@FreeBSD.org>
AuthorDate: 2023-06-25 20:53:26 +0000
Commit:     Thierry Thomas <thierry@FreeBSD.org>
CommitDate: 2023-06-25 20:58:08 +0000

    devel/cbang: fix the build with clang 16
    
    Do not force clang 15, but apply a patch provided by dim@ for the first
    error, and other patches from boost upstream, pointed out by dim@ in
    https://github.com/CauldronDevelopmentLLC/cbang/issues/119#issuecomment-1606232478
    
    PR:             271047
---
 devel/cbang/Makefile                               | 13 ++----------
 .../patch-src_boost_boost_container__hash_hash.hpp | 23 ++++++++++++++++++++++
 ...meric_conversion_detail_int__float__mixture.hpp | 23 ++++++++++++++++++++++
 ...ost_numeric_conversion_detail_sign__mixture.hpp | 23 ++++++++++++++++++++++
 ...ric_conversion_detail_udt__builtin__mixture.hpp | 23 ++++++++++++++++++++++
 5 files changed, 94 insertions(+), 11 deletions(-)

diff --git a/devel/cbang/Makefile b/devel/cbang/Makefile
index 366723807e85..7fa4ead2f66e 100644
--- a/devel/cbang/Makefile
+++ b/devel/cbang/Makefile
@@ -36,6 +36,7 @@ MAKE_ARGS+=	cc="${CC}"	\
 		cxx="${CXX}"	\
 		ccflags="${CCFLAGS}"	\
 		cxxflags="${CXXFLAGS}"	\
+		cxxstd="c++17"	\
 		libpath="/lib"	\
 		sharedlib=1	\
 		prefix="${STAGEDIR}${PREFIX}"	\
@@ -51,16 +52,6 @@ PLIST_SUB=	VER=${LIBVER}
 TEST_WRKSRC=	${WRKSRC}/tests
 DO_MAKE_TEST=	${SETENV} ${TEST_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${TEST_ARGS}
 
-.include <bsd.port.pre.mk>
-
-.if ${COMPILER_VERSION} >= 160
-# See https://github.com/CauldronDevelopmentLLC/cbang/issues/119
-BUILD_DEPENDS+=	clang15:devel/llvm15
-CPP=		clang-cpp15
-CC=		clang15
-CXX=		clang++15
-.endif
-
 pre-configure:
 	${REINPLACE_CMD} -e 's|%%PYTHON_CMD%%|${PYTHON_CMD}|'	\
 		${TEST_WRKSRC}/testHarness
@@ -82,4 +73,4 @@ post-install:
 do-test:
 	(cd ${TEST_WRKSRC} && ${DO_MAKE_TEST} && ./testHarness)
 
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff --git a/devel/cbang/files/patch-src_boost_boost_container__hash_hash.hpp b/devel/cbang/files/patch-src_boost_boost_container__hash_hash.hpp
new file mode 100644
index 000000000000..13713185011f
--- /dev/null
+++ b/devel/cbang/files/patch-src_boost_boost_container__hash_hash.hpp
@@ -0,0 +1,23 @@
+--- src/boost/boost/container_hash/hash.hpp.orig	2023-03-09 16:36:47 UTC
++++ src/boost/boost/container_hash/hash.hpp
+@@ -118,20 +118,12 @@ namespace boost
+ {
+     namespace hash_detail
+     {
+-#if defined(_HAS_AUTO_PTR_ETC) && !_HAS_AUTO_PTR_ETC
+         template <typename T>
+         struct hash_base
+         {
+             typedef T argument_type;
+             typedef std::size_t result_type;
+         };
+-#else
+-#pragma GCC diagnostic push
+-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+-        template <typename T>
+-        struct hash_base : std::unary_function<T, std::size_t> {};
+-#pragma GCC diagnostic pop
+-#endif
+ 
+         struct enable_hash_value { typedef std::size_t type; };
+ 
diff --git a/devel/cbang/files/patch-src_boost_boost_numeric_conversion_detail_int__float__mixture.hpp b/devel/cbang/files/patch-src_boost_boost_numeric_conversion_detail_int__float__mixture.hpp
new file mode 100644
index 000000000000..0ed51bc4eab0
--- /dev/null
+++ b/devel/cbang/files/patch-src_boost_boost_numeric_conversion_detail_int__float__mixture.hpp
@@ -0,0 +1,23 @@
+--- src/boost/boost/numeric/conversion/detail/int_float_mixture.hpp.orig	2023-03-09 16:36:47 UTC
++++ src/boost/boost/numeric/conversion/detail/int_float_mixture.hpp
+@@ -16,15 +16,15 @@
+ #include "boost/numeric/conversion/int_float_mixture_enum.hpp"
+ #include "boost/numeric/conversion/detail/meta.hpp"
+ 
+-#include "boost/mpl/integral_c.hpp"
++#include "boost/type_traits/integral_constant.hpp"
+ 
+ namespace boost { namespace numeric { namespace convdetail
+ {
+   // Integral Constants for 'IntFloatMixture'
+-  typedef mpl::integral_c<int_float_mixture_enum, integral_to_integral> int2int_c ;
+-  typedef mpl::integral_c<int_float_mixture_enum, integral_to_float>    int2float_c ;
+-  typedef mpl::integral_c<int_float_mixture_enum, float_to_integral>    float2int_c ;
+-  typedef mpl::integral_c<int_float_mixture_enum, float_to_float>       float2float_c ;
++  typedef boost::integral_constant<int_float_mixture_enum, integral_to_integral> int2int_c ;
++  typedef boost::integral_constant<int_float_mixture_enum, integral_to_float>    int2float_c ;
++  typedef boost::integral_constant<int_float_mixture_enum, float_to_integral>    float2int_c ;
++  typedef boost::integral_constant<int_float_mixture_enum, float_to_float>       float2float_c ;
+ 
+   // Metafunction:
+   //
diff --git a/devel/cbang/files/patch-src_boost_boost_numeric_conversion_detail_sign__mixture.hpp b/devel/cbang/files/patch-src_boost_boost_numeric_conversion_detail_sign__mixture.hpp
new file mode 100644
index 000000000000..7d5876ed2468
--- /dev/null
+++ b/devel/cbang/files/patch-src_boost_boost_numeric_conversion_detail_sign__mixture.hpp
@@ -0,0 +1,23 @@
+--- src/boost/boost/numeric/conversion/detail/sign_mixture.hpp.orig	2023-03-09 16:36:47 UTC
++++ src/boost/boost/numeric/conversion/detail/sign_mixture.hpp
+@@ -16,15 +16,15 @@
+ #include "boost/numeric/conversion/sign_mixture_enum.hpp"
+ #include "boost/numeric/conversion/detail/meta.hpp"
+ 
+-#include "boost/mpl/integral_c.hpp"
++#include "boost/type_traits/integral_constant.hpp"
+ 
+ namespace boost { namespace numeric { namespace convdetail
+ {
+   // Integral Constants for 'SignMixture'
+-  typedef mpl::integral_c<sign_mixture_enum, unsigned_to_unsigned> unsig2unsig_c ;
+-  typedef mpl::integral_c<sign_mixture_enum, signed_to_signed>     sig2sig_c ;
+-  typedef mpl::integral_c<sign_mixture_enum, signed_to_unsigned>   sig2unsig_c ;
+-  typedef mpl::integral_c<sign_mixture_enum, unsigned_to_signed>   unsig2sig_c ;
++  typedef boost::integral_constant<sign_mixture_enum, unsigned_to_unsigned> unsig2unsig_c ;
++  typedef boost::integral_constant<sign_mixture_enum, signed_to_signed>     sig2sig_c ;
++  typedef boost::integral_constant<sign_mixture_enum, signed_to_unsigned>   sig2unsig_c ;
++  typedef boost::integral_constant<sign_mixture_enum, unsigned_to_signed>   unsig2sig_c ;
+ 
+   // Metafunction:
+   //
diff --git a/devel/cbang/files/patch-src_boost_boost_numeric_conversion_detail_udt__builtin__mixture.hpp b/devel/cbang/files/patch-src_boost_boost_numeric_conversion_detail_udt__builtin__mixture.hpp
new file mode 100644
index 000000000000..0683f76f2cdd
--- /dev/null
+++ b/devel/cbang/files/patch-src_boost_boost_numeric_conversion_detail_udt__builtin__mixture.hpp
@@ -0,0 +1,23 @@
+--- src/boost/boost/numeric/conversion/detail/udt_builtin_mixture.hpp.orig	2023-03-09 16:36:47 UTC
++++ src/boost/boost/numeric/conversion/detail/udt_builtin_mixture.hpp
+@@ -15,15 +15,15 @@
+ #include "boost/numeric/conversion/udt_builtin_mixture_enum.hpp"
+ #include "boost/numeric/conversion/detail/meta.hpp"
+ 
+-#include "boost/mpl/integral_c.hpp"
++#include "boost/type_traits/integral_constant.hpp"
+ 
+ namespace boost { namespace numeric { namespace convdetail
+ {
+   // Integral Constants for 'UdtMixture'
+-  typedef mpl::integral_c<udt_builtin_mixture_enum, builtin_to_builtin> builtin2builtin_c ;
+-  typedef mpl::integral_c<udt_builtin_mixture_enum, builtin_to_udt>     builtin2udt_c ;
+-  typedef mpl::integral_c<udt_builtin_mixture_enum, udt_to_builtin>     udt2builtin_c ;
+-  typedef mpl::integral_c<udt_builtin_mixture_enum, udt_to_udt>         udt2udt_c ;
++  typedef boost::integral_constant<udt_builtin_mixture_enum, builtin_to_builtin> builtin2builtin_c ;
++  typedef boost::integral_constant<udt_builtin_mixture_enum, builtin_to_udt>     builtin2udt_c ;
++  typedef boost::integral_constant<udt_builtin_mixture_enum, udt_to_builtin>     udt2builtin_c ;
++  typedef boost::integral_constant<udt_builtin_mixture_enum, udt_to_udt>         udt2udt_c ;
+ 
+   // Metafunction:
+   //