Enable dual ABI for Filesystem library
authorJonathan Wakely <jwakely@redhat.com>
Fri, 2 Oct 2015 23:21:41 +0000 (00:21 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 2 Oct 2015 23:21:41 +0000 (00:21 +0100)
* src/filesystem/Makefile.am: Add cxx11_abi_sources.
* src/filesystem/Makefile.in: Regenerate.
* src/filesystem/cow-dir.cc: New.
* src/filesystem/cow-ops.cc: New.
* src/filesystem/cow-path.cc: New.
* src/filesystem/dir.cc: Define macro for new ABI.
* src/filesystem/ops.cc: Likewise.
* src/filesystem/path.cc: Likewise.

From-SVN: r228437

libstdc++-v3/ChangeLog
libstdc++-v3/src/filesystem/Makefile.am
libstdc++-v3/src/filesystem/Makefile.in
libstdc++-v3/src/filesystem/cow-dir.cc [new file with mode: 0644]
libstdc++-v3/src/filesystem/cow-ops.cc [new file with mode: 0644]
libstdc++-v3/src/filesystem/cow-path.cc [new file with mode: 0644]
libstdc++-v3/src/filesystem/dir.cc
libstdc++-v3/src/filesystem/ops.cc
libstdc++-v3/src/filesystem/path.cc

index fd05a65f009c13d0cb35efe618e56770f930bf9c..c70a3a0cc49aa5926dd14f793290825b539361fa 100644 (file)
@@ -1,3 +1,14 @@
+2015-10-03  Jonathan Wakely  <jwakely@redhat.com>
+
+       * src/filesystem/Makefile.am: Add cxx11_abi_sources.
+       * src/filesystem/Makefile.in: Regenerate.
+       * src/filesystem/cow-dir.cc: New.
+       * src/filesystem/cow-ops.cc: New.
+       * src/filesystem/cow-path.cc: New.
+       * src/filesystem/dir.cc: Define macro for new ABI.
+       * src/filesystem/ops.cc: Likewise.
+       * src/filesystem/path.cc: Likewise.
+
 2015-10-02  Jonathan Wakely  <jwakely@redhat.com>
 
        * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
index 128cba9f52ad3a89d9f2c3a41c216dec229b7d6e..8e332ec4b01da07afba3d937d698bf91b305f698 100644 (file)
@@ -26,10 +26,20 @@ toolexeclib_LTLIBRARIES = libstdc++fs.la
 
 headers =
 
+if ENABLE_DUAL_ABI
+cxx11_abi_sources = \
+       cow-dir.cc \
+       cow-ops.cc \
+       cow-path.cc
+else
+cxx11_abi_sources =
+endif
+
 sources = \
        dir.cc \
        ops.cc \
-       path.cc
+       path.cc \
+       ${cxx11_abi_sources}
 
 # vpath % $(top_srcdir)/src/filesystem
 
index a315bb639989c87f8be87b8504ffc4ce50db365c..bbc45a873104bcbda950c8e5a21d49439f557593 100644 (file)
@@ -112,8 +112,10 @@ am__uninstall_files_from_dir = { \
 am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
 LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
 libstdc__fs_la_LIBADD =
-am__objects_1 = dir.lo ops.lo path.lo
-am_libstdc__fs_la_OBJECTS = $(am__objects_1)
+@ENABLE_DUAL_ABI_TRUE@am__objects_1 = cow-dir.lo cow-ops.lo \
+@ENABLE_DUAL_ABI_TRUE@ cow-path.lo
+am__objects_2 = dir.lo ops.lo path.lo $(am__objects_1)
+am_libstdc__fs_la_OBJECTS = $(am__objects_2)
 libstdc__fs_la_OBJECTS = $(am_libstdc__fs_la_OBJECTS)
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp =
@@ -353,10 +355,17 @@ WARN_CXXFLAGS = \
 AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS)
 toolexeclib_LTLIBRARIES = libstdc++fs.la
 headers = 
+@ENABLE_DUAL_ABI_FALSE@cxx11_abi_sources = 
+@ENABLE_DUAL_ABI_TRUE@cxx11_abi_sources = \
+@ENABLE_DUAL_ABI_TRUE@ cow-dir.cc \
+@ENABLE_DUAL_ABI_TRUE@ cow-ops.cc \
+@ENABLE_DUAL_ABI_TRUE@ cow-path.cc
+
 sources = \
        dir.cc \
        ops.cc \
-       path.cc
+       path.cc \
+       ${cxx11_abi_sources}
 
 
 # vpath % $(top_srcdir)/src/filesystem
diff --git a/libstdc++-v3/src/filesystem/cow-dir.cc b/libstdc++-v3/src/filesystem/cow-dir.cc
new file mode 100644 (file)
index 0000000..b4175ef
--- /dev/null
@@ -0,0 +1,26 @@
+// Class filesystem::directory_entry etc. -*- C++ -*-
+
+// Copyright (C) 2015 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#define _GLIBCXX_USE_CXX11_ABI 0
+#include "dir.cc"
diff --git a/libstdc++-v3/src/filesystem/cow-ops.cc b/libstdc++-v3/src/filesystem/cow-ops.cc
new file mode 100644 (file)
index 0000000..6096dec
--- /dev/null
@@ -0,0 +1,26 @@
+// Filesystem operations -*- C++ -*-
+
+// Copyright (C) 2015 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#define _GLIBCXX_USE_CXX11_ABI 0
+#include "ops.cc"
diff --git a/libstdc++-v3/src/filesystem/cow-path.cc b/libstdc++-v3/src/filesystem/cow-path.cc
new file mode 100644 (file)
index 0000000..386df59
--- /dev/null
@@ -0,0 +1,26 @@
+// Class filesystem::path -*- C++ -*-
+
+// Copyright (C) 2015 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#define _GLIBCXX_USE_CXX11_ABI 0
+#include "path.cc"
index 33280ecdb07165e9c7ac295eb6e74fb704524657..63c10e716dbf0aaa3d1394d89ebbbfa8e28d6c8c 100644 (file)
 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 // <http://www.gnu.org/licenses/>.
 
+#ifndef _GLIBCXX_USE_CXX11_ABI
+# define _GLIBCXX_USE_CXX11_ABI 1
+#endif
+
 #include <experimental/filesystem>
 #include <utility>
 #include <stack>
index 7b261fb93aae09d237584a0e62b1f63ff71ff6ca..815256096984c0b9f7f89d81ba52b9a6ce05b089 100644 (file)
 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 // <http://www.gnu.org/licenses/>.
 
+#ifndef _GLIBCXX_USE_CXX11_ABI
+# define _GLIBCXX_USE_CXX11_ABI 1
+#endif
+
 #include <experimental/filesystem>
 #include <functional>
 #include <stack>
index e85c9fccd9a746f1fc5f92315f3dc6852ddfbf2f..e9fe465d174a29095cf9353df47e8945a61387ef 100644 (file)
 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 // <http://www.gnu.org/licenses/>.
 
+#ifndef _GLIBCXX_USE_CXX11_ABI
+# define _GLIBCXX_USE_CXX11_ABI 1
+#endif
+
 #include <experimental/filesystem>
 
 using std::experimental::filesystem::path;