Skip to content

Commit d2f6aa2

Browse files
committed
ci: add thread sanitizer job
1 parent c0efaa5 commit d2f6aa2

File tree

4 files changed

+16
-5
lines changed

4 files changed

+16
-5
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
strategy:
1212
fail-fast: false
1313
matrix:
14-
config: [default, llvm, gnu32]
14+
config: [default, llvm, gnu32, sanitize]
1515

1616
name: build • ${{ matrix.config }}
1717

ci/README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ All CI is just bash and nix.
1616
To run jobs locally:
1717

1818
```bash
19-
CI_CONFIG=ci/configs/default.bash ci/scripts/run.sh
20-
CI_CONFIG=ci/configs/llvm.bash ci/scripts/run.sh
21-
CI_CONFIG=ci/configs/gnu32.bash ci/scripts/run.sh
19+
CI_CONFIG=ci/configs/default.bash ci/scripts/run.sh
20+
CI_CONFIG=ci/configs/llvm.bash ci/scripts/run.sh
21+
CI_CONFIG=ci/configs/gnu32.bash ci/scripts/run.sh
22+
CI_CONFIG=ci/configs/sanitize.bash ci/scripts/run.sh
2223
```
2324

2425
By default CI jobs will reuse their build directories. `CI_CLEAN=1` can be specified to delete them before running instead.

ci/configs/sanitize.bash

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CI_DESC="CI job running ThreadSanitizer"
2+
CI_DIR=build-sanitize
3+
export CXX=clang++
4+
export CXXFLAGS="-ggdb -Werror -Wall -Wextra -Wpedantic -Wthread-safety-analysis -Wno-unused-parameter -fsanitize=thread"
5+
CMAKE_ARGS=()
6+
BUILD_ARGS=(-k -j4)
7+
BUILD_TARGETS=(mptest)

ci/scripts/ci.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,12 @@ set -o errexit -o nounset -o pipefail -o xtrace
1111
[ "${CI_CONFIG+x}" ] && source "$CI_CONFIG"
1212

1313
: "${CI_DIR:=build}"
14+
if ! [ -v BUILD_TARGETS ]; then
15+
BUILD_TARGETS=(all tests mpexamples)
16+
fi
1417

1518
[ -n "${CI_CLEAN-}" ] && rm -rf "${CI_DIR}"
1619

1720
cmake -B "$CI_DIR" "${CMAKE_ARGS[@]+"${CMAKE_ARGS[@]}"}"
18-
cmake --build "$CI_DIR" -t all tests mpexamples -- "${BUILD_ARGS[@]+"${BUILD_ARGS[@]}"}"
21+
cmake --build "$CI_DIR" -t "${BUILD_TARGETS[@]}" -- "${BUILD_ARGS[@]+"${BUILD_ARGS[@]}"}"
1922
ctest --test-dir "$CI_DIR" --output-on-failure

0 commit comments

Comments
 (0)