Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
325 changes: 325 additions & 0 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -15497,6 +15497,71 @@ then :
printf "%s\n" "$as_me: WARNING: libMesh prefers C++17 support for set/map merge" >&2;}
fi


have_cxx17_transform_reduce=no

ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu


old_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $libmesh_CXXFLAGS"

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++17 std::transform_reduce" >&5
printf %s "checking for C++17 std::transform_reduce... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

#include <numeric>
#include <vector>

int
main (void)
{

std::vector<int> v{7,8,9};
auto sumsq = std::transform_reduce(v.cbegin(), v.cend(), 0, std::plus{}, [](auto x){return x*x;});

;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"
then :

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
have_cxx17_transform_reduce=yes

printf "%s\n" "#define HAVE_CXX17_TRANSFORM_REDUCE 1" >>confdefs.h


else case e in #(
e)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
;;
esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext

CXXFLAGS="$old_CXXFLAGS"
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu


if test "x$have_cxx17_transform_reduce" != "xyes"
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libMesh prefers C++17 support for std::transform_reduce" >&5
printf "%s\n" "$as_me: WARNING: libMesh prefers C++17 support for std::transform_reduce" >&2;}
fi

fi
if test "$HAVE_TESTED_CXX" = "1" -a "x$have_cxx_all" = xyes
then :
Expand Down Expand Up @@ -21580,6 +21645,71 @@ then :
printf "%s\n" "$as_me: WARNING: libMesh prefers C++17 support for set/map merge" >&2;}
fi


have_cxx17_transform_reduce=no

ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu


old_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $libmesh_CXXFLAGS"

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++17 std::transform_reduce" >&5
printf %s "checking for C++17 std::transform_reduce... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

#include <numeric>
#include <vector>

int
main (void)
{

std::vector<int> v{7,8,9};
auto sumsq = std::transform_reduce(v.cbegin(), v.cend(), 0, std::plus{}, [](auto x){return x*x;});

;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"
then :

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
have_cxx17_transform_reduce=yes

printf "%s\n" "#define HAVE_CXX17_TRANSFORM_REDUCE 1" >>confdefs.h


else case e in #(
e)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
;;
esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext

CXXFLAGS="$old_CXXFLAGS"
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu


if test "x$have_cxx17_transform_reduce" != "xyes"
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libMesh prefers C++17 support for std::transform_reduce" >&5
printf "%s\n" "$as_me: WARNING: libMesh prefers C++17 support for std::transform_reduce" >&2;}
fi

fi
if test "$HAVE_TESTED_CXX" = "1" -a "x$have_cxx_all" = xyes
then :
Expand Down Expand Up @@ -27559,6 +27689,71 @@ then :
printf "%s\n" "$as_me: WARNING: libMesh prefers C++17 support for set/map merge" >&2;}
fi


have_cxx17_transform_reduce=no

ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu


old_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $libmesh_CXXFLAGS"

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++17 std::transform_reduce" >&5
printf %s "checking for C++17 std::transform_reduce... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

#include <numeric>
#include <vector>

int
main (void)
{

std::vector<int> v{7,8,9};
auto sumsq = std::transform_reduce(v.cbegin(), v.cend(), 0, std::plus{}, [](auto x){return x*x;});

;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"
then :

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
have_cxx17_transform_reduce=yes

printf "%s\n" "#define HAVE_CXX17_TRANSFORM_REDUCE 1" >>confdefs.h


else case e in #(
e)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
;;
esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext

CXXFLAGS="$old_CXXFLAGS"
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu


if test "x$have_cxx17_transform_reduce" != "xyes"
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libMesh prefers C++17 support for std::transform_reduce" >&5
printf "%s\n" "$as_me: WARNING: libMesh prefers C++17 support for std::transform_reduce" >&2;}
fi

fi
if test "$HAVE_TESTED_CXX" = "1" -a "x$have_cxx_all" = xyes
then :
Expand Down Expand Up @@ -32026,6 +32221,71 @@ then :
printf "%s\n" "$as_me: WARNING: libMesh prefers C++17 support for set/map merge" >&2;}
fi


have_cxx17_transform_reduce=no

ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu


old_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $libmesh_CXXFLAGS"

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++17 std::transform_reduce" >&5
printf %s "checking for C++17 std::transform_reduce... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

#include <numeric>
#include <vector>

int
main (void)
{

std::vector<int> v{7,8,9};
auto sumsq = std::transform_reduce(v.cbegin(), v.cend(), 0, std::plus{}, [](auto x){return x*x;});

;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"
then :

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
have_cxx17_transform_reduce=yes

printf "%s\n" "#define HAVE_CXX17_TRANSFORM_REDUCE 1" >>confdefs.h


else case e in #(
e)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
;;
esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext

CXXFLAGS="$old_CXXFLAGS"
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu


if test "x$have_cxx17_transform_reduce" != "xyes"
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libMesh prefers C++17 support for std::transform_reduce" >&5
printf "%s\n" "$as_me: WARNING: libMesh prefers C++17 support for std::transform_reduce" >&2;}
fi

fi
if test "$HAVE_TESTED_CXX" = "1" -a "x$have_cxx_all" = xyes
then :
Expand Down Expand Up @@ -36013,6 +36273,71 @@ then :
printf "%s\n" "$as_me: WARNING: libMesh prefers C++17 support for set/map merge" >&2;}
fi


have_cxx17_transform_reduce=no

ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu


old_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $libmesh_CXXFLAGS"

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++17 std::transform_reduce" >&5
printf %s "checking for C++17 std::transform_reduce... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

#include <numeric>
#include <vector>

int
main (void)
{

std::vector<int> v{7,8,9};
auto sumsq = std::transform_reduce(v.cbegin(), v.cend(), 0, std::plus{}, [](auto x){return x*x;});

;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"
then :

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
have_cxx17_transform_reduce=yes

printf "%s\n" "#define HAVE_CXX17_TRANSFORM_REDUCE 1" >>confdefs.h


else case e in #(
e)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
;;
esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext

CXXFLAGS="$old_CXXFLAGS"
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu


if test "x$have_cxx17_transform_reduce" != "xyes"
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libMesh prefers C++17 support for std::transform_reduce" >&5
printf "%s\n" "$as_me: WARNING: libMesh prefers C++17 support for std::transform_reduce" >&2;}
fi

fi
if test "$HAVE_TESTED_CXX" = "1" -a "x$have_cxx_all" = xyes
then :
Expand Down
1 change: 1 addition & 0 deletions include/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -920,6 +920,7 @@ include_HEADERS = \
parallel/libmesh_call_mpi.h \
parallel/parallel.h \
parallel/parallel_algebra.h \
parallel/parallel_algorithms.h \
parallel/parallel_bin_sorter.h \
parallel/parallel_eigen.h \
parallel/parallel_elem.h \
Expand Down
3 changes: 1 addition & 2 deletions include/base/libmesh_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -569,8 +569,7 @@ struct casting_compare {
template<class ...Args> inline void libmesh_ignore( const Args&... ) { }


// A workaround for the lack of C++17 merge() support in some
// compilers
// Workaround for incomplete C++17 support in some compilers/libs

#ifdef LIBMESH_HAVE_CXX17_SPLICING
template <typename T>
Expand Down
1 change: 1 addition & 0 deletions include/include_HEADERS
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,7 @@ include_HEADERS = \
parallel/libmesh_call_mpi.h \
parallel/parallel.h \
parallel/parallel_algebra.h \
parallel/parallel_algorithms.h \
parallel/parallel_bin_sorter.h \
parallel/parallel_eigen.h \
parallel/parallel_elem.h \
Expand Down
Loading