name: cpal on: [push, pull_request] jobs: clippy-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Update apt run: sudo apt update - name: Install alsa run: sudo apt-get install libasound2-dev - name: Install libjack run: sudo apt-get install libjack-jackd2-dev libjack-jackd2-0 - name: Install stable uses: dtolnay/rust-toolchain@stable with: components: clippy target: armv7-linux-androideabi - name: Run clippy run: cargo clippy --all --all-features - name: Run clippy for Android target run: cargo clippy --all --features asio --features oboe/fetch-prebuilt --target armv7-linux-androideabi rustfmt-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install stable uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: Run rustfmt run: cargo fmt --all -- --check cargo-publish: if: github.event_name == 'push' && github.ref == 'refs/heads/master' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install rust uses: dtolnay/rust-toolchain@stable - name: Update apt run: sudo apt update - name: Install alsa run: sudo apt-get install libasound2-dev - name: Verify publish crate uses: katyo/publish-crates@v2 with: dry-run: true ignore-unpublished-changes: true - name: Publish crate uses: katyo/publish-crates@v2 with: ignore-unpublished-changes: true registry-token: ${{ secrets.CRATESIO_TOKEN }} ubuntu-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Update apt run: sudo apt update - name: Install alsa run: sudo apt-get install libasound2-dev - name: Install libjack run: sudo apt-get install libjack-jackd2-dev libjack-jackd2-0 - name: Install stable uses: dtolnay/rust-toolchain@stable - name: Run without features run: cargo test --all --no-default-features --verbose - name: Run all features run: cargo test --all --all-features --verbose linux-check-and-test-armv7: runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v4 - name: Install stable toolchain uses: dtolnay/rust-toolchain@stable with: target: armv7-unknown-linux-gnueabihf - name: Build image run: docker build -t cross/cpal_armv7:v1 ./ - name: Install cross run: cargo install cross - name: Check without features for armv7 run: cross check --target armv7-unknown-linux-gnueabihf --workspace --no-default-features --verbose - name: Test without features for armv7 run: cross test --target armv7-unknown-linux-gnueabihf --workspace --no-default-features --verbose - name: Check all features for armv7 run: cross check --target armv7-unknown-linux-gnueabihf --workspace --all-features --verbose - name: Test all features for armv7 run: cross test --target armv7-unknown-linux-gnueabihf --workspace --all-features --verbose asmjs-wasm32-test: strategy: matrix: target: [wasm32-unknown-emscripten] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Emscripten toolchain uses: mymindstorm/setup-emsdk@v14 - name: Install stable uses: dtolnay/rust-toolchain@stable with: target: ${{ matrix.target }} - name: Build beep example run: cargo build --example beep --release --target ${{ matrix.target }} wasm32-bindgen-test: strategy: matrix: target: [wasm32-unknown-unknown] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install stable uses: dtolnay/rust-toolchain@stable with: target: ${{ matrix.target }} - name: Build beep example run: cargo build --example beep --target ${{ matrix.target }} --features=wasm-bindgen wasm32-wasi-test: strategy: matrix: target: [wasm32-wasi] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install stable uses: dtolnay/rust-toolchain@stable with: target: ${{ matrix.target }} - name: Build beep example run: cargo build --example beep --target ${{ matrix.target }} windows-test: strategy: matrix: version: [x86_64, i686] runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Install ASIO SDK env: LINK: https://www.steinberg.net/asiosdk run: | curl -L -o asio.zip $env:LINK 7z x -oasio asio.zip move asio\*\* asio\ - name: Install ASIO4ALL run: choco install asio4all - name: Install llvm and clang run: choco install llvm - name: Install stable uses: dtolnay/rust-toolchain@stable with: target: ${{ matrix.version }}-pc-windows-msvc - name: Run without features run: cargo test --all --no-default-features --verbose - name: Run all features run: | $Env:CPAL_ASIO_DIR = "$Env:GITHUB_WORKSPACE\asio" cargo test --all --all-features --verbose macos-test: runs-on: macOS-latest steps: - uses: actions/checkout@v4 - name: Install llvm and clang run: brew install llvm - name: Install stable uses: dtolnay/rust-toolchain@stable - name: Build beep example run: cargo build --example beep - name: Run without features run: cargo test --all --no-default-features --verbose - name: Run all features run: cargo test --all --all-features --verbose android-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install stable (Android target) uses: dtolnay/rust-toolchain@stable with: target: armv7-linux-androideabi - name: Check android run: cargo check --example android --target armv7-linux-androideabi --features oboe/fetch-prebuilt --verbose - name: Check beep run: cargo check --example beep --target armv7-linux-androideabi --features oboe/fetch-prebuilt --verbose - name: Check enumerate run: cargo check --example enumerate --target armv7-linux-androideabi --features oboe/fetch-prebuilt --verbose - name: Check feedback run: cargo check --example feedback --target armv7-linux-androideabi --features oboe/fetch-prebuilt --verbose - name: Check record_wav run: cargo check --example record_wav --target armv7-linux-androideabi --features oboe/fetch-prebuilt --verbose android-apk-build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install stable (Android targets) uses: dtolnay/rust-toolchain@stable with: targets: armv7-linux-androideabi,aarch64-linux-android,i686-linux-android,x86_64-linux-android - name: Set Up Android tools run: | ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "platforms;android-30" - name: Install Cargo APK run: cargo install cargo-apk - name: Build APK run: cargo apk build --example android ios-build: runs-on: macOS-latest steps: - uses: actions/checkout@v4 - name: Install llvm and clang run: brew install llvm - name: Install stable (iOS targets) uses: dtolnay/rust-toolchain@stable with: targets: aarch64-apple-ios,x86_64-apple-ios - name: Install cargo lipo run: cargo install cargo-lipo - name: Build iphonesimulator feedback example run: cd examples/ios-feedback && xcodebuild -scheme cpal-ios-example -configuration Debug -derivedDataPath build -sdk iphonesimulator wasm-beep-build: # this only confirms that the Rust source builds # and checks to prevent regressions like #721. # # It does not test the javascript/web integration runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install stable (wasm32 target) uses: dtolnay/rust-toolchain@stable with: targets: wasm32-unknown-unknown - name: Cargo Build working-directory: ./examples/wasm-beep run: cargo build --target wasm32-unknown-unknown