@@ -4,121 +4,3 @@ llbuild
44A low-level build system.
55
66
7- Development Notes
8- ----------------- 
9- 
10- The project is set up in the following fashion, generally following LLVM and
11- Swift conventions.
12- 
13- *  For C++ code:
14-   *  The code is written against the C++14 standard.
15- 
16-   *  The style should follow the LLVM conventions, but variable names use
17-     camelCase.
18- 
19-   *  Both exceptions and RTTI are ** disallowed** .
20- 
21- *  The project is divided into conceptually distinct layers, which are organized
22-   into distinct "libraries" under ` lib/ ` . The current set of libraries, and
23-   their dependencies, is:
24- 
25- *  *  ** llvm** 
26- 
27-       Shared LLVM support facilities, for llbuild use. These are intended to be
28-       relatively unmodified versions of data structures which are available in
29-       LLVM, but are just not factored in a way that we can use them. The goal is
30-       to eventually factor out a common LLVM-support infrastructure that can be
31-       shared.
32- 
33- *  *  ** Basic** 
34- 
35-       Support facilities available to all libraries.
36- 
37- *  *  ** Core** 
38- 
39-       The core build engine implementation. Depends on ** Basic** .
40- 
41- *  *  ** BuildSystem** 
42- 
43-       The "llbuild"-native build system library. Depends on ** Basic** , ** Core** .
44- 
45- *  *  ** Ninja** 
46- 
47-       Programmatic APIs for dealing with Ninja build manifests. Depends on
48-       ** Basic** .
49- 
50- *  *  ** Commands** 
51- 
52-       Implementations of command line tool frontends. Depends on
53-       ** BuildSystem** , ** Core** , ** Ninja** .
54- 
55-   Code in libraries in the lower layers is ** forbidden**  from using code in the
56-   higher layers.
57- 
58- *  Public facing products (tools and libraries) are organized under
59-   ` products/ ` . Currently the products are:
60- 
61- *  *  ** llbuild** 
62- 
63-       The implementation of the command line ` llbuild `  tool, which is used for
64-       command line testing.
65- 
66- *  *  ** libllbuild** 
67- 
68-       A C API for llbuild.
69- 
70- *  *  ** swift-build-tool** 
71- 
72-       The command line build tool used by the Swift package manager.
73- 
74- *  Examples of using ` llbuild `  are available under ` examples/ ` .
75- 
76- *  There are two kinds of correctness tests include in the project:
77- 
78- *  *  ** LLVM-Style Functional Tests** 
79- 
80-       These tests are located under ` tests/ `  and then layed out according to
81-       library and the area of functionality. The tests themselves are written in
82-       the LLVM "ShTest" style and run using the ` Lit `  testing tool, for more
83-       information see LLVM's
84-       [ Testing Guide] ( http://llvm.org/docs/TestingGuide.html#writing-new-regression-tests ) .
85- 
86- *  *  ** C++ Unit Tests** 
87- 
88-       These tests are located under ` unittests/ `  and then layed out according to
89-       library. The tests are written using the
90-       [ Googletest] ( https://code.google.com/p/googletest/ )  framework.
91- 
92-   All of these tests are run by default (by ` lit ` ) during the build.
93- 
94- *  There are also additional performance tests:
95- 
96- *  *  ** Xcode Performance Tests** 
97- 
98-       These tests are located under ` perftests/Xcode ` . They use the Xcode XCTest
99-       based testing infrastructure to run performance tests. These tests are
100-       currently only supported when using Xcode.
101- 
102- *  Header includes are placed in the directory structure according to their
103-   purpose:
104- 
105- *  *  ` include/llbuild/<LIBRARY_NAME>/ ` 
106- 
107-       Contains the * internal*  (in Swift terminology) APIs available for use by
108-       any other code in the * llbuild*  project (subject to layering constraints).
109- 
110-       ** All**  references to these includes should follow the form::
111- 
112-         `#include "llbuild/<LIBRARY_NAME>/<HEADER_NAME>.h"` 
113- 
114- *  *  ` lib/llbuild/<LIBRARY_NAME> ` 
115- 
116-       Contains the * internal*  (in Swift terminology) APIs only available for use
117-       by code in the same library.
118- 
119-       ** All**  references to these includes should follow the form::
120- 
121-         `#include "<HEADER_NAME>.h"` 
122- 
123-   The Xcode project disables the use of headermaps, to aid in following these
124-   conventions.
0 commit comments