summaryrefslogtreecommitdiffstats
path: root/.github/workflows/build-checks.yml
blob: 11672b71d55e5afbd031e178e1209fb7025bcbf2 (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
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
name: build-checks

on:
  push:
  pull_request:

jobs:
  build-checks:
    strategy:
      matrix:
        include:
          - name: clazy
          - name: clang-tidy
    runs-on: ubuntu-20.04
    name: ${{ matrix.name }}
    steps:
    - name: Check out repository
      uses: actions/checkout@v2
    - name: Install build dependencies
      run: |
        sudo apt-get update && sudo apt-get install -y --no-install-recommends \
          libavformat-dev \
          libchromaprint-dev \
          libebur128-dev \
          libfftw3-dev \
          libflac-dev \
          libid3tag0-dev \
          liblilv-dev \
          libmad0-dev \
          libmodplug-dev \
          libmp3lame-dev \
          libopus-dev \
          libopusfile-dev \
          libportmidi-dev \
          libprotobuf-dev \
          libqt5opengl5-dev \
          libqt5sql5-sqlite \
          libqt5svg5-dev \
          libqt5x11extras5-dev \
          librubberband-dev \
          libshout3-dev \
          libsndfile1-dev \
          libsoundtouch-dev \
          libsqlite3-dev \
          libtag1-dev \
          libupower-glib-dev \
          libusb-1.0-0-dev \
          libwavpack-dev \
          portaudio19-dev \
          protobuf-compiler \
          qt5-default \
          qtscript5-dev \
          qt5keychain-dev \
          clazy \
          clang-tidy \
          cmake
    - name: Create build directory
      run: mkdir build
    - name: Configure (clazy)
      if: matrix.name == 'clazy'
      # Disable optimizations as workaround for Clang 9 bug: https://bugs.llvm.org/show_bug.cgi?id=45034
      run: |
        cmake \
          -DCMAKE_BUILD_TYPE=Debug \
          -DWARNINGS_FATAL=ON \
          -DOPTIMIZE=off \
          -DBATTERY=ON \
          -DBROADCAST=ON \
          -DBULK=ON \
          -DHID=ON \
          -DLILV=ON \
          -DOPUS=ON \
          -DQTKEYCHAIN=ON \
          -DVINYLCONTROL=ON \
          -DFFMPEG=ON \
          -DKEYFINDER=ON \
          -DLOCALECOMPARE=ON \
          -DMAD=ON \
          -DMODPLUG=ON \
          -DWAVPACK=ON \
          ..
      working-directory: build
      env:
        LD: clang++
        CC: clang
        CXX: clazy
    - name: Configure (clang-tidy)
      if: matrix.name == 'clang-tidy'
      run: |
        cmake \
          -DCMAKE_BUILD_TYPE=Debug \
          -DCLANG_TIDY=clang-tidy \
          -DWARNINGS_FATAL=ON \
          -DBATTERY=ON \
          -DBROADCAST=ON \
          -DBULK=ON \
          -DHID=ON \
          -DLILV=ON \
          -DOPUS=ON \
          -DQTKEYCHAIN=ON \
          -DVINYLCONTROL=ON \
          -DFFMPEG=ON \
          -DKEYFINDER=ON \
          -DLOCALECOMPARE=ON \
          -DMAD=ON \
          -DMODPLUG=ON \
          -DWAVPACK=ON \
          ..
      working-directory: build
    - name: Set up problem matcher
      uses: ammaraskar/gcc-problem-matcher@master
    - name: Build
      # Do not abort on errors and build/check the whole project
      run: cmake --build . -j $(nproc) -- --keep-going
      working-directory: build
      env:
        CLAZY_CHECKS: level2,no-rule-of-two-soft,no-non-pod-global-static,no-qproperty-without-notify,no-wrong-qevent-cast,no-qstring-allocations,no-function-args-by-value,no-copyable-polymorphic,no-ctor-missing-parent-argument,no-missing-qobject-macro,no-rule-of-three,no-returning-void-expression,no-missing-typeinfo,no-base-class-event
        CLAZY_IGNORE_DIRS: lib/.*