diff options
Diffstat (limited to '.github/workflows/cmark-ci.yml')
| -rw-r--r-- | .github/workflows/cmark-ci.yml | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/.github/workflows/cmark-ci.yml b/.github/workflows/cmark-ci.yml new file mode 100644 index 0000000000..45daf6082f --- /dev/null +++ b/.github/workflows/cmark-ci.yml @@ -0,0 +1,129 @@ +name: "cmark: CI" + +on: + push: + branches-ignore: + - 'dependabot/**' + paths: + - 'cmark/**' + - '.github/workflows/cmark-ci.yml' + pull_request: + paths: + - 'cmark/**' + - '.github/workflows/cmark-ci.yml' + workflow_dispatch: + +jobs: + linter: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - name: Install clang-tidy + run: sudo apt-get install -y clang-tidy + - name: lint with clang-tidy + working-directory: cmark + run: make lint + env: + CC: clang + CXX: clang++ + + posix: + strategy: + fail-fast: false + matrix: + os: [linux, macos] + cc: [clang, gcc] + build_type: [shared, static] + sanitizers: ['', ASan] + include: + - os: 'linux' + image: 'ubuntu-latest' + - os: 'macos' + image: 'macos-latest' + - cc: 'clang' + cxx: 'clang++' + - cc: 'gcc' + cxx: 'g++' + - build_type: 'shared' + cmake_shared: 'YES' + - build_type: 'static' + cmake_shared: 'NO' + - sanitizers: 'ASan' + san_cflags: '-fsanitize=address,undefined -fno-sanitize-recover=all' + - sanitizers: 'ASan' + os: 'linux' + cc: 'gcc' + build_type: 'shared' + test_env: 'LD_PRELOAD=$(gcc -print-file-name=libasan.so)' + - sanitizers: 'ASan' + os: 'linux' + cc: 'clang' + build_type: 'shared' + asan_cflags: '-shared-libasan' + test_env: 'LD_PRELOAD=$(clang -print-file-name=libclang_rt.asan-x86_64.so)' + - sanitizers: 'ASan' + build_type: 'shared' + asan_opts: 'detect_leaks=0' + - sanitizers: 'ASan' + cc: 'gcc' + build_type: 'static' + asan_cflags: '-static-libasan' + exclude: + - os: 'macos' + cc: 'gcc' + - os: 'macos' + sanitizers: 'ASan' + build_type: 'shared' + + runs-on: ${{ matrix.image }} + + env: + ASAN_OPTIONS: ${{ matrix.asan_opts }} + CC: ${{ matrix.cc }} + CXX: ${{ matrix.cxx }} + CFLAGS: '${{ matrix.san_cflags }} ${{ matrix.asan_cflags }}' + CXXFLAGS: '${{ matrix.san_cflags }} ${{ matrix.asan_cflags }}' + + steps: + - uses: actions/checkout@v6 + - name: Build and test + working-directory: cmark + run: | + cmake \ + -DBUILD_SHARED_LIBS=${{ matrix.cmake_shared }} \ + -DCMAKE_BUILD_TYPE=Debug \ + -S . -B build + cmake --build build + ${{ matrix.test_env }} ctest --test-dir build --output-on-failure + + windows: + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + build_type: [shared, static] + include: + - build_type: 'shared' + cmake_shared: 'YES' + - build_type: 'static' + cmake_shared: 'NO' + steps: + - uses: actions/checkout@v6 + - uses: ilammy/msvc-dev-cmd@v1 + - name: Build and test + working-directory: cmark + run: | + cmake ^ + -DBUILD_SHARED_LIBS=${{ matrix.cmake_shared }} ^ + -DCMAKE_BUILD_TYPE=Debug ^ + -S . -B build + cmake --build build + ctest --test-dir build -C Debug --output-on-failure + shell: cmd + - name: Upload artifact + if: ${{ matrix.build_type == 'static' }} + uses: actions/upload-artifact@v7 + with: + name: cmark windows ${{ matrix.build_type }} + path: cmark/build/src/Debug/cmark.exe + if-no-files-found: error |
