llvm-project/libcxx/docs
Louis Dionne a6e5563dfa [libc++][release] Do not force building the runtimes with -fPIC
There's a lot of history behind this, so here's a summary:

1. I stopped forcing -fPIC when building the runtimes in 30f305efe2,
   before the LLVM 9 release back in 2019.

2. Someone complained that libc++.a couldn't be used in shared libraries
   built without -fPIC (http://llvm.org/PR43604) since the LLVM 9 release.
   This had been caused by my removal of -fPIC when building libc++.a in (1).

3. I suggested two ways of fixing the issue, the first being to force
   -fPIC back unconditionally (http://llvm.org/D104328), and the second
   being to specify that option explicitly when building the LLVM release
   (http://llvm.org/D104327). We converged on the first solution.

4. I landed D104328, which forced building the runtimes with -fPIC.
   This was included in the LLVM 13.0 release.

5. People complained about that and requested that we be able to
   customize this setting (basically we should have done the second
   solution).

This patch makes it such that the LLVM release script will specifically
ask for building with -fPIC using CMAKE_POSITION_INDEPENDENT_CODE,
however by default the runtimes will not force that option onto users.

This patch has the unintended effect that Clang and the LLVM libraries
(not only the runtime ones like libc++) will also be built with -fPIC
in the release. It would be better if we could specify that -fPIC is to
be used only when building the runtimes, however this is left as a
future improvement. The release should probably be using a bootstrapping
build and passing those options to the stage that builds the runtimes
only, see https://reviews.llvm.org/D112748 for that change.

Differential Revision: https://reviews.llvm.org/D110261
2021-12-08 11:34:35 -05:00
..
DesignDocs [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
Helpers [libc++][doc] Use issue labels. 2021-10-15 17:30:33 +02:00
Status Revert "Microsoft's floating-point to_chars powered by Ryu and Ryu Printf" 2021-12-07 00:10:14 -08:00
AddingNewCIJobs.rst [libc++] Add timeout to BuildKite jobs 2021-08-09 15:31:04 -04:00
BuildingLibcxx.rst [runtimes] Remove support for GCC-style 32 bit multilib builds 2021-12-01 12:57:01 -05:00
CMakeLists.txt
Contributing.rst [libc++][NFC] Add link to Discord channel from documentation 2021-09-22 11:13:53 -04:00
FeatureTestMacroTable.rst [libc++] Implement P1272R4 (std::byteswap) 2021-11-22 01:28:18 +01:00
README.txt [libc++] NFC: Add note about how the libcxx website gets updated 2021-07-05 10:25:33 -04:00
ReleaseNotes.rst [libc++][release] Do not force building the runtimes with -fPIC 2021-12-08 11:34:35 -05:00
TestingLibcxx.rst [libc++][Docs] Update benchmark doc wrt monorepo 2021-10-02 07:35:32 +05:30
UsingLibcxx.rst [libc++] Implement C++20's P0476R2: std::bit_cast 2021-09-09 11:05:54 -04:00
conf.py Bump the trunk major version to 14 2021-07-27 21:58:25 -07:00
index.rst [libcxx] [ci] Add CI configurations for MinGW 2021-11-17 10:00:50 +02: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.

The documentation in this directory is published at https://libcxx.llvm.org. It is kept up-to-date
by a build bot: https://lab.llvm.org/buildbot/#/builders/publish-sphinx-docs. If you notice that the
documentation is not updating anymore, please contact one of the maintainers.