name: Build test on: # Trigger the workflow on push or pull requests. push: pull_request: jobs: build: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: include: # x86-64 gcc - arch: x86_64 cc_pkg: gcc-x86-64-linux-gnu cxx_pkg: g++-x86-64-linux-gnu cc: x86_64-linux-gnu-gcc cxx: x86_64-linux-gnu-g++ sanitize: 0 # x86-64 gcc asan - arch: x86_64 cc_pkg: gcc-x86-64-linux-gnu cxx_pkg: g++-x86-64-linux-gnu cc: x86_64-linux-gnu-gcc cxx: x86_64-linux-gnu-g++ sanitize: 1 # x86-64 clang - arch: x86_64 cc_pkg: clang cxx_pkg: clang cc: clang cxx: clang++ liburing_extra_flags: -Wshorten-64-to-32 extra_flags: -Wmissing-prototypes -Wstrict-prototypes -Wunreachable-code-loop-increment -Wunreachable-code -Wmissing-variable-declarations -Wextra-semi-stmt sanitize: 0 # x86 (32-bit) gcc - arch: i686 cc_pkg: gcc-i686-linux-gnu cxx_pkg: g++-i686-linux-gnu cc: i686-linux-gnu-gcc cxx: i686-linux-gnu-g++ sanitize: 0 # aarch64 gcc - arch: aarch64 cc_pkg: gcc-aarch64-linux-gnu cxx_pkg: g++-aarch64-linux-gnu cc: aarch64-linux-gnu-gcc cxx: aarch64-linux-gnu-g++ sanitize: 0 # arm (32-bit) gcc - arch: arm cc_pkg: gcc-arm-linux-gnueabi cxx_pkg: g++-arm-linux-gnueabi cc: arm-linux-gnueabi-gcc cxx: arm-linux-gnueabi-g++ sanitize: 0 # riscv64 - arch: riscv64 cc_pkg: gcc-riscv64-linux-gnu cxx_pkg: g++-riscv64-linux-gnu cc: riscv64-linux-gnu-gcc cxx: riscv64-linux-gnu-g++ sanitize: 0 # powerpc64 - arch: powerpc64 cc_pkg: gcc-powerpc64-linux-gnu cxx_pkg: g++-powerpc64-linux-gnu cc: powerpc64-linux-gnu-gcc cxx: powerpc64-linux-gnu-g++ sanitize: 0 # powerpc - arch: powerpc cc_pkg: gcc-powerpc-linux-gnu cxx_pkg: g++-powerpc-linux-gnu cc: powerpc-linux-gnu-gcc cxx: powerpc-linux-gnu-g++ sanitize: 0 # alpha - arch: alpha cc_pkg: gcc-alpha-linux-gnu cxx_pkg: g++-alpha-linux-gnu cc: alpha-linux-gnu-gcc cxx: alpha-linux-gnu-g++ sanitize: 0 # mips64 - arch: mips64 cc_pkg: gcc-mips64-linux-gnuabi64 cxx_pkg: g++-mips64-linux-gnuabi64 cc: mips64-linux-gnuabi64-gcc cxx: mips64-linux-gnuabi64-g++ sanitize: 0 # mips - arch: mips cc_pkg: gcc-mips-linux-gnu cxx_pkg: g++-mips-linux-gnu cc: mips-linux-gnu-gcc cxx: mips-linux-gnu-g++ sanitize: 0 # hppa - arch: hppa cc_pkg: gcc-hppa-linux-gnu cxx_pkg: g++-hppa-linux-gnu cc: hppa-linux-gnu-gcc cxx: hppa-linux-gnu-g++ sanitize: 0 env: FLAGS: -g -O3 -Wall -Wextra -Werror -Wno-sign-compare ${{matrix.extra_flags}} SANITIZE: ${{matrix.sanitize}} # Flags for building sources in src/ dir only. LIBURING_CFLAGS: ${{matrix.liburing_extra_flags}} steps: - name: Checkout source uses: actions/checkout@v4 - name: Install Compilers run: | if [[ "${{matrix.cc_pkg}}" == "clang" ]]; then \ wget https://apt.llvm.org/llvm.sh -O /tmp/llvm.sh; \ sudo apt-get purge --auto-remove llvm python3-lldb-14 llvm-14 -y; \ sudo bash /tmp/llvm.sh 17; \ sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-17 400; \ sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-17 400; \ else \ sudo apt-get update -y; \ sudo apt-get install -y ${{matrix.cc_pkg}} ${{matrix.cxx_pkg}}; \ fi; - name: Display compiler versions run: | ${{matrix.cc}} --version; ${{matrix.cxx}} --version; - name: Build if: ${{matrix.sanitizer == '0'}} run: | ./configure --cc=${{matrix.cc}} --cxx=${{matrix.cxx}}; make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS"; - name: Build if: ${{matrix.sanitizer == '1'}} run: | ./configure --cc=${{matrix.cc}} --cxx=${{matrix.cxx}} --enable-sanitizer; make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS"; - name: Test install command run: | sudo make install;