On 01/07/15 14:38 +0100, Jonathan Wakely wrote:
I intend to commit this to trunk and the gcc-5-branch either today or
tomorrow.
I made a mistake in using "c++98" and "c++11" as the valid arguments
for the ABI configure option, because it confuses people into thinking
that it is affected by, or affects, the -std=c++11 option. In fact
the ABI mode and -std standard mode are independent.
The inline namespace is called __cxx11, the ABI-tag is "cxx11" and the
controlling macro is _GLIBCXX_USE_CXX11_ABI so I think referring to
the ABI as "cxx11" might help distinguish it from the -std=c++11 mode.
This will require distros that are using the
--with-default-libstdcxx-abi option to change their build scripts,
because using c++98 (or similar) now gives an error:
checking for default std::string ABI to use... configure: error: Supported arguments for
--with-default-libstdcxx-abi have changed, use "cxx11" or "cxx98"
Makefile:11390: recipe for target 'configure-target-libstdc++-v3' failed
Richi didn't like the proposed new options, so instead I'm calling
them "new" and "gcc4-compatible".
I'm committing this to trunk and gcc-5-branch.
commit 17e0412726bd01ebde66570e5123b8e660a9098e
Author: Jonathan Wakely <jwak...@redhat.com>
Date: Wed Jul 1 14:22:05 2015 +0100
* acinclude.m4 (GLIBCXX_DEFAULT_ABI): Change valid arguments for
--with-default-libstdcxx-abi
* configure: Regenerate.
* doc/xml/manual/configure.xml: Document valid arguments.
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 8340572..11f48f9 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -3792,7 +3792,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI], [
fi
if test x"$enable_libstdcxx_dual_abi" != xyes; then
AC_MSG_NOTICE([dual ABI is disabled])
- default_libstdcxx_abi="c++98"
+ default_libstdcxx_abi="gcc4-compatible"
fi
GLIBCXX_CONDITIONAL(ENABLE_DUAL_ABI, test $enable_libstdcxx_dual_abi = yes)
])
@@ -3800,7 +3800,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI], [
dnl
dnl Check to see which ABI should be enabled by default.
dnl
-dnl --with-default-libstdcxx-abi={c++98,c++11}
+dnl --with-default-libstdcxx-abi={gcc4-compatible,new}
dnl
dnl Defines:
dnl _GLIBCXX_USE_CXX11_ABI (always defined, either to 1 or 0)
@@ -3812,14 +3812,16 @@ AC_DEFUN([GLIBCXX_DEFAULT_ABI], [
AS_HELP_STRING([--with-default-libstdcxx-abi],
[set the std::string ABI to use by default]),
[case "$withval" in
- c++98|gnu++98|c++03|gnu++03) default_libstdcxx_abi="c++98" ;;
- c++1?|gnu++1?) default_libstdcxx_abi="c++11" ;;
- *) AC_MSG_ERROR([Invalid argument for --with-default-libstdcxx-abi]) ;;
- esac],
- [default_libstdcxx_abi="c++11"])
+ gcc4-compatible) default_libstdcxx_abi="gcc4-compatible" ;;
+ new|cxx11) default_libstdcxx_abi="new" ;;
+ c++*|gnu++*) AC_MSG_ERROR([Supported arguments for --with-default-libstdcxx-abi have changed, use "new" or "gcc4-compatible"]) ;;
+ *) AC_MSG_ERROR([Invalid argument for --with-default-libstdcxx-abi]) ;;
+ esac
+ ],
+ [default_libstdcxx_abi="new"])
AC_MSG_RESULT(${default_libstdcxx_abi})
fi
- if test $default_libstdcxx_abi = "c++11"; then
+ if test $default_libstdcxx_abi = "new"; then
glibcxx_cxx11_abi=1
glibcxx_cxx98_abi=0
else
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 1b99c06..e9521d6 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -78180,7 +78180,7 @@ fi
if test x"$enable_libstdcxx_dual_abi" != xyes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: dual ABI is disabled" >&5
$as_echo "$as_me: dual ABI is disabled" >&6;}
- default_libstdcxx_abi="c++98"
+ default_libstdcxx_abi="gcc4-compatible"
fi
@@ -78192,18 +78192,20 @@ $as_echo_n "checking for default std::string ABI to use... " >&6; }
# Check whether --with-default-libstdcxx-abi was given.
if test "${with_default_libstdcxx_abi+set}" = set; then :
withval=$with_default_libstdcxx_abi; case "$withval" in
- c++98|gnu++98|c++03|gnu++03) default_libstdcxx_abi="c++98" ;;
- c++1?|gnu++1?) default_libstdcxx_abi="c++11" ;;
- *) as_fn_error "Invalid argument for --with-default-libstdcxx-abi" "$LINENO" 5 ;;
+ gcc4-compatible) default_libstdcxx_abi="gcc4-compatible" ;;
+ new|cxx11) default_libstdcxx_abi="new" ;;
+ c++*|gnu++*) as_fn_error "Supported arguments for --with-default-libstdcxx-abi have changed, use \"new\" or \"gcc4-compatible\"" "$LINENO" 5 ;;
+ *) as_fn_error "Invalid argument for --with-default-libstdcxx-abi" "$LINENO" 5 ;;
esac
+
else
- default_libstdcxx_abi="c++11"
+ default_libstdcxx_abi="new"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${default_libstdcxx_abi}" >&5
$as_echo "${default_libstdcxx_abi}" >&6; }
fi
- if test $default_libstdcxx_abi = "c++11"; then
+ if test $default_libstdcxx_abi = "new"; then
glibcxx_cxx11_abi=1
glibcxx_cxx98_abi=0
else
diff --git a/libstdc++-v3/doc/xml/manual/configure.xml b/libstdc++-v3/doc/xml/manual/configure.xml
index 9ba9c1a..a76b80c 100644
--- a/libstdc++-v3/doc/xml/manual/configure.xml
+++ b/libstdc++-v3/doc/xml/manual/configure.xml
@@ -389,9 +389,10 @@
<para>
Set the default value for the <symbol>_GLIBCXX_USE_CXX11_ABI</symbol>
macro (see <xref linkend="manual.intro.using.macros"/>).
- The default is <option>OPTION=c++11</option> which sets the macro to
+ The default is <option>OPTION=new</option> which sets the macro to
<literal>1</literal>,
- use <option>OPTION=c++98</option> to set it to <literal>0</literal>.
+ use <option>OPTION=gcc4-compatible</option> to set it to
+ <literal>0</literal>.
This option does not change the library ABI.
</para>
</listitem></varlistentry>