on: [push, pull_request]
name: CI
jobs:
fmt:
name: Fmt
runs-on: ubuntu-latest
env:
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- name: Run cargo fmt (FutureSDR)
run: cargo fmt --all -- --check
- name: Run cargo fmt (FutureDSP)
run: cargo fmt --all --manifest-path=crates/futuredsp/Cargo.toml -- --check
- name: Run cargo fmt (Macros)
run: cargo fmt --all --manifest-path=crates/macros/Cargo.toml -- --check
- name: Run cargo fmt (Prophecy)
run: cargo fmt --all --manifest-path=crates/prophecy/Cargo.toml -- --check
- name: Run cargo fmt (Remote)
run: cargo fmt --all --manifest-path=crates/remote/Cargo.toml -- --check
- name: Run cargo fmt (Types)
run: cargo fmt --all --manifest-path=crates/types/Cargo.toml -- --check
- name: Run cargo fmt (perf/buffer_rand)
run: cargo fmt --all --manifest-path=perf/buffer_rand/Cargo.toml -- --check
- name: Run cargo fmt (perf/buffer_size)
run: cargo fmt --all --manifest-path=perf/buffer_size/Cargo.toml -- --check
- name: Run cargo fmt (perf/burn)
run: cargo fmt --all --manifest-path=perf/burn/Cargo.toml -- --check
- name: Run cargo fmt (perf/fir)
run: cargo fmt --all --manifest-path=perf/fir/Cargo.toml -- --check
- name: Run cargo fmt (perf/fir_latency)
run: cargo fmt --all --manifest-path=perf/fir_latency/Cargo.toml -- --check
- name: Run cargo fmt (perf/msg)
run: cargo fmt --all --manifest-path=perf/msg/Cargo.toml -- --check
- name: Run cargo fmt (perf/null_rand)
run: cargo fmt --all --manifest-path=perf/null_rand/Cargo.toml -- --check
- name: Run cargo fmt (perf/null_rand_latency)
run: cargo fmt --all --manifest-path=perf/null_rand_latency/Cargo.toml -- --check
- name: Run cargo fmt (perf/perf)
run: cargo fmt --all --manifest-path=perf/perf/Cargo.toml -- --check
- name: Run cargo fmt (perf/vulkan)
run: cargo fmt --all --manifest-path=perf/vulkan/Cargo.toml -- --check
- name: Run cargo fmt (perf/wgpu)
run: cargo fmt --all --manifest-path=perf/wgpu/Cargo.toml -- --check
- name: Run cargo fmt (perf/zynq)
run: cargo fmt --all --manifest-path=perf/zynq/Cargo.toml -- --check
- name: Run cargo fmt (examples/adsb)
run: cargo fmt --all --manifest-path=examples/adsb/Cargo.toml -- --check
- name: Run cargo fmt (examples/android)
run: cargo fmt --all --manifest-path=examples/android/Cargo.toml -- --check
- name: Run cargo fmt (examples/audio)
run: cargo fmt --all --manifest-path=examples/audio/Cargo.toml -- --check
- name: Run cargo fmt (examples/burn)
run: cargo fmt --all --manifest-path=examples/burn/Cargo.toml -- --check
- name: Run cargo fmt (examples/custom-routes)
run: cargo fmt --all --manifest-path=examples/custom-routes/Cargo.toml -- --check
- name: Run cargo fmt (examples/cw)
run: cargo fmt --all --manifest-path=examples/cw/Cargo.toml -- --check
- name: Run cargo fmt (examples/egui)
run: cargo fmt --all --manifest-path=examples/egui/Cargo.toml -- --check
- name: Run cargo fmt (examples/file-trx)
run: cargo fmt --all --manifest-path=examples/file-trx/Cargo.toml -- --check
- name: Run cargo fmt (examples/firdes)
run: cargo fmt --all --manifest-path=examples/firdes/Cargo.toml -- --check
- name: Run cargo fmt (examples/fm-receiver)
run: cargo fmt --all --manifest-path=examples/fm-receiver/Cargo.toml -- --check
- name: Run cargo fmt (examples/inplace)
run: cargo fmt --all --manifest-path=examples/inplace/Cargo.toml -- --check
- name: Run cargo fmt (examples/keyfob)
run: cargo fmt --all --manifest-path=examples/keyfob/Cargo.toml -- --check
- name: Run cargo fmt (examples/logging)
run: cargo fmt --all --manifest-path=examples/logging/Cargo.toml -- --check
- name: Run cargo fmt (examples/lora)
run: cargo fmt --all --manifest-path=examples/lora/Cargo.toml -- --check
- name: Run cargo fmt (examples/m17)
run: cargo fmt --all --manifest-path=examples/m17/Cargo.toml -- --check
- name: Run cargo fmt (examples/macros)
run: cargo fmt --all --manifest-path=examples/macros/Cargo.toml -- --check
- name: Run cargo fmt (examples/rattlegram)
run: cargo fmt --all --manifest-path=examples/rattlegram/Cargo.toml -- --check
- name: Run cargo fmt (examples/spectrum)
run: cargo fmt --all --manifest-path=examples/spectrum/Cargo.toml -- --check
- name: Run cargo fmt (examples/ssb)
run: cargo fmt --all --manifest-path=examples/ssb/Cargo.toml -- --check
- name: Run cargo fmt (examples/wasm)
run: cargo fmt --all --manifest-path=examples/wasm/Cargo.toml -- --check
- name: Run cargo fmt (examples/wgpu)
run: cargo fmt --all --manifest-path=examples/wgpu/Cargo.toml -- --check
- name: Run cargo fmt (examples/wlan)
run: cargo fmt --all --manifest-path=examples/wlan/Cargo.toml -- --check
- name: Run cargo fmt (examples/zeromq)
run: cargo fmt --all --manifest-path=examples/zeromq/Cargo.toml -- --check
- name: Run cargo fmt (examples/zigbee)
run: cargo fmt --all --manifest-path=examples/zigbee/Cargo.toml -- --check
- name: Run cargo fmt (examples/zynq)
run: cargo fmt --all --manifest-path=examples/zynq/Cargo.toml -- --check
clippy_main:
name: Clippy Main
runs-on: ubuntu-latest
env:
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: clippy
- name: Apt Update
run: sudo apt-get -y update
- name: Install ZeroMQ
run: sudo apt-get install -y libzmq3-dev
- name: Install alsalibs
run: sudo apt-get -y install libasound2-dev
- name: Install Soapy
run: sudo apt-get -y install libsoapysdr-dev
- name: Run cargo clippy (main)
run: cargo clippy --all-targets --workspace --features=burn,aaronia_http,vulkan,zeromq,audio,flow_scheduler,tpb_scheduler,seify_dummy,soapy,zynq,wgpu -- -D warnings
- name: Run cargo clippy (futuredsp)
run: cargo clippy --lib --manifest-path=crates/futuredsp/Cargo.toml -- -D warnings
- name: Run cargo clippy (macros)
run: cargo clippy --lib --manifest-path=crates/macros/Cargo.toml -- -D warnings
- name: Run cargo clippy (remote)
run: cargo clippy --lib --manifest-path=crates/remote/Cargo.toml -- -D warnings
- name: Run cargo clippy (types)
run: cargo clippy --lib --manifest-path=crates/types/Cargo.toml -- -D warnings
clippy_perf:
name: Clippy Perf
runs-on: ubuntu-latest
env:
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: clippy
- name: Apt Update
run: sudo apt-get -y update
- name: Install ZeroMQ
run: sudo apt-get install -y libzmq3-dev
- name: Install alsalibs
run: sudo apt-get -y install libasound2-dev
- name: Install LTTng
run: sudo apt-get -y install liblttng-ust-dev
- name: Install Soapy
run: sudo apt-get -y install libsoapysdr-dev
- name: Run cargo clippy (perf/buffer_rand)
run: cargo clippy --all-targets --manifest-path=perf/buffer_rand/Cargo.toml -- -D warnings
- name: Run cargo clippy (perf/buffer_size)
run: cargo clippy --all-targets --manifest-path=perf/buffer_size/Cargo.toml -- -D warnings
- name: Run cargo clippy (perf/burn)
run: cargo clippy --all-targets --manifest-path=perf/burn/Cargo.toml -- -D warnings
- name: Run cargo clippy (perf/fir)
run: cargo clippy --all-targets --manifest-path=perf/fir/Cargo.toml -- -D warnings
- name: Run cargo clippy (perf/fir_latency)
run: cargo clippy --all-targets --manifest-path=perf/fir_latency/Cargo.toml -- -D warnings
- name: Run cargo clippy (perf/msg)
run: cargo clippy --all-targets --manifest-path=perf/msg/Cargo.toml -- -D warnings
- name: Run cargo clippy (perf/null_rand)
run: cargo clippy --all-targets --manifest-path=perf/null_rand/Cargo.toml -- -D warnings
- name: Run cargo clippy (perf/null_rand_latency)
run: cargo clippy --all-targets --manifest-path=perf/null_rand_latency/Cargo.toml -- -D warnings
- name: Run cargo clippy (perf/perf)
run: cargo clippy --all-targets --all-features --manifest-path=perf/perf/Cargo.toml -- -D warnings
- name: Run cargo clippy (perf/vulkan)
run: cargo clippy --all-targets --manifest-path=perf/vulkan/Cargo.toml -- -D warnings
- name: Run cargo clippy (perf/wgpu)
run: cargo clippy --all-targets --manifest-path=perf/wgpu/Cargo.toml -- -D warnings
- name: Run cargo clippy (perf/zynq)
run: cargo clippy --all-targets --manifest-path=perf/zynq/Cargo.toml -- -D warnings
clippy_examples:
name: Clippy Examples
runs-on: ubuntu-latest
env:
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: clippy
- name: Apt Update
run: sudo apt-get -y update
- name: Install ZeroMQ
run: sudo apt-get install -y libzmq3-dev
- name: Install alsalibs
run: sudo apt-get -y install libasound2-dev
- name: Install libdbus-dev
run: sudo apt-get -y install libdbus-1-dev
- name: Install Soapy
run: sudo apt-get -y install libsoapysdr-dev
- name: Run cargo clippy (examples/adsb)
run: cargo clippy --all-targets --manifest-path=examples/adsb/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/android)
run: cargo clippy --all-targets --manifest-path=examples/android/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/audio)
run: cargo clippy --all-targets --manifest-path=examples/audio/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/burn)
run: cargo clippy --all-targets --manifest-path=examples/burn/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/custom-routes)
run: cargo clippy --all-targets --manifest-path=examples/custom-routes/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/cw)
run: cargo clippy --all-targets --manifest-path=examples/cw/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/egui)
run: cargo clippy --all-targets --manifest-path=examples/egui/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/file-trx)
run: cargo clippy --all-targets --manifest-path=examples/file-trx/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/firdes)
run: cargo clippy --all-targets --manifest-path=examples/firdes/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/fm-receiver)
run: cargo clippy --all-targets --manifest-path=examples/fm-receiver/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/inplace)
run: cargo clippy --all-targets --manifest-path=examples/inplace/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/keyfob)
run: cargo clippy --all-targets --manifest-path=examples/keyfob/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/logging)
run: cargo clippy --all-targets --manifest-path=examples/logging/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/lora)
run: cargo clippy --all-targets --manifest-path=examples/lora/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/m17)
run: cargo clippy --all-targets --manifest-path=examples/m17/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/macros)
run: cargo clippy --all-targets --manifest-path=examples/macros/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/rattlegram)
run: cargo clippy --all-targets --manifest-path=examples/rattlegram/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/spectrum)
run: cargo clippy --all-targets --manifest-path=examples/spectrum/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/ssb)
run: cargo clippy --all-targets --manifest-path=examples/ssb/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/wasm)
run: cargo clippy --all-targets --manifest-path=examples/wasm/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/wgpu)
run: cargo clippy --all-targets --manifest-path=examples/wgpu/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/wlan)
run: cargo clippy --all-targets --manifest-path=examples/wlan/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/zeromq)
run: cargo clippy --all-targets --manifest-path=examples/zeromq/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/zigbee)
run: cargo clippy --all-targets --manifest-path=examples/zigbee/Cargo.toml -- -D warnings
- name: Run cargo clippy (examples/zynq)
run: cargo clippy --all-targets --manifest-path=examples/zynq/Cargo.toml -- -D warnings
clippy_wasm:
name: Clippy Wasm
runs-on: ubuntu-latest
env:
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: clippy
target: wasm32-unknown-unknown
- name: Run cargo clippy for wasm32-unknown-unknown (main)
run: cargo clippy --lib --workspace --features=burn,audio,seify_dummy,wgpu --target wasm32-unknown-unknown -- -D warnings
- name: Run cargo clippy for wasm32-unknown-unknown (macros)
run: cargo clippy --lib --manifest-path=crates/macros/Cargo.toml --target wasm32-unknown-unknown -- -D warnings
- name: Run cargo clippy for wasm32-unknown-unknown (prophecy)
run: cargo clippy --lib --manifest-path=crates/prophecy/Cargo.toml --target wasm32-unknown-unknown -- -D warnings
- name: Run cargo clippy for wasm32-unknown-unknown (types)
run: cargo clippy --lib --manifest-path=crates/types/Cargo.toml --target wasm32-unknown-unknown -- -D warnings
- name: Run cargo clippy for wasm32-unknown-unknown (perf/wgpu)
run: cargo clippy --lib --manifest-path=perf/wgpu/Cargo.toml --target wasm32-unknown-unknown -- -D warnings
- name: Run cargo clippy for wasm32-unknown-unknown (examples/cw)
run: cargo clippy --lib --manifest-path=examples/cw/Cargo.toml --target wasm32-unknown-unknown -- -D warnings
- name: Run cargo clippy for wasm32-unknown-unknown (examples/rattlegram)
run: cargo clippy --lib --manifest-path=examples/rattlegram/Cargo.toml --target wasm32-unknown-unknown -- -D warnings
- name: Run cargo clippy for wasm32-unknown-unknown (examples/spectrum)
run: cargo clippy --lib --manifest-path=examples/spectrum/Cargo.toml --target wasm32-unknown-unknown -- -D warnings
- name: Run cargo clippy for wasm32-unknown-unknown (examples/wasm)
run: cargo clippy --lib --manifest-path=examples/wasm/Cargo.toml --target wasm32-unknown-unknown -- -D warnings
- name: Run cargo clippy for wasm32-unknown-unknown (examples/wgpu)
run: cargo clippy --lib --manifest-path=examples/wgpu/Cargo.toml --target wasm32-unknown-unknown -- -D warnings
- name: Run cargo clippy for wasm32-unknown-unknown (examples/zigbee)
run: cargo clippy --lib --manifest-path=examples/zigbee/Cargo.toml --target wasm32-unknown-unknown -- -D warnings
test-linux:
name: Unit Tests Linux
runs-on: ubuntu-latest
env:
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- run: sudo apt-get -y update
- run: sudo apt-get -y install libzmq3-dev
- run: sudo apt-get -y install libasound2-dev
- run: sudo apt-get -y install liblttng-ust-dev
- run: sudo apt-get -y install libsoapysdr-dev
- run: cargo test --all-targets --workspace --features=burn,aaronia_http,rtlsdr,zeromq,audio,flow_scheduler,tpb_scheduler,seify_dummy,soapy,zynq,wgpu
- run: cargo test --all-targets --manifest-path=crates/futuredsp/Cargo.toml
- run: cargo test --all-targets --all-features --manifest-path=crates/types/Cargo.toml
- run: cargo test --all-targets --manifest-path=crates/remote/Cargo.toml
test-macos:
name: Unit Tests macOS
runs-on: macos-latest
env:
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- run: brew install shaderc glslang spirv-tools
- name: Build
run: cargo test --all-targets --workspace --features=burn,aaronia_http,flow_scheduler,seify_dummy,tpb_scheduler,wgpu
env:
SHADERC_LIB_DIR: /opt/homebrew/lib
SHADERC_INCLUDE_DIR: /opt/homebrew/include
test-windows:
name: Unit Test Windows
runs-on: windows-latest
env:
RUST_BACKTRACE: full
steps:
- uses: crazy-max/ghaction-chocolatey@v3
with:
args: install ninja
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- run: cargo test --all-targets --workspace --features=burn,aaronia_http,flow_scheduler,seify_dummy,tpb_scheduler,wgpu