summaryrefslogtreecommitdiffstats
path: root/libcxx/include/module.modulemap
Commit message (Collapse)AuthorAgeFilesLines
* [libc++] Take 2: Integrate the PSTL into libc++Louis Dionne2019-08-051-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This commit allows specifying LIBCXX_ENABLE_PARALLEL_ALGORITHMS when configuring libc++ in CMake. When that option is enabled, libc++ will assume that the PSTL can be found somewhere on the CMake module path, and it will provide the C++17 parallel algorithms based on the PSTL (that is assumed to be available). The commit also adds support for running the PSTL tests as part of the libc++ test suite. The first attempt to commit this failed because it exposed a bug in the tests for modules. Now that this has been fixed, it should be safe to commit this. Reviewers: EricWF Subscribers: mgorny, christof, jkorous, dexonsmith, libcxx-commits, mclow.lists, EricWF Tags: #libc Differential Revision: https://reviews.llvm.org/D60480 llvm-svn: 367903
* Revert "[libc++] Integrate the PSTL into libc++"Louis Dionne2019-07-191-4/+0
| | | | | | | This reverts r366593, which caused unforeseen breakage on the build bots. I'm reverting until the problems have been figured out and fixed. llvm-svn: 366603
* [libc++] Integrate the PSTL into libc++Louis Dionne2019-07-191-0/+4
| | | | | | | | | | | | | | | | | | | | | | Summary: This commit allows specifying LIBCXX_ENABLE_PARALLEL_ALGORITHMS when configuring libc++ in CMake. When that option is enabled, libc++ will assume that the PSTL can be found somewhere on the CMake module path, and it will provide the C++17 parallel algorithms based on the PSTL (that is assumed to be available). The commit also adds support for running the PSTL tests as part of the libc++ test suite. Reviewers: rodgert, EricWF Subscribers: mgorny, christof, jkorous, dexonsmith, libcxx-commits, mclow.lists, EricWF Tags: #libc Differential Revision: https://reviews.llvm.org/D60480 llvm-svn: 366593
* Revert "[coroutines] Add std::experimental::task<T> type"Brian Gesiak2019-03-261-4/+0
| | | | | | | | This revision is causing build and test failures, such as http://lab.llvm.org:8011/builders/libcxx-libcxxabi-libunwind-armv8-linux/builds/648/steps/test.libcxx/logs/stdio, so I'll revert it. llvm-svn: 357023
* [coroutines] Add std::experimental::task<T> typeBrian Gesiak2019-03-261-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Adds the coroutine `std::experimental::task<T>` type described in proposal P1056R0. See https://wg21.link/P1056R0. This implementation allows customization of the allocator used to allocate the coroutine frame by passing std::allocator_arg as the first argument, followed by the allocator to use. This supports co_awaiting the same task multiple times. The second and subsequent times it returns a reference to the already-computed value. This diff also adds some implementations of other utilities that have potential for standardization as helpers within the test/... area: - `sync_wait(awaitable)` - See P1171R0 - `manual_reset_event` Move the definition of the __aligned_allocation_size helper function from <experimental/memory_resource> to <experimental/__memory> so it can be more widely used without pulling in memory_resource. Outstanding work: - Use C++14 keywords directly rather than macro versions eg. use `noexcept` instead of `_NOEXCEPT`). - Add support for overaligned coroutine frames. This may need wording in the Coroutines TS to support passing the extra `std::align_val_t`. - Eliminate use of `if constexpr` if we want it to compile under C++14. Patch by @lewissbaker (Lewis Baker). llvm-svn: 357010
* Add fenv.h headerEric Fiselier2019-02-111-1/+4
| | | | | | | | | | | | | | | | | Summary: Some implementations of fenv.h use macros to define the functions they provide. This can cause problems when `std::fegetround()` is spelled in source. This patch adds a `fenv.h` header to libc++ for the sole purpose of turning those macros into real functions. Reviewers: rsmith, mclow.lists, ldionne Reviewed By: rsmith Subscribers: mgorny, christof, libcxx-commits Differential Revision: https://reviews.llvm.org/D57729 llvm-svn: 353767
* [libcxx] Remove dynarrayLouis Dionne2018-11-281-4/+0
| | | | | | | | | | | | | | Summary: std::dynarray had been proposed for C++14, but it was pulled out from C++14 and there are no plans to standardize it anymore. Reviewers: mclow.lists, EricWF Subscribers: mgorny, christof, jkorous, dexonsmith, arphaman, libcxx-commits Differential Revision: https://reviews.llvm.org/D54801 llvm-svn: 347783
* Recommit r339943 - Establish the <bit> header. NFC yet. Reviewed as ↵Marshall Clow2018-08-171-0/+4
| | | | | | https://reviews.llvm.org/D50815 - with a fix for the sanitizer bots llvm-svn: 340045
* Revert "Establish the <bit> header. NFC yet. Reviewed as ↵Vitaly Buka2018-08-161-4/+0
| | | | | | | | | | https://reviews.llvm.org/D50815" Breaks build on sanitizer bots. This reverts commit r339943. llvm-svn: 339971
* Establish the <bit> header. NFC yet. Reviewed as https://reviews.llvm.org/D50815Marshall Clow2018-08-161-0/+4
| | | | llvm-svn: 339943
* [libc++][C++17] Elementary string conversions for integral typesZhihao Yuan2018-08-011-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: Major QoI considerations: - The facility is backported to C++14, same as libstdc++. - Efforts have been made to minimize the header dependencies. - The design is friendly to the uses of MSVC intrinsics (`__emulu`, `_umul128`, `_BitScanForward`, `_BitScanForward64`) but not implemented; future contributions are welcome. Thanks to Milo Yip for contributing the implementation of `__u64toa` and `__u32toa`. References: https://wg21.link/p0067r5 https://wg21.link/p0682r1 Reviewers: mclow.lists, EricWF Reviewed By: mclow.lists Subscribers: ldionne, Quuxplusone, christof, mgorny, cfe-commits Differential Revision: https://reviews.llvm.org/D41458 llvm-svn: 338479
* First half of C++17's splicing maps and setsErik Pilkington2018-08-011-0/+1
| | | | | | | | | | | | | This commit adds a node handle type, (located in __node_handle), and adds extract() and insert() members to all map and set types, as well as their implementations in __tree and __hash_table. The second half of this feature is adding merge() members, which splice nodes in bulk from one container into another. This will be committed in a follow-up. Differential revision: https://reviews.llvm.org/D46845 llvm-svn: 338472
* Implement <filesystem>Eric Fiselier2018-07-271-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Implement <span>. Reviewed as https://reviews.llvm.org/D49338Marshall Clow2018-07-241-0/+4
| | | | llvm-svn: 337804
* [libc++] Lift std::errc into a separated headerZhihao Yuan2018-07-031-0/+1
| | | | | | | | | | | | | | Summary: This is needed to implement `<charconv>`, otherwise `<charconv>` would need to include `<system_error>`, which pulls in `<string>` -- a header which the `<charconv>` proposal intends to keep away from. Reviewers: mclow.lists, EricWF Reviewed By: mclow.lists Subscribers: christof, cfe-commits Differential Revision: https://reviews.llvm.org/D41347 llvm-svn: 336164
* Re-commit r330627 "[libcxx] implement <experimental/simd> declarations based ↵Tim Shen2018-04-231-0/+4
| | | | | | | | | | | | on P0214R7." There are 3 changes: * Renamed genertor.pass.cpp to generator.pass.cpp * Removed nothing_to_do.pass.cpp * Mark GCC 4.9 as UNSUPPORTED for the test files that have negative narrowing conversion SFINAE test (see GCC PR63723). llvm-svn: 330655
* Revert "[libcxx] implement <experimental/simd> declarations based on P0214R7."Tim Shen2018-04-231-4/+0
| | | | | | | | This reverts commit r330627. This causes several bots to freak out. llvm-svn: 330636
* [libcxx] implement <experimental/simd> declarations based on P0214R7.Tim Shen2018-04-231-0/+4
| | | | | | | | | | | | | | | Summary: The patch includes all declarations, and also implements the following features: * ABI. * narrowing-conversion related SFIANE, including simd<> ctors and (static_)simd_cast. Reviewers: mclow.lists, EricWF Subscribers: lichray, sanjoy, MaskRay, cfe-commits Differential Revision: https://reviews.llvm.org/D41148 llvm-svn: 330627
* Implement P0768r1: Library support for the Spaceship Operator.Eric Fiselier2018-04-061-0/+4
| | | | | | | | | | | | this patch adds the <compare> header and implements all of it except for [comp.alg]. As I understand it, the header is needed by the compiler in when implementing the semantics of operator<=>. For that reason I feel it's important to land this header early, despite all compilers lacking support. llvm-svn: 329460
* Touch up tests for new <version> header; fix module.modulemap.Eric Fiselier2018-04-041-0/+4
| | | | | | | | | | | This patch does some housekeeping for the new <version> header. It adds it to the module.modulemap, and the double_include.sh.cpp test. Additionally it corrects the // UNSUPPORTED options for the libc++ specific test. The header needs to compile under C++03 to support modules, and it should compile under all available compilers. llvm-svn: 329144
* Remove more of the std::experimental bits that are now in std::. All the _v ↵Marshall Clow2018-02-061-16/+0
| | | | | | type aliases, conjunction/disjunction, apply, etc. See https://libcxx.llvm.org/TS_deprecation.html llvm-svn: 324423
* Remove <experimental/string_view>; use <string_view> instead. See ↵Marshall Clow2018-02-051-4/+0
| | | | | | https://libcxx.llvm.org/TS_deprecation.html llvm-svn: 324290
* Remove <experimental/numeric>; use <numeric> instead. See ↵Marshall Clow2018-02-011-4/+0
| | | | | | https://libcxx.llvm.org/TS_deprecation.html llvm-svn: 323975
* Remove <experimental/any>; use <any> instead. See ↵Marshall Clow2018-02-011-4/+0
| | | | | | https://libcxx.llvm.org/TS_deprecation.html llvm-svn: 323972
* Remove <experimental/optional>; use <optional> instead. See ↵Marshall Clow2018-02-011-4/+0
| | | | | | https://libcxx.llvm.org/TS_deprecation.html llvm-svn: 323971
* [Libc++] Use #pragma push_macro/pop_macro to better handle min/max on WindowsEric Fiselier2017-05-311-1/+1
| | | | | | | | | | | | | | | | Summary: This patch improves how libc++ handles min/max macros within the headers. Previously libc++ would undef them and emit a warning. This patch changes libc++ to use `#pragma push_macro` to save the macro before undefining it, and `#pragma pop_macro` to restore the macros and the end of the header. Reviewers: mclow.lists, bcraig, compnerd, EricWF Reviewed By: EricWF Subscribers: cfe-commits, krytarowski Differential Revision: https://reviews.llvm.org/D33080 llvm-svn: 304357
* Add missing 'requires coroutines' to module mapEric Fiselier2017-05-291-0/+1
| | | | llvm-svn: 304180
* Re-add <experimental/coroutine> to the module map.Eric Fiselier2017-05-251-6/+4
| | | | | | | | | | | | | The original issues were caused because <experimental/coroutine> didn't correctly #ifdef out enough of the header, which caused incomplete types to be used. This patch fixes the `#if defined(__cpp_coroutines)` guard and re-adds the headers to the module map. It also uglifies some incorrectly non-reserved names. llvm-svn: 303936
* Remove <experimental/coroutine> from the module map for now. It doesn't work ↵Eric Fiselier2017-05-251-4/+6
| | | | | | unless modules are enabled llvm-svn: 303838
* Add <experimental/coroutine>Eric Fiselier2017-05-251-0/+4
| | | | | | | This patch adds the library portions of the coroutines PDTS, which should now be supported by Clang. llvm-svn: 303836
* [libc++] Tolerate presence of __deallocate macroEric Fiselier2017-01-071-1/+0
| | | | | | | | | | | | | | | Summary: On Windows the identifier `__deallocate` is defined as a macro by one of the Windows system headers. Previously libc++ worked around this by `#undef __deallocate` and generating a warning. However this causes the WIN32 version of `__threading_support` to always generate a warning on Windows. This is not OK. This patch renames all usages of `__deallocate` internally as to not conflict with the macro. Reviewers: mclow.lists, majnemer, rnk, rsmith, smeenai, compnerd Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D28426 llvm-svn: 291332
* Fix _LIBCPP_VERSION tests with modules on DarwinEric Fiselier2016-12-081-5/+8
| | | | llvm-svn: 289028
* Revert r288787: Add missing stdbool.h module.Eric Fiselier2016-12-061-4/+1
| | | | | | | | Reverting because I didn't properly test this patch. Although it's probably correct to add a stdbool_h module I thought the change fixed more than it did. I'll re-commit after more investigation. llvm-svn: 288789
* Add missing stdbool.h module. The test suite now passes on OS X with modulesEric Fiselier2016-12-061-1/+4
| | | | llvm-svn: 288787
* Fix stdio module build on OS XEric Fiselier2016-12-061-0/+2
| | | | llvm-svn: 288778
* Fix C++03 modules buildEric Fiselier2016-12-061-0/+2
| | | | llvm-svn: 288755
* Add module definitions for <experimental/foo> headersEric Fiselier2016-12-051-0/+116
| | | | llvm-svn: 288735
* Add module definitions for string_viewEric Fiselier2016-12-051-0/+9
| | | | llvm-svn: 288733
* Add modules for any/optional/variantEric Fiselier2016-12-051-0/+12
| | | | llvm-svn: 288730
* Adjust libc++ test infastructure to fully support modulesEric Fiselier2016-12-051-1/+1
| | | | | | | | | | | | This patch overhalls the libc++ test format/configuration in order to fully support modules. By "fully support" I mean get almost all of the tests passing. The main hurdle for doing this is handling tests that `#define _LIBCPP_FOO` macros to test a different configuration. This patch deals with these tests in the following ways: 1. For tests that define single `_LIBCPP_ABI_FOO` macros have been annotated with `// MODULES_DEFINES: _LIBCPP_ABI_FOO`. This allows the test suite to define the macro on the command line so it uses a different set of modules. 2. Tests for libc++'s debug mode (which define custom `_LIBCPP_ASSERT`) are automatically detected by the test suite and are compiled and run with modules disabled. This patch also cleans up how the `CXXCompiler` helper class handles enabling/disabling language features. NOTE: This patch uses `LIT` features which were only committed to LLVM today. If this patch breaks running the libc++ tests you probably need to update LLVM. llvm-svn: 288728
* Allow libc++ to use modules in C++03.Eric Fiselier2016-11-221-1/+0
| | | | | | | | | Libc++ internal uses <atomic> in C++03 code but the module map forbids its use. This causes the libc++ 'std' module to fail to build in C++03. This patch removes the requirement to fix this issue. llvm-svn: 287693
* Attempt to fix stdint/cstdint modules try 2Eric Fiselier2016-11-221-1/+8
| | | | llvm-svn: 287690
* Cleanup module.modulemapEric Fiselier2016-11-221-369/+1
| | | | llvm-svn: 287687
* Revert r287435 because of OS X test failuresEric Fiselier2016-11-211-5/+369
| | | | llvm-svn: 287531
* Fix stdint/cstdint modulesEric Fiselier2016-11-191-369/+5
| | | | llvm-svn: 287435
* [libcxx] Implement locale.h to fix modules buildEric Fiselier2016-11-191-1/+7
| | | | | | | | | | | | | | | | | | Summary: Because `locale.h` isn't part of the libc++ modules the class definitions it provides are exported as part of `__locale` (since it happens to be build first). This breaks `<clocale>` which exports `std::lconv` without including `<__locale>`. This patch implements `locale.h` to fix this issue, it also adds support for testing libc++ with modules. Reviewers: mclow.lists, rsmith, EricWF Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D26826 llvm-svn: 287413
* [ModuleMap] Add more module entries to cover some non modular headersBruno Cardoso Lopes2016-10-211-0/+342
| | | | | | | | | | These modules are necessary on Darwin to allow modules with 'no_undeclared_includes' (introduced in clang r284797) to work properly while using libc++ headers. Patch extracted from a suggested module.modulemap from Richard Smith! llvm-svn: 284801
* Remove __config module to avoid #include cycle when libc headers include ↵Richard Smith2015-10-131-1/+5
| | | | | | libc++'s <foo.h> headers. llvm-svn: 250236
* Handle function name conflicts in _LIBCPP_MSVCRT modeSaleem Abdulrasool2015-02-131-0/+1
| | | | | | | | | | Visual Studio's SAL extension uses a macro named __deallocate. This macro is used pervasively, and gets included through various different ways. This conflicts with the similarly named interfaces in libc++. Introduce a undef header similar to __undef_min_max to handle this. This fixes a number of errors due to the macro replacing the function name. llvm-svn: 229162
* Mark module atomic as cplusplus11.Nico Weber2014-09-241-0/+1
| | | | | | | | | | | | | With clang, the header atomic requires __has_feature(cxx_atomic), which is only true in c++11 mode. Because of this, when using modules in c++98 with libc++ compilation of the std module would fail without this change, PR21002. (With gcc, only gcc4.7+ is needed, no c++11. But gcc doesn't have modules yet, and the module.modulemap language can't express things like "this is only required if the compiler is clang". If gcc gets module support, we'd probably have a module.modulemap file for each compiler that libc++ supports?) llvm-svn: 218372
OpenPOWER on IntegriCloud