name: Build ARM

on:
  workflow_dispatch:
  push:
    paths:
      - 'src/**'
      - 'examples/**'
      - 'lib/**'
      - 'hw/**'
      - 'tools/get_deps.py'
      - '.github/workflows/build_arm.yml'
  pull_request:
    branches: [ master ]
    paths:
      - 'src/**'
      - 'examples/**'
      - 'lib/**'
      - 'hw/**'
      - 'tools/get_deps.py'
      - '.github/workflows/build_arm.yml'

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  # ---------------------------------------
  # Build ARM family
  # ---------------------------------------
  build-arm:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        family:
        # Alphabetical order
        - 'broadcom_32bit'
        - 'kinetis_k32l2'
        - 'lpc11 lpc13 lpc15'
        - 'lpc51'
        - 'mm32 msp432e4'
        - 'samd11 same5x saml2x'
        - 'stm32f2 stm32f3'
        - 'stm32l0 stm32wb'
        - 'tm4c123 xmc4000'
    steps:
    - name: Setup Python
      uses: actions/setup-python@v5
      with:
        python-version: '3.x'

    - name: Install ARM GCC
      uses: carlosperate/arm-none-eabi-gcc-action@v1
      with:
        release: '11.2-2022.02'

    - name: Checkout TinyUSB
      uses: actions/checkout@v4

    - name: Get Dependencies
      run: python3 tools/get_deps.py ${{ matrix.family }}

    - name: Build
      run: python3 tools/build_make.py ${{ matrix.family }}
