Added toolchain file for sanitized builds
Some checks failed
ci/woodpecker/push/workflow Pipeline failed

This commit is contained in:
2025-10-02 17:56:30 +03:00
committed by Emin Arslan
parent a40487f84d
commit 2dd10e08d9
3 changed files with 28 additions and 1 deletions

View File

@@ -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

View File

@@ -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
View 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}")