mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-19 01:03:04 +00:00
build: check for C++ 20 and 2b
C++20 is released. * configure.ac, m4/bison-cxx-std.m4, tests/atlocal.in, * tests/local.at: Replace 2a with 20, and add support for 2b.
This commit is contained in:
@@ -84,7 +84,8 @@ BISON_CXXSTD([03])
|
|||||||
BISON_CXXSTD([11])
|
BISON_CXXSTD([11])
|
||||||
BISON_CXXSTD([14])
|
BISON_CXXSTD([14])
|
||||||
BISON_CXXSTD([17])
|
BISON_CXXSTD([17])
|
||||||
BISON_CXXSTD([2a])
|
BISON_CXXSTD([20])
|
||||||
|
BISON_CXXSTD([2b])
|
||||||
AM_CONDITIONAL([ENABLE_CXX11], [test x"$CXX11_CXXFLAGS" != x])
|
AM_CONDITIONAL([ENABLE_CXX11], [test x"$CXX11_CXXFLAGS" != x])
|
||||||
AM_CONDITIONAL([ENABLE_CXX14], [test x"$CXX14_CXXFLAGS" != x])
|
AM_CONDITIONAL([ENABLE_CXX14], [test x"$CXX14_CXXFLAGS" != x])
|
||||||
AC_LANG_POP([C++])
|
AC_LANG_POP([C++])
|
||||||
|
|||||||
@@ -7,16 +7,17 @@
|
|||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
m4_define([_BISON_CXXSTD_98_snippet],
|
m4_define([_BISON_CXXSTD_98_snippet],
|
||||||
[#include <vector>
|
[[#include <cassert>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
typedef std::vector<int> ints;
|
typedef std::vector<int> ints;
|
||||||
])
|
]])
|
||||||
|
|
||||||
m4_define([_BISON_CXXSTD_03_snippet],
|
m4_define([_BISON_CXXSTD_03_snippet],
|
||||||
[])
|
[])
|
||||||
|
|
||||||
m4_define([_BISON_CXXSTD_11_snippet],
|
m4_define([_BISON_CXXSTD_11_snippet],
|
||||||
[#include <algorithm>
|
[[#include <algorithm>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
@@ -66,10 +67,10 @@ m4_define([_BISON_CXXSTD_11_snippet],
|
|||||||
|
|
||||||
// GCC 4.8.2 on Solaris 11.3 does not support to_string.
|
// GCC 4.8.2 on Solaris 11.3 does not support to_string.
|
||||||
auto e = std::to_string(42);
|
auto e = std::to_string(42);
|
||||||
])
|
]])
|
||||||
|
|
||||||
m4_define([_BISON_CXXSTD_14_snippet],
|
m4_define([_BISON_CXXSTD_14_snippet],
|
||||||
[ // C++14
|
[[ // C++14
|
||||||
void mismatch()
|
void mismatch()
|
||||||
{
|
{
|
||||||
using ints = std::vector<int>;
|
using ints = std::vector<int>;
|
||||||
@@ -78,20 +79,24 @@ m4_define([_BISON_CXXSTD_14_snippet],
|
|||||||
std::mismatch(std::begin(v1), std::end(v1),
|
std::mismatch(std::begin(v1), std::end(v1),
|
||||||
std::begin(v2), std::end(v2));
|
std::begin(v2), std::end(v2));
|
||||||
}
|
}
|
||||||
])
|
]])
|
||||||
|
|
||||||
m4_define([_BISON_CXXSTD_17_snippet],
|
m4_define([_BISON_CXXSTD_17_snippet],
|
||||||
[ // C++17
|
[[ // C++17
|
||||||
namespace ns1::ns2::ns3 {}
|
namespace ns1::ns2::ns3 {}
|
||||||
|
|
||||||
#include <optional>
|
#include <optional>
|
||||||
auto opt_string = std::optional<std::string>{};
|
auto opt_string = std::optional<std::string>{};
|
||||||
auto out = std::ostringstream{};
|
auto out = std::ostringstream{};
|
||||||
])
|
]])
|
||||||
|
|
||||||
m4_define([_BISON_CXXSTD_2A_snippet],
|
m4_define([_BISON_CXXSTD_20_snippet],
|
||||||
[ // C++2A
|
[[ // C++20
|
||||||
])
|
]])
|
||||||
|
|
||||||
|
m4_define([_BISON_CXXSTD_2B_snippet],
|
||||||
|
[[ // C++2B
|
||||||
|
]])
|
||||||
|
|
||||||
|
|
||||||
m4_define([_BISON_CXXSTD_testbody(98)],
|
m4_define([_BISON_CXXSTD_testbody(98)],
|
||||||
@@ -129,14 +134,25 @@ _BISON_CXXSTD_14_snippet
|
|||||||
_BISON_CXXSTD_17_snippet
|
_BISON_CXXSTD_17_snippet
|
||||||
])])
|
])])
|
||||||
|
|
||||||
m4_define([_BISON_CXXSTD_testbody(2a)],
|
m4_define([_BISON_CXXSTD_testbody(20)],
|
||||||
[AC_LANG_PROGRAM([
|
[AC_LANG_PROGRAM([
|
||||||
_BISON_CXXSTD_98_snippet
|
_BISON_CXXSTD_98_snippet
|
||||||
_BISON_CXXSTD_03_snippet
|
_BISON_CXXSTD_03_snippet
|
||||||
_BISON_CXXSTD_11_snippet
|
_BISON_CXXSTD_11_snippet
|
||||||
_BISON_CXXSTD_14_snippet
|
_BISON_CXXSTD_14_snippet
|
||||||
_BISON_CXXSTD_17_snippet
|
_BISON_CXXSTD_17_snippet
|
||||||
_BISON_CXXSTD_2A_snippet
|
_BISON_CXXSTD_20_snippet
|
||||||
|
])])
|
||||||
|
|
||||||
|
m4_define([_BISON_CXXSTD_testbody(2b)],
|
||||||
|
[AC_LANG_PROGRAM([
|
||||||
|
_BISON_CXXSTD_98_snippet
|
||||||
|
_BISON_CXXSTD_03_snippet
|
||||||
|
_BISON_CXXSTD_11_snippet
|
||||||
|
_BISON_CXXSTD_14_snippet
|
||||||
|
_BISON_CXXSTD_17_snippet
|
||||||
|
_BISON_CXXSTD_20_snippet
|
||||||
|
_BISON_CXXSTD_2B_snippet
|
||||||
])])
|
])])
|
||||||
|
|
||||||
|
|
||||||
@@ -148,7 +164,7 @@ m4_define([_BISON_CXXSTD_testbody],
|
|||||||
|
|
||||||
# BISON_CXXSTD(STD)
|
# BISON_CXXSTD(STD)
|
||||||
# -----------------
|
# -----------------
|
||||||
# Check whether the C++ compiler support STD (11, 98, 2a, etc.).
|
# Check whether the C++ compiler support STD (11, 98, 2b, etc.).
|
||||||
# If it does, AC_SUBST 'CXX<STD>_CXXFLAGS' to the corresponding flags.
|
# If it does, AC_SUBST 'CXX<STD>_CXXFLAGS' to the corresponding flags.
|
||||||
AC_DEFUN([BISON_CXXSTD],
|
AC_DEFUN([BISON_CXXSTD],
|
||||||
[AC_REQUIRE([AC_PROG_CXX])
|
[AC_REQUIRE([AC_PROG_CXX])
|
||||||
|
|||||||
@@ -60,7 +60,8 @@ fi
|
|||||||
: ${CXX11_CXXFLAGS='@CXX11_CXXFLAGS@'}
|
: ${CXX11_CXXFLAGS='@CXX11_CXXFLAGS@'}
|
||||||
: ${CXX14_CXXFLAGS='@CXX14_CXXFLAGS@'}
|
: ${CXX14_CXXFLAGS='@CXX14_CXXFLAGS@'}
|
||||||
: ${CXX17_CXXFLAGS='@CXX17_CXXFLAGS@'}
|
: ${CXX17_CXXFLAGS='@CXX17_CXXFLAGS@'}
|
||||||
: ${CXX2A_CXXFLAGS='@CXX2A_CXXFLAGS@'}
|
: ${CXX20_CXXFLAGS='@CXX20_CXXFLAGS@'}
|
||||||
|
: ${CXX2B_CXXFLAGS='@CXX2B_CXXFLAGS@'}
|
||||||
|
|
||||||
# Whether the compiler supports POSIXLY_CORRECT defined.
|
# Whether the compiler supports POSIXLY_CORRECT defined.
|
||||||
: ${C_COMPILER_POSIXLY_CORRECT='@C_COMPILER_POSIXLY_CORRECT@'}
|
: ${C_COMPILER_POSIXLY_CORRECT='@C_COMPILER_POSIXLY_CORRECT@'}
|
||||||
|
|||||||
@@ -881,7 +881,8 @@ for at_std in '' \
|
|||||||
${CXX11_CXXFLAGS:+"$CXX11_CXXFLAGS"} \
|
${CXX11_CXXFLAGS:+"$CXX11_CXXFLAGS"} \
|
||||||
${CXX14_CXXFLAGS:+"$CXX14_CXXFLAGS"} \
|
${CXX14_CXXFLAGS:+"$CXX14_CXXFLAGS"} \
|
||||||
${CXX17_CXXFLAGS:+"$CXX17_CXXFLAGS"} \
|
${CXX17_CXXFLAGS:+"$CXX17_CXXFLAGS"} \
|
||||||
${CXX2A_CXXFLAGS:+"$CXX2A_CXXFLAGS"}
|
${CXX20_CXXFLAGS:+"$CXX20_CXXFLAGS"} \
|
||||||
|
${CXX2B_CXXFLAGS:+"$CXX2B_CXXFLAGS"}
|
||||||
do
|
do
|
||||||
]AS_ECHO(["======== Testing with C++ standard flags: '$at_cxx_std'"])[
|
]AS_ECHO(["======== Testing with C++ standard flags: '$at_cxx_std'"])[
|
||||||
CXXFLAGS="$at_for_each_std_CXXFLAGS_save $at_std"
|
CXXFLAGS="$at_for_each_std_CXXFLAGS_save $at_std"
|
||||||
@@ -1510,7 +1511,8 @@ m4_define([AT_REQUIRE_CXX_STD],
|
|||||||
[11], [201103],
|
[11], [201103],
|
||||||
[14], [201402],
|
[14], [201402],
|
||||||
[17], [201703],
|
[17], [201703],
|
||||||
[2a], [201709],
|
[20], [202002],
|
||||||
|
[2b], [202100],
|
||||||
[m4_fatal([$0: invalid arguments: $@])])[
|
[m4_fatal([$0: invalid arguments: $@])])[
|
||||||
return 1;
|
return 1;
|
||||||
#else
|
#else
|
||||||
|
|||||||
Reference in New Issue
Block a user