forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			100 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
LLVM-libc Source Tree Layout
 | 
						|
============================
 | 
						|
 | 
						|
At the top-level, LLVM-libc source tree is organized in to the following
 | 
						|
directories::
 | 
						|
 | 
						|
   + libc
 | 
						|
        - cmake
 | 
						|
        - docs
 | 
						|
        - fuzzing
 | 
						|
        - include
 | 
						|
        - lib
 | 
						|
        - loader
 | 
						|
        - src
 | 
						|
        - test
 | 
						|
        - utils
 | 
						|
        - 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 ``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. 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 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 ``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 sub-directories within this directory, to learn
 | 
						|
about the various utilities.
 | 
						|
 | 
						|
The ``www`` directory
 | 
						|
---------------------
 | 
						|
 | 
						|
The ``www`` directory contains the HTML content of libc.llvm.org
 | 
						|
 |