summaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
blob: 44ac9dc2992a4f7caa15f6f854fd5deb8db5ec8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
name: CI
on:
  push:
    branches: [main]
jobs:
  build-appleclang:
    runs-on: macos-latest
    strategy:
      fail-fast: false
      matrix:
        ver: [17, 20]
    env:
      CC: clang
      CXX: clang++
      # Unlike GCC and upstream Clang, AppleClang still defaults to `-std=c++98`
      # for some reason. Also, the macOS image on GitHub Actions provides wildly
      # numbered Xcode versions. Thus, rather than varying the compiler version,
      # we set the `-std` flag explicitly in order to vary the language version.
      # (The other two flags are the default provided for CXXFLAGS in Makefile.)
      CXXFLAGS: -O3 -g -std=c++${{ matrix.ver }}
    steps:
      - uses: actions/checkout@v3
      - name: Install Abseil, GoogleTest and Benchmark
        run: |
          brew update
          brew install abseil googletest google-benchmark
        shell: bash
      - run: make && make test
        shell: bash
  build-clang:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ver: [15, 16, 17]
    env:
      CC: clang-${{ matrix.ver }}
      CXX: clang++-${{ matrix.ver }}
    steps:
      - uses: actions/checkout@v3
      - name: Install Clang ${{ matrix.ver }}
        run: |
          # Avoid `Conflicts: python3-lldb-x.y` between packages.
          sudo apt purge -y python3-lldb-14
          wget https://apt.llvm.org/llvm.sh
          chmod +x ./llvm.sh
          sudo ./llvm.sh ${{ matrix.ver }}
        shell: bash
      - name: Install Abseil, GoogleTest and Benchmark
        run: |
          sudo apt update -y
          sudo apt install -y libabsl-dev libgtest-dev libbenchmark-dev
        shell: bash
      - run: make && make test
        shell: bash
  build-gcc:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ver: [11, 12, 13]
    env:
      CC: gcc-${{ matrix.ver }}
      CXX: g++-${{ matrix.ver }}
    steps:
      - uses: actions/checkout@v3
      - name: Install Abseil, GoogleTest and Benchmark
        run: |
          sudo apt update -y
          sudo apt install -y libabsl-dev libgtest-dev libbenchmark-dev
        shell: bash
      - run: make && make test
        shell: bash