diff --git a/.github/workflows/build_riscv-rt.yaml b/.github/workflows/build_riscv-rt.yaml new file mode 100644 index 00000000..076b1bd6 --- /dev/null +++ b/.github/workflows/build_riscv-rt.yaml @@ -0,0 +1,61 @@ +on: + push: + branches: [ master, add-riscv-rt ] + pull_request: + merge_group: + +name: Build check (riscv-rt) + +jobs: + build: + strategy: + matrix: + # All generated code should be running on stable now, MRSV is 1.59.0 + toolchain: [ stable, nightly, 1.59.0 ] + target: + - riscv32i-unknown-none-elf + - riscv32imc-unknown-none-elf + - riscv32imac-unknown-none-elf + - riscv64imac-unknown-none-elf + - riscv64gc-unknown-none-elf + example: + - empty + - multi_core + 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@v3 + - uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ matrix.toolchain }} + targets: ${{ matrix.target }} + - name: Build library (no features) + run: cargo build --package riscv-rt --target ${{ matrix.target }} + - name : Build library (s-mode) + run: cargo build --package riscv-rt --target ${{ matrix.target }} --features=s-mode + - name : Build library (single-hart) + run: cargo build --package riscv-rt --target ${{ matrix.target }} --features=single-hart + - name: Build library (all features) + run: cargo build --package riscv-rt --target ${{ matrix.target }} --all-features + + - name: Build example (no features) + run: RUSTFLAGS="-C link-arg=-Texamples/device.x" cargo build --package riscv-rt --target ${{ matrix.target }} --example ${{ matrix.example }} + - name : Build example (s-mode) + run: RUSTFLAGS="-C link-arg=-Texamples/device.x" cargo build --package riscv-rt --target ${{ matrix.target }} --example ${{ matrix.example }} --features=s-mode + - name : Build example (single-hart) + run: RUSTFLAGS="-C link-arg=-Texamples/device.x" cargo build --package riscv-rt --target ${{ matrix.target }} --example ${{ matrix.example }} --features=single-hart + - name: Build example (all features) + run: RUSTFLAGS="-C link-arg=-Texamples/device.x" cargo build --package riscv-rt --target ${{ matrix.target }} --example ${{ matrix.example }} --all-features + + # Job to check that all the builds succeeded + build-check: + needs: + - build + runs-on: ubuntu-latest + if: always() + steps: + - run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}' diff --git a/.github/workflows/build.yaml b/.github/workflows/build_riscv.yaml similarity index 71% rename from .github/workflows/build.yaml rename to .github/workflows/build_riscv.yaml index 44d88d22..b9897fa8 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build_riscv.yaml @@ -4,7 +4,7 @@ on: pull_request: merge_group: -name: Build check +name: Build check (riscv) jobs: # We check that the crate builds and links for all the toolchains and targets. @@ -13,24 +13,16 @@ jobs: matrix: # All generated code should be running on stable now, MRSV is 1.59.0 toolchain: [ stable, nightly, 1.60.0 ] - package: - - riscv - - riscv-rt target: - riscv32i-unknown-none-elf - riscv32imc-unknown-none-elf - riscv32imac-unknown-none-elf - riscv64imac-unknown-none-elf - riscv64gc-unknown-none-elf - cargo_flags: [ "--no-default-features", "--all-features" ] include: # Nightly is only for reference and allowed to fail - toolchain: nightly experimental: true - - package: riscv-rt - cargo_flags: - - "--features=s-mode" - - "--features=single-hart" runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental || false }} steps: @@ -39,8 +31,10 @@ jobs: with: toolchain: ${{ matrix.toolchain }} targets: ${{ matrix.target }} - - name: Build library - run: cargo build --package ${{ matrix.package }} --target ${{ matrix.target }} ${{ matrix.cargo_flags }} + - name: Build (no features) + run: cargo build --package riscv --target ${{ matrix.target }} + - 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: @@ -50,15 +44,14 @@ jobs: - macos-latest - ubuntu-latest - windows-latest - package: - - riscv - cargo_flags: [ "--no-default-features", "--all-features" ] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable - - name: Build crate for host OS - run: cargo build --package ${{ matrix.package }} ${{ matrix.cargo_flags }} + - name: Build crate for host OS (no features) + run: cargo build --package riscv + - name: Build crate for host OS (all features) + run: cargo build --package riscv --all-features # Job to check that all the builds succeeded build-check: diff --git a/.github/workflows/clippy.yaml b/.github/workflows/clippy.yaml index 73e1f49a..73b7b412 100644 --- a/.github/workflows/clippy.yaml +++ b/.github/workflows/clippy.yaml @@ -14,6 +14,7 @@ jobs: strategy: matrix: toolchain: [ stable, nightly ] + package: [ riscv, riscv-rt ] cargo_flags: - "--no-default-features" - "--all-features" @@ -21,6 +22,10 @@ jobs: # Nightly is only for reference and allowed to fail - toolchain: nightly experimental: true + - package: riscv-rt + cargo_flags: + - "--features=s-mode" + - "--features=single-hart" runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental || false }} steps: @@ -30,7 +35,7 @@ jobs: toolchain: ${{ matrix.toolchain }} components: clippy - name: Run clippy - run: cargo clippy --all ${{ matrix.cargo_flags }} -- -D warnings + run: cargo clippy --package ${{ matrix package }} --all ${{ matrix.cargo_flags }} -- -D warnings # Job to check that all the lint checks succeeded clippy-check: