| name: riscv64-qemu-test |
| |
| on: [push, pull_request] |
| |
| jobs: |
| test: |
| runs-on: ubuntu-latest |
| env: |
| RISCV_CROSSCOMPILE: "ON" |
| riscv_gnu_toolchain_download_path: https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.07.03/riscv64-glibc-ubuntu-24.04-gcc-nightly-2025.07.03-nightly.tar.xz |
| RISCV_PATH: /opt/riscv |
| |
| steps: |
| - uses: actions/checkout@v4 |
| with: |
| submodules: recursive |
| |
| - name: Install dependencies |
| run: | |
| sudo apt update |
| sudo apt install -y --no-install-recommends \ |
| qemu-user qemu-user-static \ |
| build-essential \ |
| cmake \ |
| git |
| sudo mkdir -p $RISCV_PATH |
| wget ${riscv_gnu_toolchain_download_path} -O riscv-toolchain.tar.xz |
| sudo tar -xvf riscv-toolchain.tar.xz -C $RISCV_PATH --strip-components=1 |
| sudo sed -i "s|libdir='/mnt/riscv/riscv64-unknown-linux-gnu/lib'|libdir='$RISCV_PATH/riscv64-unknown-linux-gnu/lib'|g" $RISCV_PATH/riscv64-unknown-linux-gnu/lib/libatomic.la |
| |
| - name: Build and Run Unit Tests |
| run: | |
| export PATH=$RISCV_PATH/bin:$PATH |
| export LD_LIBRARY_PATH="/opt/riscv/lib:$LD_LIBRARY_PATH" |
| export QEMU_LD_PREFIX=$RISCV_PATH/sysroot |
| mkdir build && cd build |
| cmake -DCMAKE_BUILD_TYPE=Release ../ |
| make -j$(nproc) |
| make test |
| |
| - name: Run Benchmark |
| run: ./build/snappy_benchmark |
| working-directory: ./ |