name: ci on: push: branches: [master] paths: - '.github/workflows/ci.yml' - '*.h' - '*.c' pull_request: branches: [master] paths: - '.github/workflows/ci.yml' - '*.h' - '*.c' concurrency: group: ci-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: ubuntu: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: build-test run: | gcc main.c -o ruapu ./ruapu - name: build-test-clang run: | clang main.c -o ruapu-clang ./ruapu-clang - name: build-test-python run: | python3 -m pip install pip -U python3 -m pip install setuptools -U cd python pip3 install . python3 -c 'import ruapu; print(ruapu.supports("neon")); print(ruapu.supports(isa="avx"))' python3 -c 'import ruapu; print(ruapu.rua())' - name: build-test-rust run: | rustup update stable rustup default stable cd rust cargo build --verbose cargo test --verbose - uses: erlef/setup-beam@v1 with: otp-version: 26.2 rebar3-version: "3.22.1" - name: build-test-erlang run: | cd erlang rebar3 compile rebar3 eunit - name: build-test-golang run: | cd go go build -o ruapu-go ./ruapu-go macos: runs-on: macos-latest steps: - uses: actions/checkout@v4 - name: build-test run: | clang main.c -o ruapu ./ruapu - name: build-test-python run: | python3 -m pip install pip -U python3 -m pip install setuptools -U cd python pip3 install . python3 -c 'import ruapu; print(ruapu.supports("neon")); print(ruapu.supports(isa="avx"))' python3 -c 'import ruapu; print(ruapu.rua())' - name: build-test-rust run: | rustup update stable rustup default stable cd rust cargo build --verbose cargo test --verbose - name: build-test-golang run: | cd go go build -o ruapu-go ./ruapu-go macos-arm64: runs-on: macos-14 steps: - uses: actions/checkout@v4 - name: build-test run: | clang main.c -o ruapu ./ruapu - name: build-test-python run: | python3 -m pip install pip -U python3 -m pip install setuptools -U cd python pip3 install . python3 -c 'import ruapu; print(ruapu.supports("neon")); print(ruapu.supports(isa="avx"))' python3 -c 'import ruapu; print(ruapu.rua())' - name: build-test-rust run: | rustup update stable rustup default stable cd rust cargo build --verbose cargo test --verbose - uses: actions/setup-go@v2 with: go-version: 1.21.x - name: build-test-golang run: | cd go go build -o ruapu-go ./ruapu-go windows: runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: ilammy/msvc-dev-cmd@v1 - name: build-test run: | cl.exe /Fe: ruapu.exe main.c .\ruapu.exe - name: build-test-mingw shell: bash run: | gcc main.c -o ruapu-mingw.exe ./ruapu-mingw.exe - name: build-test-python run: | python3 -m pip install pip -U python3 -m pip install setuptools -U cd python pip3 install . python3 -c 'import ruapu; print(ruapu.supports("neon")); print(ruapu.supports(isa="avx"))' python3 -c 'import ruapu; print(ruapu.rua())' - name: build-test-rust run: | rustup update stable rustup default stable cd rust cargo build --verbose cargo test --verbose - uses: erlef/setup-beam@v1 with: otp-version: 26.2 rebar3-version: "3.22.1" - name: build-test-erlang run: | cd erlang rebar3 compile rebar3 eunit - name: build-test-golang run: | cd go go build -o ruapu-go.exe ./ruapu-go.exe qemu: runs-on: ubuntu-latest strategy: fail-fast: false matrix: arch: [ arm, arm64, mips64le, ppc64le, riscv64, s390x ] steps: - uses: actions/checkout@v4 - name: setup-qemu uses: docker/setup-qemu-action@v3 with: platforms: linux/${{ matrix.arch }} - name: build-test run: | docker run -u root --rm -v $(pwd):/${{ github.workspace }} -w ${{ github.workspace }} --platform linux/${{ matrix.arch }} debian:unstable-slim \ /bin/bash -c "apt update && apt install -y build-essential && gcc main.c -o ruapu && ./ruapu"