esp-idf-sys 0.37.2

Bindings for ESP-IDF (Espressif's IoT Development Framework)
name: CI

on:
  push:
    branches:
      - master
  pull_request:
  schedule:
    - cron: "50 4 * * *"
  workflow_dispatch:

env:
  rust_toolchain: nightly
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
  compile:
    name: Compile
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        target:
          - riscv32imc-esp-espidf
          - riscv32imac-esp-espidf
          - riscv32imafc-esp-espidf
          - xtensa-esp32-espidf
          - xtensa-esp32s2-espidf
          - xtensa-esp32s3-espidf
        idf-version:
#          - v4.4.8
#          - v5.0.9
#          - v5.1.6
#          - v5.2.5
          - v5.3.4
          - v5.4.3
          - v5.5.3
    steps:
      - name: Setup | Checkout
        uses: actions/checkout@v3

      - name: Setup | Rust
        if: matrix.target == 'riscv32imc-esp-espidf'
        uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: ${{ env.rust_toolchain }}
          components: rustfmt, clippy, rust-src

      - name: Install Rust for Xtensa
        if: matrix.target != 'riscv32imc-esp-espidf'
        uses: esp-rs/xtensa-toolchain@v1.6
        with:
          default: true
          ldproxy: true

      - name: Build | Fmt Check
        if: matrix.target != 'riscv32imac-esp-espidf' || matrix.idf-version != 'v4.4.8'
        run: cargo fmt -- --check

#      - name: Build | Clippy (PIO)
#        if: matrix.target == 'riscv32imc-esp-espidf' && matrix.idf-version == 'v5.2.3'
#        env:
#          RUSTFLAGS: "${{ '--cfg espidf_time64' }}"
#        run: cargo clippy --features pio --no-deps --target ${{ matrix.target }} -Zbuild-std=std,panic_abort -- -Dwarnings

      - name: Build | Clippy
        if: matrix.target != 'riscv32imac-esp-espidf' || matrix.idf-version != 'v4.4.8'
        env:
          ESP_IDF_VERSION: ${{ matrix.idf-version }}
          ESP_IDF_SDKCONFIG_DEFAULTS: "${{ github.workspace }}/.github/configs/sdkconfig.defaults"
          RUSTFLAGS: "${{ startsWith(matrix.idf-version, 'v5') && '--cfg espidf_time64' || startsWith(matrix.idf-version, 'v4') && '--cfg espidf_time32' }}"
        run: cargo clippy --no-deps --target ${{ matrix.target }} -Zbuild-std=std,panic_abort -- -Dwarnings -Adeprecated

      - name: Build | Compile (Native)
        if: matrix.target != 'riscv32imac-esp-espidf' || matrix.idf-version != 'v4.4.8'
        env:
          ESP_IDF_VERSION: ${{ matrix.idf-version }}
          RUSTFLAGS: "${{ startsWith(matrix.idf-version, 'v5') && '--cfg espidf_time64' || startsWith(matrix.idf-version, 'v4') && '--cfg espidf_time32' }}"
        run: cargo build --target ${{ matrix.target }} -Zbuild-std=std,panic_abort

      - name: Build | Compile (Native), no_std
        if: matrix.target != 'riscv32imac-esp-espidf' || matrix.idf-version != 'v4.4.8'
        env:
          ESP_IDF_VERSION: ${{ matrix.idf-version }}
          RUSTFLAGS: "${{ startsWith(matrix.idf-version, 'v5') && '--cfg espidf_time64' || startsWith(matrix.idf-version, 'v4') && '--cfg espidf_time32' }}"
        run: cargo build --target ${{ matrix.target }} --no-default-features -Zbuild-std=std,panic_abort

#      - name: Build | Compile (Native), alloc
#        if: matrix.target != 'riscv32imac-esp-espidf' || matrix.idf-version != 'v4.4.8'
#        env:
#          ESP_IDF_VERSION: ${{ matrix.idf-version }}
#          RUSTFLAGS: "${{ startsWith(matrix.idf-version, 'v5') && '--cfg espidf_time64' || '' }}"
#        run: cargo build --no-default-features --features alloc --target ${{ matrix.target }} -Zbuild-std=std,panic_abort

      - name: Setup | ldproxy
        if: matrix.target == 'riscv32imc-esp-espidf'
        run: |
          curl -L https://github.com/esp-rs/embuild/releases/latest/download/ldproxy-x86_64-unknown-linux-gnu.zip -o $HOME/.cargo/bin/ldproxy.zip
          unzip "$HOME/.cargo/bin/ldproxy.zip" -d "$HOME/.cargo/bin/"
          chmod a+x $HOME/.cargo/bin/ldproxy

      - name: Clippy | Examples
        if: matrix.target != 'riscv32imac-esp-espidf' || matrix.idf-version != 'v4.4.8'
        env:
          ESP_IDF_VERSION: ${{ matrix.idf-version }}
          RUSTFLAGS: "${{ startsWith(matrix.idf-version, 'v5') && '--cfg espidf_time64' || startsWith(matrix.idf-version, 'v4') && '--cfg espidf_time32' }}"
        run: cargo clippy --examples --target ${{ matrix.target }} -Zbuild-std=std,panic_abort -- -Dwarnings -Adeprecated

      - name: Build | Examples
        if: matrix.target != 'riscv32imac-esp-espidf' || matrix.idf-version != 'v4.4.8'
        env:
          ESP_IDF_VERSION: ${{ matrix.idf-version }}
          RUSTFLAGS: "${{ startsWith(matrix.idf-version, 'v5') && '--cfg espidf_time64' || startsWith(matrix.idf-version, 'v4') && '--cfg espidf_time32' }}"
        run: cargo build --examples --target ${{ matrix.target }} -Zbuild-std=std,panic_abort