@@ -4,121 +4,3 @@ llbuild
4
4
A low-level build system.
5
5
6
6
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