On Thu, Apr 27, 2023 at 5:41 AM Jakub Jelinek via Gcc <gcc@gcc.gnu.org> wrote:
>
> On Thu, Apr 27, 2023 at 11:35:23AM +0200, Helmut Zeisel wrote:
> > >Von: "Jakub Jelinek" <ja...@redhat.com>
> > >An: "Helmut Zeisel" <hz2...@gmx.at>
> > >Cc: gcc@gcc.gnu.org
> > >Betreff: Re: GCC 13.1 compile error when using CXXFLAGS=-std=c++20
> > >On Thu, Apr 27, 2023 at 11:09:19AM +0200, Helmut Zeisel via Gcc wrote:
> > >> I compiled GCC 13.1.0 with GCC 12 and had the environment variable 
> > >> CXXFLAGS set to -std=c++20
> > >> This gives the error (both linux and cygin)
> > >>
> > >> gcc-13.1.0/libstdc++-v3/src/c++98/bitmap_allocator.cc:51:23: error: ISO 
> > >> C++17 does not allow dynamic exception specifications
> > >> 51 | _M_get(size_t __sz) throw(std::bad_alloc)
> > >>
> > >> After
> > >>
> > >> unset CXXFLAGS
> > >>
> > >> compilation works
> >
> > >Don't do it.
> >
> > Dont do *what*?
> > export CXXFLAGS=... ?
>
> Include explicit -std= settings in such exported variables, especially when
> building GCC.  Packages should decide themselves in which language version
> they are written in, or if they are written in common subset, they should
> just defer to the compiler default.
> Note, doing that would break building even much older GCC versions.

Maybe configure should catch that?

diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index 0dd550a4b4b..f0d998aad94 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -86,6 +86,9 @@ AH_TEMPLATE(VERSION, [Version number of package])
 # -fno-builtin must be present here so that a non-conflicting form of
 # std::exit can be guessed by AC_PROG_CXX, and used in later tests.

+AS_CASE(["$CXXFLAGS"],
+  [*-std=*], [AC_MSG_ERROR([don't do that])])
+
 save_CXXFLAGS="$CXXFLAGS"
 CXXFLAGS="$CXXFLAGS -fno-builtin"
 AC_PROG_CC

Reply via email to