i2cdev 0.6.2

Provides API for safe access to Linux i2c device interface.
Documentation
on:
  push: # Run CI for all branches except GitHub merge queue tmp branches
    branches-ignore:
    - "gh-readonly-queue/**"
  pull_request: # Run CI for PRs on any branch
  merge_group: # Run CI for the GitHub merge queue

name: CI

jobs:
  ci-linux:
    name: CI
    runs-on: ubuntu-latest

    strategy:
      matrix:
        rust: [stable]
        TARGET: [x86_64-unknown-linux-gnu, armv7-unknown-linux-gnueabihf]

        include:
          # Build on MSRV
          - rust: 1.65.0
            TARGET: x86_64-unknown-linux-gnu

          # Test nightly but don't fail
          - rust: nightly
            experimental: true
            TARGET: x86_64-unknown-linux-gnu

    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.rust }}
          target: ${{ matrix.TARGET }}

      - name: Install armv7 libraries
        if: ${{ matrix.TARGET == 'armv7-unknown-linux-gnueabihf' }}
        run: sudo apt-get update && sudo apt-get install -y libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf

      - run: cargo build --target=${{ matrix.TARGET }}
        if: ${{ matrix.TARGET == 'armv7-unknown-linux-gnueabihf' }}

      # We do not run tests on MSRV because of requirements of the additional dependencies
      - run: cargo test --target=${{ matrix.TARGET }}
        if: ${{ matrix.TARGET != 'armv7-unknown-linux-gnueabihf' && matrix.rust != '1.65.0' }}

  ci-macos:
    name: CI-macOS
    runs-on: macos-14

    strategy:
      matrix:
        rust: [stable, 1.65.0]
        TARGET: [x86_64-apple-darwin, aarch64-apple-darwin]

    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.rust }}
          target: ${{ matrix.TARGET }}

      - run: cargo build --target=${{ matrix.TARGET }}
      # We do not run tests on MSRV because of requirements of the additional dependencies
      - run: cargo test --target=${{ matrix.TARGET }}
        if: ${{ matrix.rust != '1.65.0'}}