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