blob: b06ad96e1b85e2a7a9138ceea7cc7f35d0912cc9 [file] [log] [blame]
Siva Chandra43806472019-10-04 17:30:54 +00001LLVM-libc Source Tree Layout
2============================
3
4At the top-level, LLVM-libc source tree is organized in to the following
5directories::
6
7 + libc
8 - cmake
9 - docs
10 - include
11 - lib
12 - loader
13 - src
14 + utils
15 - build_scripts
16 - testing
17 - www
18
19Each of these directories is explained in detail below.
20
21The ``cmake`` directory
22-----------------------
23
24The ``cmake`` directory contains the implementations of LLVM-libc's CMake build
25rules.
26
27The ``docs`` directory
28----------------------
29
30The ``docs`` directory contains design docs and also informative documents like
31this document on source layout.
32
33The ``include`` directory
34-------------------------
35
36The ``include`` directory contains:
37
381. Self contained public header files - These are header files which are
39 already in the form that get installed when LLVM-libc is installed on a user's
40 computer.
412. ``*.h.def`` and ``*.h.in`` files - These files are used to construct the
42 generated public header files.
433. A ``CMakeLists.txt`` file - This file lists the targets for the self
44 contained and generated public header files.
45
46The ``lib`` directory
47---------------------
48
49This directory contains a ``CMakeLists.txt`` file listing the targets for the
50public libraries ``libc.a``, ``libm.a`` etc.
51
52The ``loader`` directory
53------------------------
54
55This directory contains the implementations of the application loaders like
56``crt1.o`` etc.
57
58The ``src`` directory
59---------------------
60
61This directory contains the implementations of the llvm-libc entrypoints. It is
62further organized as follows:
63
641. There is a toplevel CMakeLists.txt file.
652. For every public header file provided by llvm-libc, there exists a
66 corresponding directory in the ``src`` directory. The name of the directory
67 is same as the base name of the header file. For example, the directory
68 corresponding to the public ``math.h`` header file is named ``math``. The
69 implementation standard document explains more about the *header*
70 directories.
71
72The ``www`` directory
73---------------------
74
75The ``www`` directory contains the HTML content of libc.llvm.org
76
77The ``utils/build_scripts`` directory
78-------------------------------------
79
80This directory contains scripts which support the build system, tooling etc.
81
82The ``utils/testing`` directory
83-------------------------------
84
85This directory contains testing infrastructure.