Rework DMA descriptors #3416
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
pull_request: | |
paths-ignore: | |
- "**/CHANGELOG.md" | |
- "**/README.md" | |
push: | |
branches-ignore: | |
- "gh-readonly-queue/**" | |
paths-ignore: | |
- "**/CHANGELOG.md" | |
- "**/README.md" | |
merge_group: | |
workflow_dispatch: | |
env: | |
CARGO_TERM_COLOR: always | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
MSRV: "1.67.0" | |
# Cancel any currently running workflows from the same PR, branch, or | |
# tag when a new workflow is triggered. | |
# | |
# https://stackoverflow.com/a/66336834 | |
concurrency: | |
cancel-in-progress: true | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
jobs: | |
# -------------------------------------------------------------------------- | |
# Check Packages | |
esp-hal-smartled: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf,riscv32imac-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: esp-rs/xtensa-toolchain@v1.5 | |
with: | |
ldproxy: false | |
override: false | |
- uses: Swatinem/rust-cache@v2 | |
# Build all RISC-V targets: | |
- name: build (esp32c3) | |
run: cd esp-hal-smartled/ && cargo +nightly build -Zbuild-std=core --target=riscv32imc-unknown-none-elf --features=esp32c3 | |
- name: build (esp32c6) | |
run: cd esp-hal-smartled/ && cargo +nightly build -Zbuild-std=core --target=riscv32imac-unknown-none-elf --features=esp32c6 | |
- name: build (esp32h2) | |
run: cd esp-hal-smartled/ && cargo +nightly build -Zbuild-std=core --target=riscv32imac-unknown-none-elf --features=esp32h2 | |
# Build all Xtensa targets: | |
- name: build (esp32) | |
run: cd esp-hal-smartled/ && cargo +esp build -Zbuild-std=core --target=xtensa-esp32-none-elf --features=esp32,xtal-40mhz | |
- name: build (esp32s2) | |
run: cd esp-hal-smartled/ && cargo +esp build -Zbuild-std=core --target=xtensa-esp32s2-none-elf --features=esp32s2 | |
- name: build (esp32s3) | |
run: cd esp-hal-smartled/ && cargo +esp build -Zbuild-std=core --target=xtensa-esp32s3-none-elf --features=esp32s3 | |
# Ensure documentation can be built (requires a chip feature!) | |
- name: rustdoc | |
run: cd esp-hal-smartled/ && cargo doc -Zbuild-std=core --target=riscv32imc-unknown-none-elf --features=esp32c3 | |
esp-lp-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf,riscv32imac-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
- name: build esp-lp-hal (esp32c6) | |
run: cd esp-lp-hal/ && cargo build --release --target=riscv32imac-unknown-none-elf --features=esp32c6 --examples | |
- name: build esp-lp-hal (esp32s2) | |
run: cd esp-lp-hal/ && cargo build --release --target=riscv32imc-unknown-none-elf --features=esp32s2 --examples | |
- name: build esp-lp-hal (esp32s3) | |
run: cd esp-lp-hal/ && cargo build --release --target=riscv32imc-unknown-none-elf --features=esp32s3 --examples | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: | | |
cd esp-lp-hal/ | |
cargo doc --features=esp32c6 | |
cargo doc --features=esp32s2 | |
cargo doc --features=esp32s3 | |
esp-riscv-rt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf,riscv32imac-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
- name: Build esp-riscv-rt (riscv32imc, no features) | |
run: cd esp-riscv-rt/ && cargo build -Zbuild-std=core --target=riscv32imc-unknown-none-elf | |
- name: Build esp-riscv-rt (riscv32imac, no features) | |
run: cd esp-riscv-rt/ && cargo build -Zbuild-std=core --target=riscv32imac-unknown-none-elf | |
- name: Build esp-riscv-rt (riscv32imc, all features) | |
run: cd esp-riscv-rt/ && cargo build -Zbuild-std=core --target=riscv32imc-unknown-none-elf --features=ci | |
- name: Build esp-riscv-rt (riscv32imac, all features) | |
run: cd esp-riscv-rt/ && cargo build -Zbuild-std=core --target=riscv32imac-unknown-none-elf --features=ci | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp-riscv-rt/ && cargo doc | |
esp32-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: esp-rs/xtensa-toolchain@v1.5 | |
with: | |
default: true | |
buildtargets: esp32 | |
ldproxy: false | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
- name: build esp32-hal (no features) | |
run: cd esp32-hal/ && cargo build --examples | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32-hal (common features) | |
run: | | |
cd esp32-hal/ | |
cargo build --examples --features=eh1,ufmt,log | |
cargo build --examples --features=eh1,ufmt,defmt | |
- name: check esp32-hal (embassy) | |
run: | | |
cd esp32-hal/ | |
cargo check --example=embassy_hello_world --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo check --example=embassy_multicore --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo check --example=embassy_multicore_interrupt --features=embassy,embassy-time-timg0,embassy-executor-interrupt | |
cargo check --example=embassy_multiprio --features=embassy,embassy-time-timg0,embassy-executor-thread,embassy-executor-interrupt | |
- name: check esp32-hal (embassy, async) | |
run: | | |
cd esp32-hal/ | |
cargo check --example=embassy_wait --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_spi --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_serial --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_i2c --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_i2s_read --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_i2s_sound --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo check --example=embassy_rmt_rx --features=embassy,embassy-time-timg0,async,embassy-executor-thread --release | |
cargo check --example=embassy_rmt_tx --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
- name: check esp32-hal (embassy, log/defmt) | |
run: | | |
cd esp32-hal/ | |
cargo check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,defmt | |
cargo check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,log | |
- name: check esp32-hal (psram) | |
run: cd esp32-hal/ && cargo check --example=psram --features=psram-2m --release # This example requires release! | |
# Make sure we can build without default features enabled, too! | |
- name: check esp32-hal (no default features) | |
run: cd esp32-hal/ && cargo build --no-default-features --features=xtal-40mhz | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32-hal/ && cargo doc --features=eh1 | |
esp32c2-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
# We also use this as an opportunity to verify that the examples link | |
# for each supported image format. | |
- name: build esp32c2-hal (no features) | |
run: cd esp32c2-hal/ && cargo build --examples | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32c2-hal (common features) | |
run: | | |
cd esp32c2-hal/ | |
cargo +nightly build --examples --features=eh1,ufmt,log | |
cargo +nightly build --examples --features=eh1,ufmt,defmt | |
- name: check esp32c2-hal (async, systick) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-systick,embassy-executor-thread | |
- name: check esp32c2-hal (async, timg0) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-timg0,embassy-executor-thread | |
- name: check esp32c2-hal (async, gpio) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_wait --features=embassy,embassy-time-systick,embassy-executor-thread,async | |
- name: check esp32c2-hal (async, multiprio) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_multiprio --features=embassy,embassy-time-systick,embassy-executor-thread,embassy-executor-interrupt | |
- name: check esp32c2-hal (async, spi) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_spi --features=embassy,embassy-time-systick,embassy-executor-thread,async | |
- name: check esp32c2-hal (async, serial) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_serial --features=embassy,embassy-time-systick,embassy-executor-thread,async | |
- name: check esp32c2-hal (async, i2c) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=embassy_i2c --features=embassy,embassy-time-systick,embassy-executor-thread,async | |
- name: check esp32c2-hal (interrupt-preemption) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=interrupt_preemption --features=interrupt-preemption | |
- name: check esp32c2-hal (direct-vectoring) | |
run: cd esp32c2-hal/ && cargo +nightly check --example=direct-vectoring --features=direct-vectoring | |
- name: check esp32c2-hal (embassy, log/defmt) | |
run: | | |
cd esp32c2-hal/ | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,embassy-executor-thread,defmt | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,embassy-executor-thread,log | |
# Make sure we can build without default features enabled, too! | |
- name: check esp32c2-hal (no default features) | |
run: cd esp32c2-hal/ && cargo build --no-default-features --features=xtal-40mhz | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32c2-hal/ && cargo doc --features=eh1 | |
esp32c3-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
- name: build esp32c3-hal (no features) | |
run: cd esp32c3-hal/ && cargo +nightly build --examples | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32c3-hal (common features) | |
run: | | |
cd esp32c3-hal/ | |
cargo +nightly build --examples --features=eh1,ufmt,log | |
cargo +nightly build --examples --features=eh1,ufmt,defmt | |
- name: check esp32c3-hal (embassy) | |
run: | | |
cd esp32c3-hal/ | |
cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-systick,embassy-executor-thread | |
cargo +nightly check --example=embassy_multiprio --features=embassy,embassy-time-timg0,embassy-executor-thread,embassy-executor-interrupt | |
- name: check esp32c3-hal (embassy, async) | |
run: | | |
cd esp32c3-hal/ | |
cargo +nightly check --example=embassy_wait --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_spi --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_serial --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_i2c --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_i2s_read --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_i2s_sound --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_rmt_rx --features=embassy,embassy-time-timg0,async,embassy-executor-thread --release | |
cargo +nightly check --example=embassy_rmt_tx --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_usb_serial_jtag --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
- name: check esp32c3-hal (interrupt-preemption) | |
run: cd esp32c3-hal/ && cargo +nightly check --example=interrupt_preemption --features=interrupt-preemption | |
- name: check esp32c3-hal (direct-vectoring) | |
run: cd esp32c3-hal/ && cargo +nightly check --example=direct-vectoring --features=direct-vectoring | |
- name: check esp32c3-hal (embassy, log/defmt) | |
run: | | |
cd esp32c3-hal/ | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,embassy-executor-thread,defmt | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,embassy-executor-thread,log | |
# Make sure we can build without default features enabled, too! | |
- name: check esp32c3-hal (no default features) | |
run: cd esp32c3-hal/ && cargo build --no-default-features | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32c3-hal/ && cargo doc --features=eh1 | |
esp32c6-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imac-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Build the `esp-lp-hal` examples first to make sure the examples which | |
# expect these ELF files to be present will compile. | |
- name: build prerequisites | |
run: | | |
cd esp-lp-hal/ | |
cargo build --release --features=esp32c6 --target=riscv32imac-unknown-none-elf --examples | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
# We also use this as an opportunity to verify that the examples link | |
# for each supported image format. | |
- name: build esp32c6-hal (no features) | |
run: cd esp32c6-hal/ && cargo +nightly build --examples | |
- name: build esp32c6-hal (flip-link feature) | |
run: cd esp32c6-hal/ && cargo +nightly build --examples --features=flip-link | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32c6-hal (common features) | |
run: | | |
cd esp32c6-hal/ | |
cargo +nightly build --examples --features=eh1,ufmt,log | |
cargo +nightly build --examples --features=eh1,ufmt,defmt | |
- name: check esp32c6-hal (embassy) | |
run: | | |
cd esp32c6-hal/ | |
cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-systick,embassy-executor-thread | |
cargo +nightly check --example=embassy_multiprio --features=embassy,embassy-time-timg0,embassy-executor-thread,embassy-executor-interrupt | |
- name: check esp32c6-hal (embassy, async) | |
run: | | |
cd esp32c6-hal/ | |
cargo +nightly check --example=embassy_wait --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_spi --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_serial --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_i2c --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_i2s_read --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_i2s_sound --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_rmt_rx --features=embassy,embassy-time-timg0,async,embassy-executor-thread --release | |
cargo +nightly check --example=embassy_rmt_tx --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_usb_serial_jtag --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_parl_io_tx --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_parl_io_rx --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
- name: check esp32c6-hal (interrupt-preemption) | |
run: cd esp32c6-hal/ && cargo +nightly check --example=interrupt_preemption --features=interrupt-preemption | |
- name: check esp32c6-hal (direct-vectoring) | |
run: cd esp32c6-hal/ && cargo +nightly check --example=direct-vectoring --features=direct-vectoring | |
- name: check esp32c6-hal (embassy, log/defmt) | |
run: | | |
cd esp32c6-hal/ | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,embassy-executor-thread,defmt | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,embassy-executor-thread,log | |
# Make sure we can build without default features enabled, too! | |
- name: check esp32c6-hal (no default features) | |
run: cd esp32c6-hal/ && cargo build --no-default-features | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32c6-hal/ && cargo doc --features=eh1 | |
esp32h2-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imac-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
# We also use this as an opportunity to verify that the examples link | |
# for each supported image format. | |
- name: build esp32h2-hal (no features) | |
run: cd esp32h2-hal/ && cargo +nightly build --examples | |
- name: build esp32h2-hal (flip-link feature) | |
run: cd esp32h2-hal/ && cargo +nightly build --examples --features=flip-link | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32h2-hal (common features) | |
run: | | |
cd esp32h2-hal/ | |
cargo +nightly build --examples --features=eh1,ufmt,log | |
cargo +nightly build --examples --features=eh1,ufmt,defmt | |
- name: check esp32h2-hal (embassy) | |
run: | | |
cd esp32h2-hal/ | |
cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo +nightly check --example=embassy_hello_world --features=embassy,embassy-time-systick,embassy-executor-thread | |
cargo +nightly check --example=embassy_multiprio --features=embassy,embassy-time-timg0,embassy-executor-thread,embassy-executor-interrupt | |
- name: check esp32h2-hal (embassy, async) | |
run: | | |
cd esp32h2-hal/ | |
cargo +nightly check --example=embassy_wait --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_spi --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_serial --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_i2c --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_i2s_read --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_i2s_sound --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_rmt_rx --features=embassy,embassy-time-timg0,async,embassy-executor-thread --release | |
cargo +nightly check --example=embassy_rmt_tx --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_usb_serial_jtag --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_parl_io_tx --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo +nightly check --example=embassy_parl_io_rx --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
- name: check esp32h2-hal (interrupt-preemption) | |
run: cd esp32h2-hal/ && cargo +nightly check --example=interrupt_preemption --features=interrupt-preemption | |
- name: check esp32h2-hal (direct-vectoring) | |
run: cd esp32h2-hal/ && cargo +nightly check --example=direct-vectoring --features=direct-vectoring | |
- name: check esp32h2-hal (embassy, log/defmt) | |
run: | | |
cd esp32h2-hal/ | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,embassy-executor-thread,defmt | |
cargo +nightly check --examples --features=embassy,embassy-time-timg0,embassy-executor-thread,log | |
# Make sure we can build without default features enabled, too! | |
- name: check esp32h2-hal (no default features) | |
run: cd esp32h2-hal/ && cargo build --no-default-features | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32h2-hal/ && cargo doc --features=eh1 | |
esp32p4-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imafc-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
# We also use this as an opportunity to verify that the examples link | |
# for each supported image format. | |
- name: build esp32p4-hal (no features) | |
run: cd esp32p4-hal/ && cargo +nightly build --examples | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32p4-hal (common features) | |
run: | | |
cd esp32p4-hal/ | |
cargo +nightly build --examples --features=eh1,ufmt,log | |
cargo +nightly build --examples --features=eh1,ufmt,defmt | |
# Make sure we can build without default features enabled, too! | |
- name: check esp32p4-hal (no default features) | |
run: cd esp32p4-hal/ && cargo build --no-default-features | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32p4-hal/ && cargo doc --features=eh1 | |
esp32s2-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: esp-rs/xtensa-toolchain@v1.5 | |
with: | |
default: true | |
buildtargets: esp32s2 | |
ldproxy: false | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Build the `esp-lp-hal` examples first to make sure the examples which | |
# expect these ELF files to be present will compile. | |
- name: build prerequisites | |
run: | | |
cd esp-lp-hal/ | |
cargo +nightly build --release --features=esp32s2 --target=riscv32imc-unknown-none-elf --examples | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
- name: check esp32s2-hal (no features) | |
run: cd esp32s2-hal/ && cargo +esp build --examples | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32s2-hal (common features) | |
run: | | |
cd esp32s2-hal/ | |
cargo +esp build --examples --features=eh1,ufmt,log | |
cargo +esp build --examples --features=eh1,ufmt,defmt | |
- name: check esp32s2-hal (embassy, timg0) | |
run: | | |
cd esp32s2-hal/ | |
cargo +esp check --example=embassy_hello_world --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo +esp check --example=embassy_multiprio --features=embassy,embassy-time-timg0,embassy-executor-thread,embassy-executor-interrupt | |
- name: check esp32s2-hal (embassy, systick) | |
run: | | |
cd esp32s2-hal/ | |
cargo +esp check --example=embassy_hello_world --features=embassy,embassy-time-systick,embassy-executor-thread | |
cargo +esp check --example=embassy_multiprio --features=embassy,embassy-time-systick,embassy-executor-thread,embassy-executor-interrupt | |
- name: check esp32s2-hal (embassy, timg0, async) | |
run: | | |
cd esp32s2-hal/ | |
cargo +esp check --example=embassy_wait --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_spi --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_serial --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_i2c --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_i2s_read --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_i2s_sound --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_rmt_rx --features=embassy,embassy-time-timg0,async,embassy-executor-thread --release | |
cargo +esp check --example=embassy_rmt_tx --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
- name: check esp32s2-hal (embassy, systick, async) | |
run: | | |
cd esp32s2-hal/ | |
cargo +esp check --example=embassy_wait --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo +esp check --example=embassy_spi --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo +esp check --example=embassy_serial --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo +esp check --example=embassy_i2c --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
- name: check esp32s2-hal (embassy, log/defmt) | |
run: | | |
cd esp32s2-hal/ | |
cargo +esp check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,defmt | |
cargo +esp check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,log | |
- name: check esp32s2-hal (psram) | |
run: cd esp32s2-hal/ && cargo +esp check --example=psram --features=psram-2m --release # This example requires release! | |
# Make sure we can build without default features enabled, too! | |
- name: check esp32s2-hal (no default features) | |
run: cd esp32s2-hal/ && cargo build --no-default-features | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32s2-hal/ && cargo +esp doc --features=eh1 | |
esp32s3-hal: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: esp-rs/xtensa-toolchain@v1.5 | |
with: | |
default: true | |
buildtargets: esp32s3 | |
ldproxy: false | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf | |
toolchain: nightly | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Build the `esp-lp-hal` examples first to make sure the examples which | |
# expect these ELF files to be present will compile. | |
- name: build prerequisites | |
run: | | |
cd esp-lp-hal/ | |
cargo build --release --features=esp32s3 --target=riscv32imc-unknown-none-elf --examples | |
# Perform a full build initially to verify that the examples not only | |
# build, but also link successfully. | |
# We also use this as an opportunity to verify that the examples link | |
# for each supported image format. | |
- name: build esp32s3-hal (no features) | |
run: cd esp32s3-hal/ && cargo +esp build --examples | |
# Subsequent steps can just check the examples instead, as we're already | |
# confident that they link. | |
- name: check esp32s3-hal (common features) | |
run: | | |
cd esp32s3-hal/ | |
cargo +esp build --examples --features=eh1,ufmt,log | |
cargo +esp build --examples --features=eh1,ufmt,defmt | |
- name: check esp32s3-hal (embassy, timg0) | |
run: | | |
cd esp32s3-hal/ | |
cargo +esp check --example=embassy_hello_world --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo +esp check --example=embassy_multicore --features=embassy,embassy-time-timg0,embassy-executor-thread | |
cargo +esp check --example=embassy_multicore_interrupt --features=embassy,embassy-time-timg0,embassy-executor-interrupt | |
cargo +esp check --example=embassy_multiprio --features=embassy,embassy-time-timg0,embassy-executor-thread,embassy-executor-interrupt | |
- name: check esp32s3-hal (embassy, systick) | |
run: | | |
cd esp32s3-hal/ | |
cargo +esp check --example=embassy_hello_world --features=embassy,embassy-time-systick,embassy-executor-thread | |
cargo +esp check --example=embassy_multicore --features=embassy,embassy-time-systick,embassy-executor-thread | |
cargo +esp check --example=embassy_multicore_interrupt --features=embassy,embassy-time-systick,embassy-executor-interrupt | |
cargo +esp check --example=embassy_multiprio --features=embassy,embassy-time-systick,embassy-executor-thread,embassy-executor-interrupt | |
- name: check esp32s3-hal (embassy, timg0, async) | |
run: | | |
cd esp32s3-hal/ | |
cargo +esp check --example=embassy_wait --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_spi --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_serial --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_i2c --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_i2s_read --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_i2s_sound --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_rmt_rx --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
cargo +esp check --example=embassy_rmt_tx --features=embassy,embassy-time-timg0,async,embassy-executor-thread | |
- name: check esp32s3-hal (embassy, systick, async) | |
run: | | |
cd esp32s3-hal/ | |
cargo +esp check --example=embassy_wait --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo +esp check --example=embassy_spi --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo +esp check --example=embassy_serial --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo +esp check --example=embassy_i2c --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
cargo +esp check --example=embassy_usb_serial_jtag --features=embassy,embassy-time-systick,async,embassy-executor-thread | |
- name: check esp32s3-hal (octal psram and psram) | |
run: | # This examples require release! | |
cd esp32s3-hal/ | |
cargo +esp check --example=octal_psram --features=opsram-2m --release | |
cargo +esp check --example=psram --features=psram-2m --release | |
- name: check esp32s3-hal (embassy, log/defmt) | |
run: | | |
cd esp32s3-hal/ | |
cargo +esp check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,defmt | |
cargo +esp check --examples --features=embassy,embassy-time-timg0,embassy-executor-interrupt,embassy-executor-thread,log | |
# Make sure we can build without default features enabled, too! | |
- name: check esp32s3-hal (no default features) | |
run: cd esp32s3-hal/ && cargo build --no-default-features | |
# Ensure documentation can be built | |
- name: rustdoc | |
run: cd esp32s3-hal/ && cargo doc --features=eh1 | |
# -------------------------------------------------------------------------- | |
# MSRV | |
msrv-riscv: | |
runs-on: ubuntu-latest | |
env: | |
RUSTC_BOOTSTRAP: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf,riscv32imac-unknown-none-elf #,riscv32imafc-unknown-none-elf | |
toolchain: ${{ env.MSRV }} | |
components: rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Verify the MSRV for all RISC-V chips. | |
- name: msrv (esp-lp-hal) | |
run: | | |
cd esp-lp-hal/ | |
cargo build --features=esp32c6 --target=riscv32imac-unknown-none-elf | |
cargo build --features=esp32s2 --target=riscv32imc-unknown-none-elf | |
cargo build --features=esp32s3 --target=riscv32imc-unknown-none-elf | |
- name: msrv (esp32c2-hal) | |
run: | | |
cd esp32c2-hal/ | |
cargo build --features=eh1,ufmt,log | |
cargo build --features=defmt | |
- name: msrv (esp32c3-hal) | |
run: | | |
cd esp32c3-hal/ | |
cargo build --features=eh1,ufmt,log | |
cargo build --features=defmt | |
- name: msrv (esp32c6-hal) | |
run: | | |
cd esp32c6-hal/ | |
cargo build --features=eh1,ufmt,log | |
cargo build --features=defmt | |
- name: msrv (esp32h2-hal) | |
run: | | |
cd esp32h2-hal/ | |
cargo build --features=eh1,ufmt,log | |
cargo build --features=defmt | |
# - name: msrv (esp32p4-hal) | |
# run: | | |
# cd esp32p4-hal/ | |
# cargo build --features=eh1,ufmt,log | |
# cargo build --features=defmt | |
msrv-xtensa: | |
runs-on: ubuntu-latest | |
env: | |
RUSTC_BOOTSTRAP: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
target: riscv32imc-unknown-none-elf | |
toolchain: ${{ env.MSRV }} | |
components: rust-src | |
- uses: esp-rs/xtensa-toolchain@v1.5 | |
with: | |
ldproxy: false | |
version: ${{ env.MSRV }} | |
- uses: Swatinem/rust-cache@v2 | |
# Verify the MSRV for all Xtensa chips: | |
- name: msrv (esp32-hal) | |
run: | | |
cd esp32-hal/ | |
cargo build --features=eh1,ufmt,log | |
cargo build --features=defmt | |
- name: msrv (esp32s2-hal) | |
run: | | |
cd esp32s2-hal/ | |
cargo build --features=eh1,ufmt,log | |
cargo build --features=defmt | |
- name: msrv (esp32s3-hal) | |
run: | | |
cd esp32s3-hal/ | |
cargo build --features=eh1,ufmt,log | |
cargo build --features=defmt | |
# -------------------------------------------------------------------------- | |
# Lint | |
clippy-riscv: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
toolchain: nightly | |
targets: riscv32imc-unknown-none-elf,riscv32imac-unknown-none-elf | |
components: clippy,rust-src | |
- uses: Swatinem/rust-cache@v2 | |
# Run 'cargo clippy' on all packages targeting RISC-V: | |
- name: clippy (esp-lp-hal, esp32c6) | |
run: cd esp-lp-hal && cargo clippy --features=esp32c6 -- -D warnings | |
- name: clippy (esp-lp-hal, esp32s2) | |
run: cd esp-lp-hal && cargo clippy --features=esp32s2 -- -D warnings | |
- name: clippy (esp-lp-hal, esp32s3) | |
run: cd esp-lp-hal && cargo clippy --features=esp32s3 -- -D warnings | |
- name: clippy (esp-riscv-rt) | |
run: cd esp-riscv-rt && cargo clippy --target=riscv32imc-unknown-none-elf -- -D warnings | |
- name: clippy (esp32c2-hal) | |
run: cd esp32c2-hal && cargo clippy -- -D warnings | |
- name: clippy (esp32c3-hal) | |
run: cd esp32c3-hal && cargo clippy -- -D warnings | |
- name: clippy (esp32c6-hal) | |
run: cd esp32c6-hal && cargo clippy -- -D warnings | |
- name: clippy (esp32h2-hal) | |
run: cd esp32h2-hal && cargo clippy -- -D warnings | |
- name: clippy (esp32p4-hal) | |
run: cd esp32p4-hal && cargo clippy -- -D warnings | |
clippy-xtensa: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: esp-rs/xtensa-toolchain@v1.5 | |
with: | |
ldproxy: false | |
- uses: Swatinem/rust-cache@v2 | |
# Run 'cargo clippy' on all packages targeting Xtensa: | |
- name: clippy (esp32-hal) | |
run: cd esp32-hal && cargo clippy -- -D warnings | |
- name: clippy (esp32s2-hal) | |
run: cd esp32s2-hal && cargo clippy -- -D warnings | |
- name: clippy (esp32s3-hal) | |
run: cd esp32s3-hal && cargo clippy -- -D warnings | |
rustfmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# Some of the configuration items in 'rustfmt.toml' require the 'nightly' | |
# release channel: | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
toolchain: nightly | |
components: rustfmt | |
- uses: Swatinem/rust-cache@v2 | |
# Check the formatting of all packages: | |
- name: rustfmt (esp-hal-common) | |
run: cargo fmt --all --manifest-path=esp-hal-common/Cargo.toml -- --check | |
- name: rustfmt (esp-hal-procmacros) | |
run: cargo fmt --all --manifest-path=esp-hal-procmacros/Cargo.toml -- --check | |
- name: rustfmt (esp-hal-smartled) | |
run: cargo fmt --all --manifest-path=esp-hal-smartled/Cargo.toml -- --check | |
- name: rustfmt (esp-lp-hal) | |
run: cargo fmt --all --manifest-path=esp-lp-hal/Cargo.toml -- --check | |
- name: rustfmt (esp-riscv-rt) | |
run: cargo fmt --all --manifest-path=esp-riscv-rt/Cargo.toml -- --check | |
- name: rustfmt (esp32-hal) | |
run: cargo fmt --all --manifest-path=esp32-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32c2-hal) | |
run: cargo fmt --all --manifest-path=esp32c2-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32c3-hal) | |
run: cargo fmt --all --manifest-path=esp32c3-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32c6-hal) | |
run: cargo fmt --all --manifest-path=esp32c6-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32h2-hal) | |
run: cargo fmt --all --manifest-path=esp32h2-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32p4-hal) | |
run: cargo fmt --all --manifest-path=esp32p4-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32s2-hal) | |
run: cargo fmt --all --manifest-path=esp32s2-hal/Cargo.toml -- --check | |
- name: rustfmt (esp32s3-hal) | |
run: cargo fmt --all --manifest-path=esp32s3-hal/Cargo.toml -- --check |