1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- on:
- push:
- branches: [ master ]
- pull_request:
- merge_group:
- name: Build check (riscv)
- jobs:
- # We check that the crate builds and links for all the toolchains and targets.
- build-riscv:
- strategy:
- matrix:
- # All generated code should be running on stable now, MRSV is 1.60.0
- toolchain: [ stable, nightly, 1.60.0 ]
- target:
- - riscv32i-unknown-none-elf
- - riscv32imc-unknown-none-elf
- - riscv32imac-unknown-none-elf
- - riscv64imac-unknown-none-elf
- - riscv64gc-unknown-none-elf
- include:
- # Nightly is only for reference and allowed to fail
- - toolchain: nightly
- experimental: true
- runs-on: ubuntu-latest
- continue-on-error: ${{ matrix.experimental || false }}
- steps:
- - uses: actions/checkout@v4
- - uses: dtolnay/rust-toolchain@master
- with:
- toolchain: ${{ matrix.toolchain }}
- targets: ${{ matrix.target }}
- - name: Build (M-mode)
- run: cargo build --package riscv --target ${{ matrix.target }}
- - name: Build (M-mode, critical section)
- run: cargo build --package riscv --target ${{ matrix.target }} --features=critical-section-single-hart
- - name: Build (S-mode)
- run: cargo build --package riscv --target ${{ matrix.target }} --features=s-mode
- - name: Build (all features)
- run: cargo build --package riscv --target ${{ matrix.target }} --all-features
- # On MacOS, Ubuntu, and Windows, we at least make sure that the crate builds and links.
- build-others:
- strategy:
- matrix:
- os: [ macos-latest, ubuntu-latest, windows-latest ]
- runs-on: ${{ matrix.os }}
- steps:
- - uses: actions/checkout@v3
- - uses: dtolnay/rust-toolchain@stable
- - name: Build (no features)
- run: cargo build --package riscv
- - name: Build (all features)
- run: cargo build --package riscv --all-features
- # Job to check that all the builds succeeded
- build-check:
- needs:
- - build-riscv
- - build-others
- runs-on: ubuntu-latest
- if: always()
- steps:
- - run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'
|