external/boost/UnpackedTarball_boost.mk |    2 +
 external/boost/constexpr.patch.0        |   33 ++++++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+)

New commits:
commit ff2a90379fc14cc30e60e829ed20752b8c2fa02a
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Wed Aug 3 17:12:34 2022 +0200
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Wed Aug 3 21:40:48 2022 +0200

    external/boost: Fix ill-formed constant expression errors
    
    ...with recent Clang 16 trunk since
    
<https://github.com/llvm/llvm-project/commit/b3645353041818f61e2580635409ddb81ff5a272>
    "[Clang] Diagnose ill-formed constant expression when setting a non fixed 
enum
    to a value outside the range of the enumeration values", causing
    
    > In file included from IWORKTable.cpp:10:
    > In file included from ./IWORKTable.h:21:
    > In file included from ./IWORKTypes.h:20:
    > In file included from external/boost/include/boost/variant.hpp:31:
    > In file included from workdir/UnpackedTarball/boost/boost/variant.hpp:17:
    > In file included from 
workdir/UnpackedTarball/boost/boost/variant/variant.hpp:34:
    > In file included from 
workdir/UnpackedTarball/boost/boost/variant/detail/hash_variant.hpp:22:
    > In file included from 
workdir/UnpackedTarball/boost/boost/variant/apply_visitor.hpp:16:
    > In file included from 
workdir/UnpackedTarball/boost/boost/variant/detail/apply_visitor_unary.hpp:21:
    > In file included from 
workdir/UnpackedTarball/boost/boost/mpl/advance.hpp:19:
    > In file included from 
workdir/UnpackedTarball/boost/boost/mpl/negate.hpp:17:
    > In file included from 
workdir/UnpackedTarball/boost/boost/mpl/integral_c.hpp:32:
    > workdir/UnpackedTarball/boost/boost/mpl/aux_/integral_wrapper.hpp:73:31: 
error: non-type template argument is not a constant expression
    >     typedef AUX_WRAPPER_INST( 
BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
    >             
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    > workdir/UnpackedTarball/boost/boost/mpl/aux_/static_cast.hpp:24:47: note: 
expanded from macro 'BOOST_MPL_AUX_STATIC_CAST'
    > #   define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
    >                                               ^
    > workdir/UnpackedTarball/boost/boost/mpl/integral_c.hpp:31:54: note: 
expanded from macro 'AUX_WRAPPER_INST'
    > #define AUX_WRAPPER_INST(value) AUX_WRAPPER_NAME< T, value >
    >                                                      ^~~~~
    > 
workdir/UnpackedTarball/boost/boost/numeric/conversion/detail/meta.hpp:30:46: 
note: in instantiation of template class 
'mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum, 
boost::numeric::builtin_to_builtin>' requested here
    >        enum { x = ( BOOST_MPL_AUX_VALUE_WKND(T1)::value == 
BOOST_MPL_AUX_VALUE_WKND(T2)::value ) };
    >                                              ^
    > workdir/UnpackedTarball/boost/boost/mpl/if.hpp:63:68: note: in 
instantiation of template class 
'boost::numeric::convdetail::equal_to<mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum,
 boost::numeric::builtin_to_builtin>, 
mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum, 
boost::numeric::builtin_to_builtin>>' requested here
    >           BOOST_MPL_AUX_STATIC_CAST(bool, 
BOOST_MPL_AUX_VALUE_WKND(T1)::value)
    >                                                                    ^
    > workdir/UnpackedTarball/boost/boost/mpl/eval_if.hpp:37:22: note: in 
instantiation of template class 
'boost::mpl::if_<boost::numeric::convdetail::equal_to<mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum,
 boost::numeric::builtin_to_builtin>, 
mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum, 
boost::numeric::builtin_to_builtin>>, 
boost::mpl::identity<boost::numeric::convdetail::get_subranged_BuiltIn2BuiltIn<int,
 unsigned long>>, 
boost::mpl::eval_if<boost::numeric::convdetail::equal_to<mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum,
 boost::numeric::builtin_to_builtin>, 
mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum, 
boost::numeric::builtin_to_udt>>, 
boost::mpl::identity<boost::mpl::identity<boost::numeric::convdetail::subranged_BuiltIn2Udt<int,
 unsigned long>>>, 
boost::mpl::if_<boost::numeric::convdetail::equal_to<mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum,
 boost::numeric::builtin_to_builtin>, mpl_::integral_c<boost::numeric::u
 dt_builtin_mixture_enum, boost::numeric::udt_to_builtin>>, 
boost::mpl::identity<boost::numeric::convdetail::subranged_Udt2BuiltIn<int, 
unsigned long>>, 
boost::mpl::identity<boost::numeric::convdetail::subranged_Udt2Udt<int, 
unsigned long>>>>>' requested here
    >     typedef typename if_<C,F1,F2>::type f_;
    >                      ^
    > 
workdir/UnpackedTarball/boost/boost/numeric/conversion/detail/meta.hpp:81:12: 
note: in instantiation of template class 
'boost::mpl::eval_if<boost::numeric::convdetail::equal_to<mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum,
 boost::numeric::builtin_to_builtin>, 
mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum, 
boost::numeric::builtin_to_builtin>>, 
boost::mpl::identity<boost::numeric::convdetail::get_subranged_BuiltIn2BuiltIn<int,
 unsigned long>>, 
boost::mpl::eval_if<boost::numeric::convdetail::equal_to<mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum,
 boost::numeric::builtin_to_builtin>, 
mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum, 
boost::numeric::builtin_to_udt>>, 
boost::mpl::identity<boost::mpl::identity<boost::numeric::convdetail::subranged_BuiltIn2Udt<int,
 unsigned long>>>, 
boost::mpl::if_<boost::numeric::convdetail::equal_to<mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum,
 boost::numeric::builtin_to_builtin>, mpl_::integ
 ral_c<boost::numeric::udt_builtin_mixture_enum, 
boost::numeric::udt_to_builtin>>, 
boost::mpl::identity<boost::numeric::convdetail::subranged_Udt2BuiltIn<int, 
unsigned long>>, 
boost::mpl::identity<boost::numeric::convdetail::subranged_Udt2Udt<int, 
unsigned long>>>>>' requested here
    >       mpl::eval_if<is_case0,Case0TypeQ,choose_1_2_3Q>::type
    >            ^
    > 
workdir/UnpackedTarball/boost/boost/numeric/conversion/detail/udt_builtin_mixture.hpp:41:7:
 note: in instantiation of template class 
'boost::numeric::convdetail::ct_switch4<mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum,
 boost::numeric::builtin_to_builtin>, 
mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum, 
boost::numeric::builtin_to_builtin>, 
mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum, 
boost::numeric::builtin_to_udt>, 
mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum, 
boost::numeric::udt_to_builtin>, 
boost::numeric::convdetail::get_subranged_BuiltIn2BuiltIn<int, unsigned long>, 
boost::mpl::identity<boost::numeric::convdetail::subranged_BuiltIn2Udt<int, 
unsigned long>>, 
boost::mpl::identity<boost::numeric::convdetail::subranged_Udt2BuiltIn<int, 
unsigned long>>, 
boost::mpl::identity<boost::numeric::convdetail::subranged_Udt2Udt<int, 
unsigned long>>>' requested here
    >       ct_switch4<UdtMixture
    >       ^
    > 
workdir/UnpackedTarball/boost/boost/numeric/conversion/detail/is_subranged.hpp:205:9:
 note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to 
see all)
    >         for_udt_builtin_mixture<udt_builtin_mixture, BuiltIn2BuiltInQ, 
BuiltIn2UdtQ, Udt2BuiltInQ, Udt2UdtQ>::type
    >         ^
    > 
workdir/UnpackedTarball/boost/boost/numeric/conversion/conversion_traits.hpp:22:7:
 note: in instantiation of template class 
'boost::numeric::convdetail::non_trivial_traits_impl<int, unsigned long>' 
requested here
    >     : convdetail::get_conversion_traits<T,S>::type
    >       ^
    > 
workdir/UnpackedTarball/boost/boost/numeric/conversion/detail/converter.hpp:584:22:
 note: in instantiation of template class 
'boost::numeric::conversion_traits<int, unsigned long>' requested here
    >     typedef typename Traits::trivial trivial ;
    >                      ^
    > 
workdir/UnpackedTarball/boost/boost/numeric/conversion/converter.hpp:29:32: 
note: in instantiation of template class 
'boost::numeric::convdetail::get_converter_impl<boost::numeric::conversion_traits<int,
 unsigned long>, boost::numeric::def_overflow_handler, 
boost::numeric::Trunc<unsigned long>, 
boost::numeric::raw_converter<boost::numeric::conversion_traits<int, unsigned 
long>>, boost::numeric::UseInternalRangeChecker>' requested here
    > struct converter : convdetail::get_converter_impl<Traits,
    >                                ^
    > workdir/UnpackedTarball/boost/boost/numeric/conversion/cast.hpp:53:16: 
note: in instantiation of template class 'boost::numeric::converter<int, 
unsigned long, boost::numeric::conversion_traits<int, unsigned long>, 
boost::numeric::def_overflow_handler, boost::numeric::Trunc<unsigned long>>' 
requested here
    >         return converter::convert(arg);
    >                ^
    > IWORKTable.cpp:782:45: note: in instantiation of function template 
specialization 'boost::numeric_cast<int, unsigned long>' requested here
    >       cellProps.insert("librevenge:column", numeric_cast<int>(c));
    >                                             ^
    > workdir/UnpackedTarball/boost/boost/mpl/aux_/integral_wrapper.hpp:73:31: 
note: integer value -1 is outside the valid range of values [0, 3] for this 
enumeration type
    >     typedef AUX_WRAPPER_INST( 
BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
    >                               ^
    > workdir/UnpackedTarball/boost/boost/mpl/aux_/static_cast.hpp:24:47: note: 
expanded from macro 'BOOST_MPL_AUX_STATIC_CAST'
    > #   define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
    >                                               ^
    
    etc. when building ExternalProject_libetonyek
    
    Change-Id: I1830c1182a7ab966bb068b5eb97db099c9678fe8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137757
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/external/boost/UnpackedTarball_boost.mk 
b/external/boost/UnpackedTarball_boost.mk
index 384782f586f0..bf1b574da0e7 100644
--- a/external/boost/UnpackedTarball_boost.mk
+++ b/external/boost/UnpackedTarball_boost.mk
@@ -33,6 +33,8 @@ boost_patches += msvc2017.patch.0
 
 boost_patches += libc++.patch.0
 
+boost_patches += constexpr.patch.0
+
 $(eval $(call gb_UnpackedTarball_UnpackedTarball,boost))
 
 $(eval $(call gb_UnpackedTarball_set_tarball,boost,$(BOOST_TARBALL)))
diff --git a/external/boost/constexpr.patch.0 b/external/boost/constexpr.patch.0
new file mode 100644
index 000000000000..f641e6e1dcc1
--- /dev/null
+++ b/external/boost/constexpr.patch.0
@@ -0,0 +1,33 @@
+--- boost/numeric/conversion/int_float_mixture_enum.hpp
++++ boost/numeric/conversion/int_float_mixture_enum.hpp
+@@ -12,7 +12,7 @@
+ 
+ namespace boost { namespace numeric
+ {
+-  enum int_float_mixture_enum
++  enum int_float_mixture_enum: int
+   {
+      integral_to_integral
+     ,integral_to_float
+--- boost/numeric/conversion/sign_mixture_enum.hpp
++++ boost/numeric/conversion/sign_mixture_enum.hpp
+@@ -12,7 +12,7 @@
+ 
+ namespace boost { namespace numeric
+ {
+-  enum sign_mixture_enum
++  enum sign_mixture_enum: int
+   {
+      unsigned_to_unsigned
+     ,signed_to_signed
+--- boost/numeric/conversion/udt_builtin_mixture_enum.hpp
++++ boost/numeric/conversion/udt_builtin_mixture_enum.hpp
+@@ -12,7 +12,7 @@
+ 
+ namespace boost { namespace numeric
+ {
+-  enum udt_builtin_mixture_enum
++  enum udt_builtin_mixture_enum: int
+   {
+      builtin_to_builtin
+     ,builtin_to_udt

Reply via email to