name: Build

on:
  workflow_dispatch:
  pull_request:
  push:
    branches:
      - master

jobs:
  build-esp-idf-component:
    name: Build with ESP-IDF ${{ matrix.idf_ver }} for ${{ matrix.idf_target }}
    runs-on: ubuntu-latest
    strategy:
      matrix:
        # The version names here correspond to the versions of espressif/idf Docker image.
        # See https://hub.docker.com/r/espressif/idf/tags and
        # https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-docker-image.html
        # for details.
        idf_ver: ["release-v4.4", "release-v5.1", "v5.3.2"]
        idf_target: ["esp32", "esp32s3", "esp32c2", "esp32c3", "esp32c6", "esp32h2", "esp32p4"]
        example:
          - NimBLE_Client
          - NimBLE_Server
          - Bluetooth_5/NimBLE_extended_client
          - Bluetooth_5/NimBLE_extended_server
        exclude:
          - idf_target: "esp32"
            example: Bluetooth_5/NimBLE_extended_client
          - idf_target: "esp32"
            example: Bluetooth_5/NimBLE_extended_server
          - idf_ver: release-v4.4
            idf_target: "esp32c2"
          - idf_ver: release-v4.4
            idf_target: "esp32c6"
          - idf_ver: release-v4.4
            idf_target: "esp32h2"
          - idf_ver: release-v4.4
            idf_target: "esp32p4"
          - idf_ver: release-v5.1
            idf_target: "esp32p4"

    container: espressif/idf:${{ matrix.idf_ver }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          path: components/esp-nimble-cpp
      - name: Build examples
        env:
          IDF_TARGET: ${{ matrix.idf_target }}
        shell: bash
        run: |
          . ${IDF_PATH}/export.sh
          cp -r components/esp-nimble-cpp/examples/* .
          idf.py -C ${{ matrix.example }} -DEXTRA_COMPONENT_DIRS=$PWD/components build

  build_docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Doxygen Action
        uses: mattnotmitt/doxygen-action@v1.9.8
        with:
          working-directory: 'docs/'