Skip to content

Commit abfd9af

Browse files
committed
[docs] Move development notes into docs/.
1 parent e0b8a1d commit abfd9af

File tree

4 files changed

+127
-121
lines changed

4 files changed

+127
-121
lines changed

README.md

-118
Original file line numberDiff line numberDiff line change
@@ -4,121 +4,3 @@ llbuild
44
A 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.

docs/TODO.rst

+2-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
Generic
66
=======
77

8-
* It would be nice to have some basic infrastructure for handling command line parsing better.
8+
* It would be nice to have some basic infrastructure for handling command line
9+
parsing better.
910

1011
* It would be nice to have some infrastructure for statistics (a la LLVM).
1112

@@ -107,8 +108,6 @@ Ninja Specific
107108
Tasks for Usable Tool
108109
---------------------
109110

110-
* Buffer command output.
111-
112111
* Implement path normalization (for Nodes as well as things like imported
113112
dependencies from compiler output).
114113

docs/contents.rst

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Contents
66
.. toctree::
77
:maxdepth: 2
88

9+
development
910
buildengine
1011
buildsystem
1112
TODO

docs/development.rst

+124
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
2+
=============
3+
Development
4+
=============
5+
6+
This document contains information on developing llbuild.
7+
8+
The project is set up in the following fashion, generally following the LLVM and
9+
Swift conventions.
10+
11+
* For C++ code:
12+
13+
* The code is written against the C++14 standard.
14+
15+
* The style should follow the LLVM conventions, but variable names use
16+
camelCase.
17+
18+
* Both exceptions and RTTI are **disallowed**.
19+
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 **BuildSystem**,
53+
**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 [Testing
84+
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

Comments
 (0)