48 lines
1.7 KiB
ReStructuredText
48 lines
1.7 KiB
ReStructuredText
.. _module-pw_minimal_cpp_stdlib:
|
|
|
|
=====================
|
|
pw_minimal_cpp_stdlib
|
|
=====================
|
|
The ``pw_minimal_cpp_stdlib`` module provides an extremely limited
|
|
implementation of the C++ Standard Library. This module falls far, far short of
|
|
providing a complete C++ Standard Library and should only be used for testing
|
|
and development when compiling with C++17 or newer without a C++ Standard
|
|
Library. Production code should use a real C++ Standard Library implementation,
|
|
such as `libc++ <https://libcxx.llvm.org/>`_ or
|
|
`libstdc++ <https://gcc.gnu.org/onlinedocs/libstdc++/>`_.
|
|
|
|
.. warning::
|
|
|
|
``pw_minimal_cpp_stdlib`` was created for a very specific purpose. It is NOT a
|
|
general purpose C++ Standard Library implementation and should not be used as
|
|
one. Many features are missing, some features non-functioning stubs, and some
|
|
features may not match the C++ standard.
|
|
|
|
-----------
|
|
Code layout
|
|
-----------
|
|
The C++ Standard Library headers (e.g. ``<cstdint>`` and ``<type_traits>``) are
|
|
defined in ``public/``. These files are symlinks to their implementations in
|
|
``public/internal/``.
|
|
|
|
.. tip::
|
|
|
|
You can automatically recreate the symlinks in ``public/`` by executing the
|
|
following Bash code from ``pw_minimal_cpp_stdlib/public/``.
|
|
|
|
.. code-block:: bash
|
|
|
|
for f in $(ls internal/); do ln -s internal/$f ${f%.h}; done
|
|
|
|
The top-level ``build_with_minimal_cpp_stdlib`` GN group builds a few supported
|
|
modules with ``pw_minimal_cpp_stdlib`` swapped in for the C++ library at the
|
|
toolchain level. Notably, ``pw_minimal_cpp_stdlib`` does not support
|
|
``pw_unit_test``, so this group does not run any tests.
|
|
|
|
------------
|
|
Requirements
|
|
------------
|
|
- C++17
|
|
- gcc or clang
|
|
- The C Standard Library
|