• 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-22.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
23          # x86-64 clang
24          - arch: x86_64
25            cc_pkg: clang
26            cxx_pkg: clang
27            cc: clang
28            cxx: clang++
29            liburing_extra_flags: -Wshorten-64-to-32
30            extra_flags: -Wmissing-prototypes -Wstrict-prototypes -Wunreachable-code-loop-increment -Wunreachable-code -Wmissing-variable-declarations -Wextra-semi-stmt
31
32          # x86 (32-bit) gcc
33          - arch: i686
34            cc_pkg: gcc-i686-linux-gnu
35            cxx_pkg: g++-i686-linux-gnu
36            cc: i686-linux-gnu-gcc
37            cxx: i686-linux-gnu-g++
38
39          # aarch64 gcc
40          - arch: aarch64
41            cc_pkg: gcc-aarch64-linux-gnu
42            cxx_pkg: g++-aarch64-linux-gnu
43            cc: aarch64-linux-gnu-gcc
44            cxx: aarch64-linux-gnu-g++
45
46          # arm (32-bit) gcc
47          - arch: arm
48            cc_pkg: gcc-arm-linux-gnueabi
49            cxx_pkg: g++-arm-linux-gnueabi
50            cc: arm-linux-gnueabi-gcc
51            cxx: arm-linux-gnueabi-g++
52
53          # riscv64
54          - arch: riscv64
55            cc_pkg: gcc-riscv64-linux-gnu
56            cxx_pkg: g++-riscv64-linux-gnu
57            cc: riscv64-linux-gnu-gcc
58            cxx: riscv64-linux-gnu-g++
59
60          # powerpc64
61          - arch: powerpc64
62            cc_pkg: gcc-powerpc64-linux-gnu
63            cxx_pkg: g++-powerpc64-linux-gnu
64            cc: powerpc64-linux-gnu-gcc
65            cxx: powerpc64-linux-gnu-g++
66
67          # powerpc
68          - arch: powerpc
69            cc_pkg: gcc-powerpc-linux-gnu
70            cxx_pkg: g++-powerpc-linux-gnu
71            cc: powerpc-linux-gnu-gcc
72            cxx: powerpc-linux-gnu-g++
73
74          # alpha
75          - arch: alpha
76            cc_pkg: gcc-alpha-linux-gnu
77            cxx_pkg: g++-alpha-linux-gnu
78            cc: alpha-linux-gnu-gcc
79            cxx: alpha-linux-gnu-g++
80
81          # mips64
82          - arch: mips64
83            cc_pkg: gcc-mips64-linux-gnuabi64
84            cxx_pkg: g++-mips64-linux-gnuabi64
85            cc: mips64-linux-gnuabi64-gcc
86            cxx: mips64-linux-gnuabi64-g++
87
88          # mips
89          - arch: mips
90            cc_pkg: gcc-mips-linux-gnu
91            cxx_pkg: g++-mips-linux-gnu
92            cc: mips-linux-gnu-gcc
93            cxx: mips-linux-gnu-g++
94
95          # hppa
96          - arch: hppa
97            cc_pkg: gcc-hppa-linux-gnu
98            cxx_pkg: g++-hppa-linux-gnu
99            cc: hppa-linux-gnu-gcc
100            cxx: hppa-linux-gnu-g++
101
102    env:
103      FLAGS: -g -O3 -Wall -Wextra -Werror -Wno-sign-compare ${{matrix.extra_flags}}
104
105      # Flags for building sources in src/ dir only.
106      LIBURING_CFLAGS: ${{matrix.liburing_extra_flags}}
107
108    steps:
109    - name: Checkout source
110      uses: actions/checkout@v3
111
112    - name: Install Compilers
113      run: |
114        if [[ "${{matrix.cc_pkg}}" == "clang" ]]; then \
115            wget https://apt.llvm.org/llvm.sh -O /tmp/llvm.sh; \
116            sudo apt-get purge --auto-remove llvm python3-lldb-14 llvm-14 -y; \
117            sudo bash /tmp/llvm.sh 17; \
118            sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-17 400; \
119            sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-17 400; \
120        else \
121            sudo apt-get update -y; \
122            sudo apt-get install -y ${{matrix.cc_pkg}} ${{matrix.cxx_pkg}}; \
123        fi;
124
125    - name: Display compiler versions
126      run: |
127        ${{matrix.cc}} --version;
128        ${{matrix.cxx}} --version;
129
130    - name: Build
131      run: |
132        ./configure --cc=${{matrix.cc}} --cxx=${{matrix.cxx}};
133        make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS";
134
135    - name: Test install command
136      run: |
137        sudo make install;
138