aboutsummaryrefslogtreecommitdiffstats
path: root/gulrak-filesystem/.github/workflows/build_cmake.yml
blob: 783508bd896f36cb1387797d86a22270348fdb3d (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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
name: CMake Build Matrix

on: [ push, pull_request ]

jobs:
  build:
    name: ${{ matrix.config.name }}
    runs-on: ${{ matrix.config.os }}
    strategy:
      fail-fast: false
      matrix:
        config:
          - name: "Ubuntu 20.04 GCC 9.3"
            os: ubuntu-20.04
            build_type: Release
            packages: ninja-build
            generator: Ninja
            compatibility: "cxx_std_11;cxx_std_17;cxx_std_20"
            cc: gcc
            cxx: g++

          - name: "Ubuntu 20.04 Clang 10.0"
            os: ubuntu-20.04
            build_type: Release
            packages: ninja-build
            generator: Ninja
            compatibility: "cxx_std_11;cxx_std_17;cxx_std_20"
            cc: clang-10
            cxx: clang++-10

          - name: "Ubuntu 20.04 Clang 11.0"
            os: ubuntu-20.04
            build_type: Release
            packages: ninja-build clang-11 libc++-11-dev libc++abi-11-dev
            generator: Ninja
            compatibility: "cxx_std_11;cxx_std_17;cxx_std_20"
            cc: clang-11
            cxx: clang++-11

          - name: "Ubuntu 20.04 GCC 9.3 coverage"
            os: ubuntu-20.04
            build_type: Debug
            packages: ninja-build lcov
            generator: Ninja
            compatibility: "cxx_std_11;cxx_std_17;cxx_std_20"
            cc: gcc
            cxx: g++

          - name: "Ubuntu 18.04 GCC 8.4"
            os: ubuntu-18.04
            build_type: Release
            packages: ninja-build gcc-8 g++-8
            generator: Ninja
            compatibility: "cxx_std_11;cxx_std_17"
            cc: gcc-8
            cxx: g++-8

          - name: "Ubuntu 18.04 GCC 7.5"
            os: ubuntu-18.04
            build_type: Release
            packages: ninja-build
            generator: Ninja
            compatibility: "cxx_std_11;cxx_std_17"
            cc: gcc-7
            cxx: g++-7

          - name: "Ubuntu 18.04 GCC 6.5"
            os: ubuntu-18.04
            build_type: Release
            packages: ninja-build gcc-6 g++-6
            generator: Ninja
            compatibility: "cxx_std_11;cxx_std_17"
            cc: gcc-6
            cxx: g++-6

          - name: "Ubuntu 18.04 GCC 5.5"
            os: ubuntu-18.04
            build_type: Release
            packages: ninja-build gcc-5 g++-5
            generator: Ninja
            compatibility: "cxx_std_11;cxx_std_17"
            cc: gcc-5
            cxx: g++-5

          - name: "Ubuntu 18.04 Clang 9.0"
            os: ubuntu-18.04
            build_type: Release
            packages: ninja-build libc++-9-dev libc++abi-9-dev
            generator: Ninja
            compatibility: "cxx_std_11;cxx_std_17;cxx_std_20"
            cc: clang
            cxx: clang++

          - name: "Ubuntu 18.04 Clang 6.0"
            os: ubuntu-18.04
            build_type: Release
            packages: ninja-build clang-6.0
            generator: Ninja
            compatibility: "cxx_std_11;cxx_std_17"
            cc: clang-6.0
            cxx: clang++-6.0

          - name: "Ubuntu 18.04 Clang 5.0"
            os: ubuntu-18.04
            build_type: Release
            packages: ninja-build clang-5.0
            generator: Ninja
            compatibility: "cxx_std_11;cxx_std_17"
            cc: clang-5.0
            cxx: clang++-5.0

          - name: "Windows MSVC 2019"
            os: windows-latest
            build_type: Release
            packages: ninja
            generator: "Visual Studio 16 2019"
            compatibility: "cxx_std_11;cxx_std_17;cxx_std_20"
            cc: cl
            cxx: cl

          - name: "macOS 10.15 AppleClang"
            os: macos-10.15
            build_type: Release
            packages: ninja
            generator: Ninja
            compatibility: "cxx_std_11;cxx_std_17"
            cc: clang
            cxx: clang++

    steps:
      - uses: actions/checkout@v2

      - name: print environment
        run: |
          echo github.event.action: ${{ github.event.action }}
          echo github.event_name: ${{ github.event_name }}

      - name: Install dependencies on Ubuntu
        if: startsWith(matrix.config.os, 'ubuntu')
        shell: bash
        run: |
          sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
          sudo apt update
          sudo apt install ${{ matrix.config.packages }}

      - name: Install dependencies on windows
        if: startsWith(matrix.config.os, 'windows')
        run: |
          choco install ${{ matrix.config.packages }}

      - name: Install dependencies on macOS
        if: startsWith(matrix.config.os, 'macos')
        run: |
          brew install ${{ matrix.config.packages }}

      - name: Configure project
        shell: bash
        run: |
          export CC=${{ matrix.config.cc }}
          export CXX=${{ matrix.config.cxx }}
          ninja --version
          cmake --version
          mkdir build
          mkdir install
          if [[ "${{ matrix.config.build_type }}" == "Debug" ]]; then
            cmake -G "${{ matrix.config.generator }}" -S . -B build -DCMAKE_BUILD_TYPE=Debug -DGHC_COVERAGE=ON -DGHC_FILESYSTEM_TEST_COMPILE_FEATURES="${{ matrix.config.compatibility }}" -DCMAKE_INSTALL_PREFIX:PATH=install
          else
            cmake -G "${{ matrix.config.generator }}" -S . -B build -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} -DGHC_FILESYSTEM_TEST_COMPILE_FEATURES="${{ matrix.config.compatibility }}" -DCMAKE_INSTALL_PREFIX:PATH=install
          fi

      - name: Build project
        shell: bash
        run: |
          cmake --build build --config ${{ matrix.config.build_type }}

      - name: Run tests
        run: |
          cd build && ctest -C ${{ matrix.config.build_type }}

      - name: Collect coverage info
        if: startsWith(matrix.config.build_type, 'Debug')
        run: |
          cd build
          lcov --compat-libtool --directory . --capture --output-file coverage_output.info
          lcov --remove coverage_output.info '/usr/*' '*/c++/*' '*.h' '*/catch.hpp' -o coverage.info
          # sed -i 's|SF:/.*/filesystem/|SF:../|g' coverage.info

      - name: Upload coverage info
        if: startsWith(matrix.config.build_type, 'Debug')
        env:
          COVERALLS_DEBUG: true
          NODE_COVERALLS_DEBUG: 1
        uses: coverallsapp/github-action@master
        with:
          path-to-lcov: ${{ github.workspace }}/build/coverage.info
          github-token: ${{ secrets.GITHUB_TOKEN }}