CI: tidy up configurations
@@ -49,33 +49,46 @@ jobs:
strategy:
fail-fast: false
matrix:
- os: [ubuntu-latest, macos-latest]
- build_type: [Debug, RelWithDebInfo, Release, Asan, Tsan, Ubsan]
- compiler: [gcc, clang]
+ config:
+ - {
+ os: ubuntu-latest,
+ cc: gcc,
+ cxx: g++
+ }
+ - {
+ os: ubuntu-latest,
+ cc: clang,
+ cxx: clang++
+ }
+ - {
+ os: macos-latest,
+ cc: clang,
+ cxx: clang++
+ }
+ build_type: [Debug, RelWithDebInfo, Release]
libs: [shared]
include:
- - os: ubuntu-latest
+ - config: {os: ubuntu-latest, cc: gcc, cxx: g++}
build_type: Debug
- compiler: gcc
libs: static
- exclude:
- # Exclude sanitizer builds with clang
- - build_type: Asan
- compiler: clang
- - build_type: Tsan
- compiler: clang
- - build_type: Ubsan
- compiler: clang
- - os: macos-latest
- compiler: gcc
-
- runs-on: ${{ matrix.os }}
+ - config: {os: ubuntu-latest, cc: gcc, cxx: g++}
+ build_type: Asan
+ libs: shared
+ - config: {os: ubuntu-latest, cc: gcc, cxx: g++}
+ build_type: Tsan
+ libs: shared
+ - config: {os: ubuntu-latest, cc: gcc, cxx: g++}
+ build_type: Ubsan
+ libs: shared
+
+ runs-on: ${{ matrix.config.os }}
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
MERCURY_BUILD_CONFIGURATION: ${{ matrix.build_type }}
MERCURY_LIBS: ${{ matrix.libs }}
- CC: ${{ matrix.compiler }}
+ CC: ${{ matrix.config.cc }}
+ CXX: ${{ matrix.config.cxx }}
INSTALL_DIR: install
steps:
@@ -112,7 +125,7 @@ jobs:
run: Testing/script/gh_ctest.sh test
- name: Coverage (Debug build only)
- if: matrix.build_type == 'Debug' && matrix.compiler == 'gcc'
+ if: matrix.build_type == 'Debug' && matrix.config.cc == 'gcc'
run: Testing/script/gh_ctest.sh coverage
- name: Address Sanitizer (Asan build only)
