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-latest 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 30 # x86 (32-bit) gcc 31 - arch: i686 32 cc_pkg: gcc-i686-linux-gnu 33 cxx_pkg: g++-i686-linux-gnu 34 cc: i686-linux-gnu-gcc 35 cxx: i686-linux-gnu-g++ 36 37 # aarch64 gcc 38 - arch: aarch64 39 cc_pkg: gcc-aarch64-linux-gnu 40 cxx_pkg: g++-aarch64-linux-gnu 41 cc: aarch64-linux-gnu-gcc 42 cxx: aarch64-linux-gnu-g++ 43 44 # arm (32-bit) gcc 45 - arch: arm 46 cc_pkg: gcc-arm-linux-gnueabi 47 cxx_pkg: g++-arm-linux-gnueabi 48 cc: arm-linux-gnueabi-gcc 49 cxx: arm-linux-gnueabi-g++ 50 51 # powerpc64 52 - arch: powerpc64 53 cc_pkg: gcc-powerpc64-linux-gnu 54 cxx_pkg: g++-powerpc64-linux-gnu 55 cc: powerpc64-linux-gnu-gcc 56 cxx: powerpc64-linux-gnu-g++ 57 58 # powerpc 59 - arch: powerpc 60 cc_pkg: gcc-powerpc-linux-gnu 61 cxx_pkg: g++-powerpc-linux-gnu 62 cc: powerpc-linux-gnu-gcc 63 cxx: powerpc-linux-gnu-g++ 64 65 # alpha 66 - arch: alpha 67 cc_pkg: gcc-alpha-linux-gnu 68 cxx_pkg: g++-alpha-linux-gnu 69 cc: alpha-linux-gnu-gcc 70 cxx: alpha-linux-gnu-g++ 71 72 # mips64 73 - arch: mips64 74 cc_pkg: gcc-mips64-linux-gnuabi64 75 cxx_pkg: g++-mips64-linux-gnuabi64 76 cc: mips64-linux-gnuabi64-gcc 77 cxx: mips64-linux-gnuabi64-g++ 78 79 # mips 80 - arch: mips 81 cc_pkg: gcc-mips-linux-gnu 82 cxx_pkg: g++-mips-linux-gnu 83 cc: mips-linux-gnu-gcc 84 cxx: mips-linux-gnu-g++ 85 86 env: 87 FLAGS: -g -O2 -Wall -Wextra -Werror 88 89 steps: 90 - name: Checkout source 91 uses: actions/checkout@v2 92 93 - name: Install Compilers 94 run: | 95 if [[ "${{matrix.cc_pkg}}" == "clang" ]]; then \ 96 wget https://apt.llvm.org/llvm.sh -O /tmp/llvm.sh; \ 97 sudo bash /tmp/llvm.sh 15; \ 98 sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-15 400; \ 99 sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-15 400; \ 100 else \ 101 sudo apt-get update -y; \ 102 sudo apt-get install -y ${{matrix.cc_pkg}} ${{matrix.cxx_pkg}}; \ 103 fi; 104 105 - name: Display compiler versions 106 run: | 107 ${{matrix.cc}} --version; 108 ${{matrix.cxx}} --version; 109 110 - name: Build 111 run: | 112 ./configure --cc=${{matrix.cc}} --cxx=${{matrix.cxx}}; 113 make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS"; 114 115 - name: Build nolibc 116 run: | 117 if [[ "${{matrix.arch}}" == "x86_64" || "${{matrix.arch}}" == "i686" ]]; then \ 118 make clean; \ 119 ./configure --cc=${{matrix.cc}} --cxx=${{matrix.cxx}} --nolibc; \ 120 make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS"; \ 121 else \ 122 echo "Skipping nolibc build, this arch doesn't support building liburing without libc"; \ 123 fi; 124 125 - name: Test install command 126 run: | 127 sudo make install; 128