name: Check Rust code
on: [push, pull_request]
jobs:
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install a stable toolchain with rustfmt
run: rustup toolchain install stable --no-self-update --profile minimal --component rustfmt
- name: Check formatting
run: cargo fmt --all -- --check
lint-hal:
needs: format
strategy:
matrix:
chips:
- imxrt-ral/imxrt1011
- imxrt-ral/imxrt1015
- imxrt-ral/imxrt1021
- imxrt-ral/imxrt1051
- imxrt-ral/imxrt1052
- imxrt-ral/imxrt1061
- imxrt-ral/imxrt1062
- imxrt-ral/imxrt1064
- imxrt-ral/imxrt1176_cm4
- imxrt-ral/imxrt1176_cm7
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install a stable toolchain with clippy
run: rustup toolchain install stable --no-self-update --profile minimal --component clippy
- name: Lint imxrt-hal
run: cargo clippy --features=${{ matrix.chips }} --package=imxrt-hal -- -D warnings
lint-log:
needs: lint-hal
strategy:
matrix:
chips:
- imxrt-ral/imxrt1011,imxrt1010
- imxrt-ral/imxrt1021,imxrt1020
- imxrt-ral/imxrt1061,imxrt1060
- imxrt-ral/imxrt1062,imxrt1060
- imxrt-ral/imxrt1064,imxrt1060
- imxrt-ral/imxrt1176_cm4,imxrt1170
- imxrt-ral/imxrt1176_cm7,imxrt1170
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install a stable toolchain with clippy
run: rustup toolchain install stable --no-self-update --profile minimal --component clippy
- name: Lint imxrt-log
run: cargo clippy --features=${{ matrix.chips }} --package=imxrt-log --package=imxrt-hal -- -D warnings
examples:
needs: lint-hal
strategy:
matrix:
config:
- --examples --features=board/teensy4,board/lcd1602,board/sai
- --examples --features=board/imxrt1010evk,board/lcd1602,board/sai
- --examples --features=board/imxrt1060evk,board/lcd1602
- --example=rtic_spi_blocking --example=rtic_spi_controller --example=rtic_spi_peripheral --example=rtic_spi --example=async_dma_spi --features=board/teensy4,board/spi
- --example=rtic_spi_blocking --example=rtic_spi_controller --example=rtic_spi_peripheral --example=rtic_spi --example=async_dma_spi --features=board/imxrt1010evk,board/spi
- --example=rtic_spi_blocking --example=rtic_spi_controller --example=rtic_spi_peripheral --example=rtic_spi --example=async_dma_spi --features=board/imxrt1060evk,board/spi
- --example=rtic_spi_blocking --example=rtic_spi_controller --example=rtic_spi_peripheral --example=rtic_spi --example=async_dma_spi --features=board/imxrt1170evk-cm7,board/spi
- --features=board/imxrt1170evk-cm7,board/lcd1602 --example=hal_led
--example=hal_gpio_input --example=rtic_gpio_input
--example=hal_uart --example=rtic_uart --example=rtic_dma_uart --example=async_dma_uart
--example=hal_gpt --example=rtic_gpt
--example=hal_pit --example=rtic_pit
--example=hal_logging --example=rtic_logging
--example=hal_clock_out
--example=hal_pwm --example=rtic_pwm
--example=hal_i2c_mpu9250 --example=hal_i2c_lcd1602
--example=hal_ocotp_fuse
--example=rtic_usb_serial --example=rtic_usb_test_class --example=rtic_usb_keypress --example=rtic_usb_mouse
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install a stable toolchain, clippy, for the MCU target
run: rustup toolchain install stable --no-self-update --profile minimal --component clippy --target thumbv7em-none-eabihf
- name: Lint board and examples
run: cargo clippy ${{ matrix.config }} --target=thumbv7em-none-eabihf -- -D warnings
- name: Build examples
run: cargo build ${{ matrix.config }} --target=thumbv7em-none-eabihf --release
tests:
needs: format
strategy:
matrix:
chips:
- imxrt-ral/imxrt1011,imxrt1010
- imxrt-ral/imxrt1021,imxrt1020
- imxrt-ral/imxrt1062,imxrt1060
- imxrt-ral/imxrt1176_cm7,imxrt1170
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install a stable toolchain
run: rustup toolchain install stable --no-self-update --profile minimal
- name: Run unit, integration tests
run: cargo test --features=${{ matrix.chips }} --tests --package=imxrt-hal --package=imxrt-log
docs:
needs: format
runs-on: ubuntu-latest
env:
RUSTDOCFLAGS: -D warnings
steps:
- uses: actions/checkout@v4
- name: Install a stable toolchain
run: rustup toolchain install stable --no-self-update --profile minimal
- name: Run documentation tests
run: cargo test --features=board/teensy4 --workspace --doc
- name: Check documentation, doclinks throughout workspace
run: cargo doc --workspace --no-deps --features=board/teensy4