Commit db625934 by Jonathan Wakely Committed by Jonathan Wakely

Update docs on libstdc++ source-code layout

	* doc/xml/manual/appendix_contributing.xml (contrib.organization):
	Describe other subdirectories and add markup. Remove outdated
	reference to check-script target.
	* doc/html/*: Regenerate.

From-SVN: r240946
parent fbcdc43e
2016-10-10 Jonathan Wakely <jwakely@redhat.com> 2016-10-10 Jonathan Wakely <jwakely@redhat.com>
* doc/xml/manual/appendix_contributing.xml (contrib.organization):
Describe other subdirectories and add markup. Remove outdated
reference to check-script target.
* doc/html/*: Regenerate.
* doc/xml/manual/status_cxx2011.xml: Correct C++11 status. * doc/xml/manual/status_cxx2011.xml: Correct C++11 status.
* libsupc++/eh_ptr.cc (exception_ptr): Replace _GLIBCXX_USE_NOEXCEPT * libsupc++/eh_ptr.cc (exception_ptr): Replace _GLIBCXX_USE_NOEXCEPT
......
...@@ -423,6 +423,10 @@ ...@@ -423,6 +423,10 @@
</span></dt><dd><p>The <code class="code">tuple_size</code> and <code class="code">tuple_element</code> </span></dt><dd><p>The <code class="code">tuple_size</code> and <code class="code">tuple_element</code>
partial specializations are defined in <code class="code">&lt;utility&gt;</code> which partial specializations are defined in <code class="code">&lt;utility&gt;</code> which
is included by <code class="code">&lt;array&gt;</code>. is included by <code class="code">&lt;array&gt;</code>.
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#2296" target="_top">2296</a>:
<span class="emphasis"><em><code class="code">std::addressof</code> should be constexpr</em></span>
</span></dt><dd><p>Use <code class="code">__builtin_addressof</code> and add
<code class="code">constexpr</code> to <code class="code">addressof</code> for C++17 and later.
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#2313" target="_top">2313</a>: </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#2313" target="_top">2313</a>:
<span class="emphasis"><em><code class="code">tuple_size</code> should always derive from <code class="code">integral_constant&lt;size_t, N&gt;</code></em></span> <span class="emphasis"><em><code class="code">tuple_size</code> should always derive from <code class="code">integral_constant&lt;size_t, N&gt;</code></em></span>
</span></dt><dd><p>Update definitions of the partial specializations for const and volatile types. </span></dt><dd><p>Update definitions of the partial specializations for const and volatile types.
......
...@@ -3,89 +3,102 @@ ...@@ -3,89 +3,102 @@
Contributing Contributing
</th><td width="20%" align="right"> <a accesskey="n" href="source_code_style.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.organization"></a>Directory Layout and Source Conventions</h2></div></div></div><p> </th><td width="20%" align="right"> <a accesskey="n" href="source_code_style.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.organization"></a>Directory Layout and Source Conventions</h2></div></div></div><p>
The unpacked source directory of libstdc++ contains the files The <code class="filename">libstdc++-v3</code> directory in the
needed to create the GNU C++ Library. GCC sources contains the files needed to create the GNU C++ Library.
</p><div class="literallayout"><p><br /> </p><div class="literallayout"><p><br />
It has subdirectories:<br /> It has subdirectories:<br />
<br /> <br />
  doc<br />   <code class="filename">doc</code><br />
    Files in HTML and text format that document usage, quirks of the<br />     Files in HTML and text format that document usage, quirks of the<br />
    implementation, and contributor checklists.<br />     implementation, and contributor checklists.<br />
<br /> <br />
  include<br />   <code class="filename">include</code><br />
    All header files for the C++ library are within this directory,<br />     All header files for the C++ library are within this directory,<br />
    modulo specific runtime-related files that are in the libsupc++<br />     modulo specific runtime-related files that are in the libsupc++<br />
    directory.<br />     directory.<br />
<br /> <br />
    include/std<br />     <code class="filename">include/std</code><br />
      Files meant to be found by #include &lt;name&gt; directives in<br />       Files meant to be found by #include &lt;name&gt; directives in<br />
      standard-conforming user programs.<br />       standard-conforming user programs.<br />
<br /> <br />
    include/c<br />     <code class="filename">include/c</code><br />
      Headers intended to directly include standard C headers.<br />       Headers intended to directly include standard C headers.<br />
      [NB: this can be enabled via --enable-cheaders=c]<br />       [NB: this can be enabled via <code class="option">--enable-cheaders=c</code>]<br />
<br /> <br />
    include/c_global<br />     <code class="filename">include/c_global</code><br />
      Headers intended to include standard C headers in<br />       Headers intended to include standard C headers in<br />
      the global namespace, and put select names into the std::<br />       the global namespace, and put select names into the std::<br />
      namespace.  [NB: this is the default, and is the same as<br />       namespace.  [NB: this is the default, and is the same as<br />
      --enable-cheaders=c_global]<br />       <code class="option">--enable-cheaders=c_global</code>]<br />
<br /> <br />
    include/c_std<br />     <code class="filename">include/c_std</code><br />
      Headers intended to include standard C headers<br />       Headers intended to include standard C headers<br />
      already in namespace std, and put select names into the std::<br />       already in namespace std, and put select names into the std::<br />
      namespace.  [NB: this is the same as --enable-cheaders=c_std]<br />       namespace.  [NB: this is the same as<br />
      <code class="option">--enable-cheaders=c_std</code>]<br />
<br /> <br />
    include/bits<br />     <code class="filename">include/bits</code><br />
      Files included by standard headers and by other files in<br />       Files included by standard headers and by other files in<br />
      the bits directory.<br />       the bits directory.<br />
<br /> <br />
    include/backward<br />     <code class="filename">include/backward</code><br />
      Headers provided for backward compatibility, such as &lt;iostream.h&gt;.<br />       Headers provided for backward compatibility, such as &lt;iostream.h&gt;.<br />
      They are not used in this library.<br />       They are not used in this library.<br />
<br /> <br />
    include/ext<br />     <code class="filename">include/ext</code><br />
      Headers that define extensions to the standard library.  No<br />       Headers that define extensions to the standard library.  No<br />
      standard header refers to any of them.<br />       standard header refers to any of them.<br />
<br /> <br />
  scripts<br />   <code class="filename">scripts</code><br />
    Scripts that are used during the configure, build, make, or test<br />     Scripts that are used during the configure, build, make, or test<br />
    process.<br />     process.<br />
<br /> <br />
  src<br />   <code class="filename">src</code><br />
    Files that are used in constructing the library, but are not<br />     Files that are used in constructing the library, but are not<br />
    installed.<br />     installed.<br />
<br /> <br />
  testsuites/[backward, demangle, ext, performance, thread, 17_* to 30_*]<br />     <code class="filename">src/c++98</code><br />
    Source files compiled using <code class="option">-std=gnu++98</code>.<br />
<br />
    <code class="filename">src/c++11</code><br />
    Source files compiled using <code class="option">-std=gnu++11</code>.<br />
<br />
    <code class="filename">src/filesystem</code><br />
    Source files for the Filesystem TS.<br />
<br />
    <code class="filename">src/shared</code><br />
    Source code included by other files under both<br />
    <code class="filename">src/c++98</code> and<br />
    <code class="filename">src/c++11</code><br />
<br />
  <code class="filename">testsuites/[backward, demangle, ext, performance, thread, 17_* to 30_*]</code><br />
    Test programs are here, and may be used to begin to exercise the<br />     Test programs are here, and may be used to begin to exercise the<br />
    library.  Support for "make check" and "make check-install" is<br />     library.  Support for "make check" and "make check-install" is<br />
    complete, and runs through all the subdirectories here when this<br />     complete, and runs through all the subdirectories here when this<br />
    command is issued from the build directory.  Please note that<br />     command is issued from the build directory.  Please note that<br />
    "make check" requires DejaGNU 1.4 or later to be installed.  Please<br />     "make check" requires DejaGNU 1.4 or later to be installed.<br />
    note that "make check-script" calls the script mkcheck, which<br />
    requires bash, and which may need the paths to bash adjusted to<br />
    work properly, as /bin/bash is assumed.<br />
<br /> <br />
Other subdirectories contain variant versions of certain files<br /> Other subdirectories contain variant versions of certain files<br />
that are meant to be copied or linked by the configure script.<br /> that are meant to be copied or linked by the configure script.<br />
Currently these are:<br /> Currently these are:<br />
<br /> <br />
  config/abi<br />   <code class="filename">config/abi</code><br />
  config/cpu<br />   <code class="filename">config/cpu</code><br />
  config/io<br />   <code class="filename">config/io</code><br />
  config/locale<br />   <code class="filename">config/locale</code><br />
  config/os<br />   <code class="filename">config/os</code><br />
<br /> <br />
In addition, a subdirectory holds the convenience library libsupc++.<br /> In addition, a subdirectory holds the convenience library libsupc++.<br />
<br /> <br />
  libsupc++<br />   <code class="filename">libsupc++</code><br />
    Contains the runtime library for C++, including exception<br />     Contains the runtime library for C++, including exception<br />
    handling and memory allocation and deallocation, RTTI, terminate<br />     handling and memory allocation and deallocation, RTTI, terminate<br />
    handlers, etc.<br />     handlers, etc.<br />
<br /> <br />
Note that glibc also has a bits/ subdirectory.  We will either<br /> Note that glibc also has a <code class="filename">bits/</code><br />
need to be careful not to collide with names in its bits/<br /> subdirectory.  We will either need to be careful not to collide with names<br />
directory; or rename bits to (e.g.) cppbits/.<br /> in its <code class="filename">bits/</code><br />
directory; or rename <code class="filename">bits</code> to (e.g.) <code class="filename">cppbits</code>.<br />
<br /> <br />
In files throughout the system, lines marked with an "XXX" indicate<br /> In files throughout the system, lines marked with an "XXX" indicate<br />
a bug or incompletely-implemented feature.  Lines marked "XXX MT"<br /> a bug or incompletely-implemented feature.  Lines marked "XXX MT"<br />
......
...@@ -199,91 +199,104 @@ ...@@ -199,91 +199,104 @@
<para> <para>
The unpacked source directory of libstdc++ contains the files The <filename class="directory">libstdc++-v3</filename> directory in the
needed to create the GNU C++ Library. GCC sources contains the files needed to create the GNU C++ Library.
</para> </para>
<literallayout class="normal"> <literallayout class="normal">
It has subdirectories: It has subdirectories:
doc <filename class="directory">doc</filename>
Files in HTML and text format that document usage, quirks of the Files in HTML and text format that document usage, quirks of the
implementation, and contributor checklists. implementation, and contributor checklists.
include <filename class="directory">include</filename>
All header files for the C++ library are within this directory, All header files for the C++ library are within this directory,
modulo specific runtime-related files that are in the libsupc++ modulo specific runtime-related files that are in the libsupc++
directory. directory.
include/std <filename class="directory">include/std</filename>
Files meant to be found by #include &lt;name&gt; directives in Files meant to be found by #include &lt;name&gt; directives in
standard-conforming user programs. standard-conforming user programs.
include/c <filename class="directory">include/c</filename>
Headers intended to directly include standard C headers. Headers intended to directly include standard C headers.
[NB: this can be enabled via --enable-cheaders=c] [NB: this can be enabled via <option>--enable-cheaders=c</option>]
include/c_global <filename class="directory">include/c_global</filename>
Headers intended to include standard C headers in Headers intended to include standard C headers in
the global namespace, and put select names into the std:: the global namespace, and put select names into the std::
namespace. [NB: this is the default, and is the same as namespace. [NB: this is the default, and is the same as
--enable-cheaders=c_global] <option>--enable-cheaders=c_global</option>]
include/c_std <filename class="directory">include/c_std</filename>
Headers intended to include standard C headers Headers intended to include standard C headers
already in namespace std, and put select names into the std:: already in namespace std, and put select names into the std::
namespace. [NB: this is the same as --enable-cheaders=c_std] namespace. [NB: this is the same as
<option>--enable-cheaders=c_std</option>]
include/bits <filename class="directory">include/bits</filename>
Files included by standard headers and by other files in Files included by standard headers and by other files in
the bits directory. the bits directory.
include/backward <filename class="directory">include/backward</filename>
Headers provided for backward compatibility, such as &lt;iostream.h&gt;. Headers provided for backward compatibility, such as &lt;iostream.h&gt;.
They are not used in this library. They are not used in this library.
include/ext <filename class="directory">include/ext</filename>
Headers that define extensions to the standard library. No Headers that define extensions to the standard library. No
standard header refers to any of them. standard header refers to any of them.
scripts <filename class="directory">scripts</filename>
Scripts that are used during the configure, build, make, or test Scripts that are used during the configure, build, make, or test
process. process.
src <filename class="directory">src</filename>
Files that are used in constructing the library, but are not Files that are used in constructing the library, but are not
installed. installed.
testsuites/[backward, demangle, ext, performance, thread, 17_* to 30_*] <filename class="directory">src/c++98</filename>
Source files compiled using <option>-std=gnu++98</option>.
<filename class="directory">src/c++11</filename>
Source files compiled using <option>-std=gnu++11</option>.
<filename class="directory">src/filesystem</filename>
Source files for the Filesystem TS.
<filename class="directory">src/shared</filename>
Source code included by other files under both
<filename class="directory">src/c++98</filename> and
<filename class="directory">src/c++11</filename>
<filename class="directory">testsuites/[backward, demangle, ext, performance, thread, 17_* to 30_*]</filename>
Test programs are here, and may be used to begin to exercise the Test programs are here, and may be used to begin to exercise the
library. Support for "make check" and "make check-install" is library. Support for "make check" and "make check-install" is
complete, and runs through all the subdirectories here when this complete, and runs through all the subdirectories here when this
command is issued from the build directory. Please note that command is issued from the build directory. Please note that
"make check" requires DejaGNU 1.4 or later to be installed. Please "make check" requires DejaGNU 1.4 or later to be installed.
note that "make check-script" calls the script mkcheck, which
requires bash, and which may need the paths to bash adjusted to
work properly, as /bin/bash is assumed.
Other subdirectories contain variant versions of certain files Other subdirectories contain variant versions of certain files
that are meant to be copied or linked by the configure script. that are meant to be copied or linked by the configure script.
Currently these are: Currently these are:
config/abi <filename class="directory">config/abi</filename>
config/cpu <filename class="directory">config/cpu</filename>
config/io <filename class="directory">config/io</filename>
config/locale <filename class="directory">config/locale</filename>
config/os <filename class="directory">config/os</filename>
In addition, a subdirectory holds the convenience library libsupc++. In addition, a subdirectory holds the convenience library libsupc++.
libsupc++ <filename class="directory">libsupc++</filename>
Contains the runtime library for C++, including exception Contains the runtime library for C++, including exception
handling and memory allocation and deallocation, RTTI, terminate handling and memory allocation and deallocation, RTTI, terminate
handlers, etc. handlers, etc.
Note that glibc also has a bits/ subdirectory. We will either Note that glibc also has a <filename class="directory">bits/</filename>
need to be careful not to collide with names in its bits/ subdirectory. We will either need to be careful not to collide with names
directory; or rename bits to (e.g.) cppbits/. in its <filename class="directory">bits/</filename>
directory; or rename <filename class="directory">bits</filename> to (e.g.) <filename class="directory">cppbits</filename>.
In files throughout the system, lines marked with an "XXX" indicate In files throughout the system, lines marked with an "XXX" indicate
a bug or incompletely-implemented feature. Lines marked "XXX MT" a bug or incompletely-implemented feature. Lines marked "XXX MT"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment