llvm-project/libcxx/src
Eric Fiselier 998a5c8831 Implement <filesystem>
This patch implements the <filesystem> header and uses that
to provide <experimental/filesystem>.

Unlike other standard headers, the symbols needed for <filesystem>
have not yet been placed in libc++.so. Instead they live in the
new libc++fs.a library. Users of filesystem are required to link this
library. (Also note that libc++experimental no longer contains the
definition of <experimental/filesystem>, which now requires linking libc++fs).

The reason for keeping <filesystem> out of the dylib for now is that
it's still somewhat experimental, and the possibility of requiring an
ABI breaking change is very real. In the future the symbols will likely
be moved into the dylib, or the dylib will be made to link libc++fs automagically).

Note that moving the symbols out of libc++experimental may break user builds
until they update to -lc++fs. This should be OK, because the experimental
library provides no stability guarantees. However, I plan on looking into
ways we can force libc++experimental to automagically link libc++fs.

In order to use a single implementation and set of tests for <filesystem>, it
has been placed in a special `__fs` namespace. This namespace is inline in
C++17 onward, but not before that. As such implementation is available
in C++11 onward, but no filesystem namespace is present "directly", and
as such name conflicts shouldn't occur in C++11 or C++14.

llvm-svn: 338093
2018-07-27 03:07:09 +00:00
..
experimental Implement <filesystem> 2018-07-27 03:07:09 +00:00
filesystem Implement <filesystem> 2018-07-27 03:07:09 +00:00
include [libc++] Use __int128_t to represent file_time_type. 2018-07-25 20:51:49 +00:00
support [windows] Fix warning about comparing ints of different signs 2018-07-25 18:24:23 +00:00
algorithm.cpp Mark libc++ internal globals with _LIBCPP_SAFE_STATIC. 2016-09-28 22:08:13 +00:00
any.cpp Put the exception classes for experimental::optional and experimental::any back in the dylib for binary compatibility 2018-02-01 18:45:57 +00:00
bind.cpp Implement LWG 2488 - Make the placeholders constexpr. 2016-06-26 21:01:34 +00:00
chrono.cpp [libc++] Use __int128_t to represent file_time_type. 2018-07-25 20:51:49 +00:00
condition_variable.cpp [Libc++] Use #pragma push_macro/pop_macro to better handle min/max on Windows 2017-05-31 22:07:49 +00:00
debug.cpp Fix debug mode build w/o exceptions 2016-12-28 05:20:27 +00:00
exception.cpp [libc++] Replace __sync_* functions with __libcpp_atomic_* functions 2017-09-19 23:18:03 +00:00
functional.cpp [libc++] Add a key function for bad_function_call 2017-03-28 19:33:31 +00:00
future.cpp Make it possible to build a no-exceptions variant of libcxx. 2015-11-10 11:41:22 +00:00
hash.cpp
ios.cpp [Libc++] Use #pragma push_macro/pop_macro to better handle min/max on Windows 2017-05-31 22:07:49 +00:00
iostream.cpp [libc++] Don't hardcode namespace in manual mangling 2017-08-07 19:59:58 +00:00
locale.cpp Fix locale test data for GLIBC 2.27 and newer. 2018-04-04 04:00:14 +00:00
memory.cpp Fix incorrect usage of __libcpp_mutex_trylock. Patch from Andrey Khalyavin 2017-05-04 07:45:09 +00:00
mutex.cpp [Libc++] Use #pragma push_macro/pop_macro to better handle min/max on Windows 2017-05-31 22:07:49 +00:00
new.cpp [libc++] Support Microsoft ABI without vcruntime headers 2017-10-09 19:25:17 +00:00
optional.cpp Put the exception classes for experimental::optional and experimental::any back in the dylib for binary compatibility 2018-02-01 18:45:57 +00:00
random.cpp [libcxx] Support getentropy as a source of randomness for std::random_device 2017-12-01 06:34:33 +00:00
regex.cpp [libcxx] Remove pragmas that were needed to suppress warnings produced 2016-01-28 06:13:36 +00:00
shared_mutex.cpp Implement N4508: shared_mutex. Reviewed as http://reviews.llvm.org/D10480 2015-06-30 14:04:14 +00:00
stdexcept.cpp Remove <__refstring> header; Move it into source directory. 2017-07-12 01:38:35 +00:00
string.cpp [libc++] Refactor Windows support headers. 2017-05-10 20:57:45 +00:00
strstream.cpp Make pbump (internally) handle sizes bigger than MAX_INT. Fixes PR#33725 - thanks to Jonathan Wakely for the report 2017-09-12 15:00:43 +00:00
system_error.cpp Rework libcxx strerror_r handling. 2017-07-19 21:48:49 +00:00
thread.cpp Fix Libc++ build with MinGW64 2017-05-31 22:14:05 +00:00
typeinfo.cpp libcxx: Use vcruntime declarations for typeinfo on Windows. 2018-01-26 01:22:17 +00:00
utility.cpp
valarray.cpp
variant.cpp Implement C++17 <variant>. Patch from Michael Park! 2016-12-02 23:00:05 +00:00
vector.cpp Move external instantiation for __vector_base_common to vector.cpp 2017-06-15 01:53:12 +00:00