.. _source_tree_layout:

============================
LLVM-libc Source Tree Layout
============================

At the top-level, LLVM-libc source tree is organized in to the following
directories::

   + libc
        - benchmarks
        - cmake
        - config
        - docs
        - examples
        - fuzzing
        - include
        - lib
        - spec
        - src
        - startup
        - test
        - utils

Each of these directories is explained breifly below.

The ``benchmarks`` directory
----------------------------

The ``benchmarks`` directory contains LLVM-libc's benchmarking utilities. These
are mostly used for the memory functions. This also includes the automemcpy
subdirectory for automatic generation of optimized memory functions.

The ``config`` directory
------------------------

The ``config`` directory contains the default configurations for the targets
LLVM-libc supports. These are files in the ``config/<platform>/<architecture>/``
subdirectory called ``entrypoints.txt``, ``exclude.txt``, ``headers.txt``,  and
``config.json``. These tell cmake which entrypoints are available, which
entrypoints to exclude, which headers to generate, and what options to set for
the current target respectively. There are also other platform specific files in
the ``config/<platform>/`` subdirectory.

The ``cmake`` directory
-----------------------

The ``cmake`` directory contains the implementations of LLVM-libc's CMake build
rules.

The ``docs`` directory
----------------------

The ``docs`` directory contains design docs and also informative documents like
this document on source layout.

The ``fuzzing`` directory
-------------------------

This directory contains fuzzing tests for the various components of LLVM-libc.
The directory structure within this directory mirrors the directory structure
of the top-level ``libc`` directory itself. For more details, see
:doc:`fuzzing`.

The ``include`` directory
-------------------------

The ``include`` directory contains:

1. ``*.h.def`` files - These files are used to construct the generated public
   header files.
2. Self contained public header files - These are header files which are
   already in the form that get installed when LLVM-libc is installed on a
   user's computer. These are mostly in the ``llvm-libc-macros`` and
   ``llvm-libc-types`` subdirectories.

The ``lib`` directory
---------------------

This directory contains a ``CMakeLists.txt`` file listing the targets for the
public libraries ``libc.a``, ``libm.a`` etc.

The ``spec`` directory
----------------------

This directory contains the specifications for the types, macros, and entrypoint
functions. These definitions come from the various standards and extensions
LLVM-libc supports, and they are used along with the ``*.h.def`` files and the
config files to generate the headers for fullbuild mode.

The ``src`` directory
---------------------

This directory contains the implementations of the llvm-libc entrypoints. It is
further organized as follows:

1. There is a top-level CMakeLists.txt file.
2. For every public header file provided by llvm-libc, there exists a
   corresponding directory in the ``src`` directory. The name of the directory
   is same as the base name of the header file. For example, the directory
   corresponding to the public ``math.h`` header file is named ``math``. The
   implementation standard document explains more about the *header*
   directories.

The ``startup`` directory
-------------------------

This directory contains the implementations of the application startup objects
like ``crt1.o`` etc.

The ``test`` directory
----------------------

This directory contains tests for the various components of LLVM-libc. The
directory structure within this directory mirrors the directory structure of the
toplevel ``libc`` directory itself. A test for, say the ``mmap`` function, lives
in the directory ``test/src/sys/mman/`` as implementation of ``mmap`` lives in
``src/sys/mman``.

The ``utils`` directory
-----------------------

This directory contains utilities used by other parts of the LLVM-libc system.
See the `README` files in the subdirectories within this directory to learn
about the various utilities.
