view libc/docs/source_layout.rst @ 167:e037d1dd7369

...
author anatofuz
date Tue, 24 Mar 2020 17:35:46 +0900
parents 1d019706d866
children 0572611fdcc8
line wrap: on
line source

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

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

   + libc
        - cmake
        - docs
        - include
        - lib
        - loader
        - src
        - test
        + utils
            - build_scripts
            - testing
        - www

Each of these directories is explained in detail below.

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 ``include`` directory
-------------------------

The ``include`` directory contains:

1. 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.
2. ``*.h.def`` and ``*.h.in`` files - These files are used to construct the
   generated public header files.
3. A ``CMakeLists.txt`` file - This file lists the targets for the self
   contained and generated public header files.

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

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

The ``loader`` directory
------------------------

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

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

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

1. There is a toplevel 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 ``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 ``www`` directory
---------------------

The ``www`` directory contains the HTML content of libc.llvm.org

The ``utils/build_scripts`` directory
-------------------------------------

This directory contains scripts which support the build system, tooling etc.

The ``utils/testing`` directory
-------------------------------

This directory contains testing infrastructure.