summaryrefslogtreecommitdiffstats
path: root/lib/libcxx/docs/DesignDocs/CapturingConfigInfo.rst
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libcxx/docs/DesignDocs/CapturingConfigInfo.rst')
-rw-r--r--lib/libcxx/docs/DesignDocs/CapturingConfigInfo.rst88
1 files changed, 0 insertions, 88 deletions
diff --git a/lib/libcxx/docs/DesignDocs/CapturingConfigInfo.rst b/lib/libcxx/docs/DesignDocs/CapturingConfigInfo.rst
deleted file mode 100644
index 29156bff8bc..00000000000
--- a/lib/libcxx/docs/DesignDocs/CapturingConfigInfo.rst
+++ /dev/null
@@ -1,88 +0,0 @@
-=======================================================
-Capturing configuration information during installation
-=======================================================
-
-.. contents::
- :local:
-
-The Problem
-===========
-
-Currently the libc++ supports building the library with a number of different
-configuration options. Unfortunately all of that configuration information is
-lost when libc++ is installed. In order to support "persistent"
-configurations libc++ needs a mechanism to capture the configuration options
-in the INSTALLED headers.
-
-
-Design Goals
-============
-
-* The solution should not INSTALL any additional headers. We don't want an extra
- #include slowing everybody down.
-
-* The solution should not unduly affect libc++ developers. The problem is limited
- to installed versions of libc++ and the solution should be as well.
-
-* The solution should not modify any existing headers EXCEPT during installation.
- It makes developers lives harder if they have to regenerate the libc++ headers
- every time they are modified.
-
-* The solution should not make any of the libc++ headers dependent on
- files generated by the build system. The headers should be able to compile
- out of the box without any modification.
-
-* The solution should not have ANY effect on users who don't need special
- configuration options. The vast majority of users will never need this so it
- shouldn't cost them.
-
-
-The Solution
-============
-
-When you first configure libc++ using CMake we check to see if we need to
-capture any options. If we haven't been given any "persistent" options then
-we do NOTHING.
-
-Otherwise we create a custom installation rule that modifies the installed __config
-header. The rule first generates a dummy "__config_site" header containing the required
-#defines. The contents of the dummy header are then prepended to the installed
-__config header. By manually prepending the files we avoid the cost of an
-extra #include and we allow the __config header to be ignorant of the extra
-configuration all together. An example "__config" header generated when
--DLIBCXX_ENABLE_THREADS=OFF is given to CMake would look something like:
-
-.. code-block:: cpp
-
- //===----------------------------------------------------------------------===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is dual licensed under the MIT and the University of Illinois Open
- // Source Licenses. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
-
- #ifndef _LIBCPP_CONFIG_SITE
- #define _LIBCPP_CONFIG_SITE
-
- /* #undef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE */
- /* #undef _LIBCPP_HAS_NO_STDIN */
- /* #undef _LIBCPP_HAS_NO_STDOUT */
- #define _LIBCPP_HAS_NO_THREADS
- /* #undef _LIBCPP_HAS_NO_MONOTONIC_CLOCK */
- /* #undef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS */
-
- #endif
- // -*- C++ -*-
- //===--------------------------- __config ---------------------------------===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is dual licensed under the MIT and the University of Illinois Open
- // Source Licenses. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
-
- #ifndef _LIBCPP_CONFIG
- #define _LIBCPP_CONFIG