aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/linux-other-builds.yml
blob: 6993c8159cf511565d0917ba69b34df94ca4ddbe (plain) (blame)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# The builds in this file are more complex (e.g. they need custom CMake
# configuration) and thus are unsuitable to the simple build matrix
# approach used in simple-builds
name: Linux builds (complex)

on: [push, pull_request]

jobs:
  build:
    name: ${{matrix.build_description}}, ${{matrix.cxx}}, C++${{matrix.std}} ${{matrix.build_type}}
    runs-on: ubuntu-20.04
    strategy:
      matrix:
        # We add builds one by one in this case, because there are no
        # dimensions that are shared across the builds
        include:

          # Single surrogate header build
          - cxx: clang++-10
            build_description: Surrogates build
            build_type: Debug
            std: 14
            other_pkgs: clang-10
            cmake_configurations: -DCATCH_BUILD_SURROGATES=ON

          # Extras and examples with gcc-7
          - cxx: g++-7
            build_description: Extras + Examples
            build_type: Debug
            std: 14
            other_pkgs: g++-7
            cmake_configurations: -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON -DCATCH_ENABLE_CMAKE_HELPER_TESTS=ON
          - cxx: g++-7
            build_description: Extras + Examples
            build_type: Release
            std: 14
            other_pkgs: g++-7
            cmake_configurations: -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON -DCATCH_ENABLE_CMAKE_HELPER_TESTS=ON

          # Extras and examples with Clang-10
          - cxx: clang++-10
            build_description: Extras + Examples
            build_type: Debug
            std: 17
            other_pkgs: clang-10
            cmake_configurations: -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON -DCATCH_ENABLE_CMAKE_HELPER_TESTS=ON
          - cxx: clang++-10
            build_description: Extras + Examples
            build_type: Release
            std: 17
            other_pkgs: clang-10
            cmake_configurations: -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON -DCATCH_ENABLE_CMAKE_HELPER_TESTS=ON

          # Configure tests with Clang-10
          - cxx: clang++-10
            build_description: CMake configuration tests
            build_type: Debug
            std: 14
            other_pkgs: clang-10
            cmake_configurations: -DCATCH_ENABLE_CONFIGURE_TESTS=ON

          # Valgrind test Clang-10
          - cxx: clang++-10
            build_description: Valgrind tests
            build_type: Debug
            std: 14
            other_pkgs: clang-10 valgrind
            cmake_configurations: -DMEMORYCHECK_COMMAND=`which valgrind` -DMEMORYCHECK_COMMAND_OPTIONS="-q --track-origins=yes --leak-check=full --num-callers=50 --show-leak-kinds=definite --error-exitcode=1"
            other_ctest_args: -T memcheck -LE uses-python


    steps:
    - uses: actions/checkout@v4

    - name: Prepare environment
      run: |
        sudo apt-get update
        sudo apt-get install -y ninja-build ${{matrix.other_pkgs}}

    - name: Configure build
      working-directory: ${{runner.workspace}}
      env:
        CXX: ${{matrix.cxx}}
        CXXFLAGS: ${{matrix.cxxflags}}
      # Note: $GITHUB_WORKSPACE is distinct from ${{runner.workspace}}.
      #       This is important
      run: |
        cmake -Bbuild -H$GITHUB_WORKSPACE \
              -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
              -DCMAKE_CXX_STANDARD=${{matrix.std}} \
              -DCMAKE_CXX_STANDARD_REQUIRED=ON \
              -DCMAKE_CXX_EXTENSIONS=OFF \
              -DCATCH_DEVELOPMENT_BUILD=ON \
              ${{matrix.cmake_configurations}} \
              -G Ninja

    - name: Build tests + lib
      working-directory: ${{runner.workspace}}/build
      run: ninja

    - name: Run tests
      env:
          CTEST_OUTPUT_ON_FAILURE: 1
      working-directory: ${{runner.workspace}}/build
      run: ctest -C ${{matrix.build_type}} -j `nproc` ${{matrix.other_ctest_args}}
  clang-tidy:
    name: clang-tidy ${{matrix.version}}, ${{matrix.build_description}}, C++${{matrix.std}} ${{matrix.build_type}}
    runs-on: ubuntu-22.04
    strategy:
      matrix:
        include:
          - version: "15"
            build_description: all
            build_type: Debug
            std: 17
            other_pkgs: ''
            cmake_configurations: -DCATCH_BUILD_EXAMPLES=ON -DCATCH_ENABLE_CMAKE_HELPER_TESTS=ON
    steps:
    - uses: actions/checkout@v4

    - name: Prepare environment
      run: |
        sudo apt-get update
        sudo apt-get install -y ninja-build clang-${{matrix.version}} clang-tidy-${{matrix.version}} ${{matrix.other_pkgs}}

    - name: Configure build
      working-directory: ${{runner.workspace}}
      env:
        CXX: clang++-${{matrix.version}}
        CXXFLAGS: ${{matrix.cxxflags}}
      # Note: $GITHUB_WORKSPACE is distinct from ${{runner.workspace}}.
      #       This is important
      run: |
        clangtidy="clang-tidy-${{matrix.version}};-use-color"
        # Use a dummy compiler/linker/ar/ranlib to effectively disable the
        # compilation and only run clang-tidy.
        cmake -Bbuild -H$GITHUB_WORKSPACE \
              -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
              -DCMAKE_CXX_STANDARD=${{matrix.std}} \
              -DCMAKE_CXX_STANDARD_REQUIRED=ON \
              -DCMAKE_CXX_EXTENSIONS=OFF \
              -DCATCH_DEVELOPMENT_BUILD=ON \
              -DCMAKE_CXX_CLANG_TIDY="$clangtidy" \
              -DCMAKE_CXX_COMPILER_LAUNCHER=/usr/bin/true \
              -DCMAKE_AR=/usr/bin/true \
              -DCMAKE_CXX_COMPILER_AR=/usr/bin/true \
              -DCMAKE_RANLIB=/usr/bin/true \
              -DCMAKE_CXX_LINK_EXECUTABLE=/usr/bin/true \
              ${{matrix.cmake_configurations}} \
              -G Ninja

    - name: Run clang-tidy
      working-directory: ${{runner.workspace}}/build
      run: ninja