You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[Beman.Optional26: C++26 Extensions for std::optional](#bemanoptional26-c26-extensions-for-stdoptional)
20
+
-[Table of Contents](#table-of-contents)
21
+
-[License](#license)
22
+
-[Examples](#examples)
23
+
-[range\_loop](#range_loop)
24
+
-[optional\_ref](#optional_ref)
25
+
-[How to Build](#how-to-build)
26
+
-[Compiler Support](#compiler-support)
27
+
-[Dependencies](#dependencies)
28
+
-[Instructions](#instructions)
29
+
-[Default Build and Test Flow](#default-build-and-test-flow)
30
+
-[More Complex Cases](#more-complex-cases)
31
+
-[Step by Step Build: Build and Run Tests](#step-by-step-build-build-and-run-tests)
32
+
-[Step by Step Build: Build Production and Skip Tests](#step-by-step-build-build-production-and-skip-tests)
33
+
-[Papers](#papers)
34
+
35
+
16
36
## License
17
37
18
38
Source is licensed with the Apache 2.0 license with LLVM exceptions
@@ -123,7 +143,7 @@ apt-get install \
123
143
124
144
Full set of supported toolchains can be found in [.github/workflows/ci.yml](.github/workflows/ci.yml).
125
145
126
-
#### Basic Build
146
+
#### Default Build and Test Flow
127
147
128
148
This project strives to be as normal and simple a CMake project as possible. This build workflow in particular will work, producing a static `beman_optional26` library, ready to package:
129
149
@@ -168,7 +188,7 @@ Total Test time (real) = 0.09 sec
168
188
169
189
This should build and run the tests with GCC 14 with the address and undefined behavior sanitizers enabled.
170
190
171
-
#### More complex cases
191
+
#### More Complex Cases
172
192
173
193
The CMake preset system suffers from combinitorial explosion. There is a makefile in the root of the repository to aid in running more configurations.
174
194
@@ -178,6 +198,63 @@ make -k TOOLCHAIN=clang-18 CONFIG=Tsan VERBOSE=1
178
198
179
199
The makefile will use your system compiler, `c++`, if no toolchain name is provided, otherwise it will use the toolchain in the etc/ directory to perform the build. The Ninja multi config generator is used, with configurations for `RelWithDebugInfo`, `Debug`, `Tsan`, and `Asan` configured by default.
180
200
201
+
#### Step by Step Build: Build and Run Tests
202
+
203
+
CI current build and test flows:
204
+
205
+
```shell
206
+
# Configure build: default build production code + tests (BUILD_TESTING=ON by default).
0 commit comments