aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/build.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/build.yml')
-rw-r--r--.github/workflows/build.yml127
1 files changed, 127 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..88192ff
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,127 @@
+name: Build test
+
+on:
+ # Trigger the workflow on push or pull requests.
+ push:
+ pull_request:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ 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++
+
+ # x86-64 clang
+ - arch: x86_64
+ cc_pkg: clang
+ cxx_pkg: clang
+ cc: clang
+ cxx: clang++
+
+ # 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++
+
+ # 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++
+
+ # 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++
+
+ # 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++
+
+ # 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++
+
+ # 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++
+
+ # 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++
+
+ # 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++
+
+ env:
+ FLAGS: -g -O2 -Wall -Wextra -Werror
+
+ steps:
+ - name: Checkout source
+ uses: actions/checkout@v2
+
+ - name: Install Compilers
+ run: |
+ if [[ "${{matrix.cc_pkg}}" == "clang" ]]; then \
+ wget https://apt.llvm.org/llvm.sh -O /tmp/llvm.sh; \
+ sudo bash /tmp/llvm.sh 15; \
+ sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-15 400; \
+ sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-15 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
+ run: |
+ ./configure --cc=${{matrix.cc}} --cxx=${{matrix.cxx}};
+ make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS";
+
+ - name: Build nolibc
+ run: |
+ if [[ "${{matrix.arch}}" == "x86_64" || "${{matrix.arch}}" == "i686" ]]; then \
+ make clean; \
+ ./configure --cc=${{matrix.cc}} --cxx=${{matrix.cxx}} --nolibc; \
+ make -j$(nproc) V=1 CPPFLAGS="-Werror" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS"; \
+ else \
+ echo "Skipping nolibc build, this arch doesn't support building liburing without libc"; \
+ fi;
+
+ - name: Test install command
+ run: |
+ sudo make install;