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