• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1name: Build test
2
3on:
4  # Trigger the workflow on push or pull requests.
5  push:
6  pull_request:
7
8jobs:
9  build:
10    runs-on: ubuntu-24.04
11
12    strategy:
13      fail-fast: false
14      matrix:
15        include:
16          # x86-64 gcc
17          - arch: x86_64
18            cc_pkg: gcc-x86-64-linux-gnu
19            cxx_pkg: g++-x86-64-linux-gnu
20            cc: x86_64-linux-gnu-gcc
21            cxx: x86_64-linux-gnu-g++
22            sanitize: 0
23
24          # x86-64 gcc asan
25          - arch: x86_64
26            cc_pkg: gcc-x86-64-linux-gnu
27            cxx_pkg: g++-x86-64-linux-gnu
28            cc: x86_64-linux-gnu-gcc
29            cxx: x86_64-linux-gnu-g++
30            sanitize: 1
31
32          # x86-64 clang
33          - arch: x86_64
34            cc_pkg: clang
35            cxx_pkg: clang
36            cc: clang
37            cxx: clang++
38            liburing_extra_flags: -Wshorten-64-to-32
39            extra_flags: -Wmissing-prototypes -Wstrict-prototypes -Wunreachable-code-loop-increment -Wunreachable-code -Wmissing-variable-declarations -Wextra-semi-stmt
40            sanitize: 0
41
42          # x86 (32-bit) gcc
43          - arch: i686
44            cc_pkg: gcc-i686-linux-gnu
45            cxx_pkg: g++-i686-linux-gnu
46            cc: i686-linux-gnu-gcc
47            cxx: i686-linux-gnu-g++
48            sanitize: 0
49
50          # aarch64 gcc
51          - arch: aarch64
52            cc_pkg: gcc-aarch64-linux-gnu
53            cxx_pkg: g++-aarch64-linux-gnu
54            cc: aarch64-linux-gnu-gcc
55            cxx: aarch64-linux-gnu-g++
56            sanitize: 0
57
58          # arm (32-bit) gcc
59          - arch: arm
60            cc_pkg: gcc-arm-linux-gnueabi
61            cxx_pkg: g++-arm-linux-gnueabi
62            cc: arm-linux-gnueabi-gcc
63            cxx: arm-linux-gnueabi-g++
64            sanitize: 0
65
66          # riscv64
67          - arch: riscv64
68            cc_pkg: gcc-riscv64-linux-gnu
69            cxx_pkg: g++-riscv64-linux-gnu
70            cc: riscv64-linux-gnu-gcc
71            cxx: riscv64-linux-gnu-g++
72            sanitize: 0
73
74          # powerpc64
75          - arch: powerpc64
76            cc_pkg: gcc-powerpc64-linux-gnu
77            cxx_pkg: g++-powerpc64-linux-gnu
78            cc: powerpc64-linux-gnu-gcc
79            cxx: powerpc64-linux-gnu-g++
80            sanitize: 0
81
82          # powerpc
83          - arch: powerpc
84            cc_pkg: gcc-powerpc-linux-gnu
85            cxx_pkg: g++-powerpc-linux-gnu
86            cc: powerpc-linux-gnu-gcc
87            cxx: powerpc-linux-gnu-g++
88            sanitize: 0
89
90          # alpha
91          - arch: alpha
92            cc_pkg: gcc-alpha-linux-gnu
93            cxx_pkg: g++-alpha-linux-gnu
94            cc: alpha-linux-gnu-gcc
95            cxx: alpha-linux-gnu-g++
96            sanitize: 0
97
98          # mips64
99          - arch: mips64
100            cc_pkg: gcc-mips64-linux-gnuabi64
101            cxx_pkg: g++-mips64-linux-gnuabi64
102            cc: mips64-linux-gnuabi64-gcc
103            cxx: mips64-linux-gnuabi64-g++
104            sanitize: 0
105
106          # mips
107          - arch: mips
108            cc_pkg: gcc-mips-linux-gnu
109            cxx_pkg: g++-mips-linux-gnu
110            cc: mips-linux-gnu-gcc
111            cxx: mips-linux-gnu-g++
112            sanitize: 0
113
114          # hppa
115          - arch: hppa
116            cc_pkg: gcc-hppa-linux-gnu
117            cxx_pkg: g++-hppa-linux-gnu
118            cc: hppa-linux-gnu-gcc
119            cxx: hppa-linux-gnu-g++
120            sanitize: 0
121
122    env:
123      FLAGS: -g -O3 -Wall -Wextra -Werror -Wno-sign-compare ${{matrix.extra_flags}}
124      SANITIZE: ${{matrix.sanitize}}
125
126      # Flags for building sources in src/ dir only.
127      LIBURING_CFLAGS: ${{matrix.liburing_extra_flags}}
128
129    steps:
130    - name: Checkout source
131      uses: actions/checkout@v4
132
133    - name: Install Compilers
134      run: |
135        if [[ "${{matrix.cc_pkg}}" == "clang" ]]; then \
136            wget https://apt.llvm.org/llvm.sh -O /tmp/llvm.sh; \
137            sudo apt-get purge --auto-remove llvm python3-lldb-14 llvm-14 -y; \
138            sudo bash /tmp/llvm.sh 17; \
139            sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-17 400; \
140            sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-17 400; \
141        else \
142            sudo apt-get update -y; \
143            sudo apt-get install -y ${{matrix.cc_pkg}} ${{matrix.cxx_pkg}}; \
144        fi;
145
146    - name: Display compiler versions
147      run: |
148        ${{matrix.cc}} --version;
149        ${{matrix.cxx}} --version;
150
151    - name: Build
152      if: ${{matrix.sanitizer == '0'}}
153      run: |
154        ./configure --cc=${{matrix.cc}} --cxx=${{matrix.cxx}};
155        make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS";
156
157    - name: Build
158      if: ${{matrix.sanitizer == '1'}}
159      run: |
160        ./configure --cc=${{matrix.cc}} --cxx=${{matrix.cxx}} --enable-sanitizer;
161        make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS";
162
163    - name: Test install command
164      run: |
165        sudo make install;
166