This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Change valid arguments for --with-default-libstdcxx-abi


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 <jwakely@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>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]