Added toolchain file for sanitized builds
Some checks failed
ci/woodpecker/push/workflow Pipeline failed
Some checks failed
ci/woodpecker/push/workflow Pipeline failed
This commit is contained in:
@@ -8,7 +8,7 @@ steps:
|
|||||||
commands: # we probably shouldn't install cmake every time
|
commands: # we probably shouldn't install cmake every time
|
||||||
- apt update && apt install -y cmake
|
- apt update && apt install -y cmake
|
||||||
- mkdir -p build/ && cd build
|
- mkdir -p build/ && cd build
|
||||||
- cmake ..
|
- cmake .. --toolchain ../toolchain/sanitize.cmake
|
||||||
- make
|
- make
|
||||||
- name: test
|
- name: test
|
||||||
image: ubuntu
|
image: ubuntu
|
||||||
|
22
README.md
22
README.md
@@ -9,6 +9,11 @@ The end goal is to emit bytecode. The bytecode format is not decided yet.
|
|||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
|
All you need is:
|
||||||
|
|
||||||
|
- CMake
|
||||||
|
- An appropriate C++ compiler
|
||||||
|
|
||||||
I use cmake for the build system. I prefer to build out-of-tree,
|
I use cmake for the build system. I prefer to build out-of-tree,
|
||||||
here's how to build if you've never used cmake:
|
here's how to build if you've never used cmake:
|
||||||
|
|
||||||
@@ -35,6 +40,23 @@ cp compile_commands.json ../
|
|||||||
|
|
||||||
After this, clangd should not give you errors on every included header.
|
After this, clangd should not give you errors on every included header.
|
||||||
|
|
||||||
|
### Toolchain
|
||||||
|
|
||||||
|
C++ can be somewhat error-prone, so in order to reduce the possibility of
|
||||||
|
certain bugs, cmake toolchain options are provided that build the project
|
||||||
|
with the undefined behaviour sanitizer and the address sanitizer.
|
||||||
|
|
||||||
|
You can build a sanitized version like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd build
|
||||||
|
cmake .. --toolchain ../toolchain/sanitize.cmake
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
Catch2 testing framework is used to maintain code correctness.
|
||||||
|
|
||||||
|
|
||||||
## Progress
|
## Progress
|
||||||
|
|
||||||
Woodpecker CI/CD system is integrated.
|
Woodpecker CI/CD system is integrated.
|
||||||
|
5
toolchain/sanitize.cmake
Normal file
5
toolchain/sanitize.cmake
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# We're assuming clang or gcc as the compiler.
|
||||||
|
# feel free to change if you're using msvc or something else
|
||||||
|
set(SANITIZERS_FLAGS "-fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all -fno-omit-frame-pointer")
|
||||||
|
set(CMAKE_CXX_FLAGS_INIT "${SANITIZERS_FLAGS}")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS_INIT "${SANITIZERS_FLAGS}")
|
Reference in New Issue
Block a user