name: CI on: push: pull_request: jobs: build-and-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build static + shared library run: make all - name: Run test suite run: make test - name: Build and run under AddressSanitizer + UndefinedBehaviorSanitizer run: | mkdir -p build/san for f in src/*.c; do cc -std=c11 -Wall -Wextra -O1 -g -fPIC -Iinclude -Isrc -D_GNU_SOURCE \ -fsanitize=address,undefined -c "$f" -o "build/san/$(basename "${f%.c}").o" done for t in tests/test_*.c; do name=$(basename "${t%.c}") cc -std=c11 -O1 -g -Iinclude -Isrc -fsanitize=address,undefined \ "$t" build/san/*.o -lpthread -o "build/san/$name" "./build/san/$name" done - name: Build and run under ThreadSanitizer run: | mkdir -p build/tsan for f in src/*.c; do cc -std=c11 -Wall -Wextra -O1 -g -fPIC -Iinclude -Isrc -D_GNU_SOURCE \ -fsanitize=thread -c "$f" -o "build/tsan/$(basename "${f%.c}").o" done for t in tests/test_*.c; do name=$(basename "${t%.c}") cc -std=c11 -O1 -g -Iinclude -Isrc -fsanitize=thread \ "$t" build/tsan/*.o -lpthread -o "build/tsan/$name" "./build/tsan/$name" done