llvm-project/libcxx/docs
Shoaib Meenai bda3c7df78 [libc++] Make _LIBCPP_TYPE_VIS export members
Summary:
Most classes annotated with _LIBCPP_TYPE_VIS need to have at least some
of their members exported, otherwise we have a lot of link errors when
linking against a libc++ built with hidden visibility. This also makes
_LIBCPP_TYPE_VIS be consistent across platforms, since on Windows it
already exports members.

With this change made, any template methods of a class marked
_LIBCPP_TYPE_VIS will also get default visibility when instantiatied,
which is not desirable for clients of libc++ headers who wish to control
their visibility; this is the same issue as PR30642. Annotate all
problematic methods with an explicit visibility specifier to avoid this.

The problematic methods were found by running bad-visibility-finder [1]
against the libc++ headers after making the _LIBCPP_TYPE_VIS change. The
small methods were marked for inlining; the larger ones hidden.

[1] https://github.com/smeenai/bad-visibility-finder

Reviewers: mclow.lists, EricWF

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D25208

llvm-svn: 296732
2017-03-02 03:22:18 +00:00
..
DesignDocs [libc++] Make _LIBCPP_TYPE_VIS export members 2017-03-02 03:22:18 +00:00
BuildingLibcxx.rst docs: add some documentation for building on Windows 2017-02-10 03:58:20 +00:00
CMakeLists.txt
Makefile.sphinx Attempt to fix Sphinx build 2016-09-16 03:47:53 +00:00
README.txt Remove test commit. 2015-09-05 05:38:50 +00:00
TestingLibcxx.rst Update TestingLibcxx doc to reflect the use_system_cxx_lib flag. Patch from Michael Park 2016-12-23 19:09:14 +00:00
UsingLibcxx.rst Add doc for _LIBCPP_ENABLE_CXX17_DISABLED_AUTO_PTR and make it work under _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES 2017-02-17 03:30:25 +00:00
conf.py Update version to 5.0 2017-01-13 18:29:56 +00:00
index.rst Update all bug URL's to point to https://bugs.llvm.org/... 2017-02-17 08:37:03 +00:00

README.txt

libc++ Documentation
====================

The libc++ documentation is written using the Sphinx documentation generator. It is
currently tested with Sphinx 1.1.3.

To build the documents into html configure libc++ with the following cmake options:

  * -DLLVM_ENABLE_SPHINX=ON
  * -DLIBCXX_INCLUDE_DOCS=ON

After configuring libc++ with these options the make rule `docs-libcxx-html`
should be available.