summaryrefslogtreecommitdiff
path: root/.github/workflows/build_util.yml
blob: ff98aef2d461b59dacabf8cb62d38f8b1bbb7957 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
name: Reusable build util

on:
  workflow_call:
    inputs:
      build-system:
        required: true
        type: string
      toolchain:
        required: true
        type: string
      build-args:
        required: true
        type: string
      one-per-family:
        required: false
        default: false
        type: boolean
      os:
        required: false
        type: string
        default: 'ubuntu-latest'

jobs:
  family:
    runs-on: ${{ inputs.os }}
    strategy:
      fail-fast: false
      matrix:
        arg: ${{ fromJSON(inputs.build-args) }}
    steps:
      - name: Checkout TinyUSB
        uses: actions/checkout@v4

      - name: Setup Toolchain
        id: setup-toolchain
        uses: ./.github/actions/setup_toolchain
        with:
          toolchain: ${{ inputs.toolchain }}
          toolchain_version: 'v5.1.1'

      - name: Get Dependencies
        uses: ./.github/actions/get_deps
        with:
          arg: ${{ matrix.arg }}

      - name: Set build one-per-family option
        id: set-one-per-family
        run: |
          if [[ "${{ inputs.one-per-family }}" == "true" ]]; then
            BUILD_OPTION="--one-per-family"
          fi
          echo "build_option=$BUILD_OPTION"
          echo "build_option=$BUILD_OPTION" >> $GITHUB_OUTPUT
        shell: bash

      - name: Build
        run: |
          if [ "${{ inputs.toolchain }}" == "esp-idf" ]; then
            docker run --rm -v $PWD:/project -w /project espressif/idf:v5.1.1 python tools/build.py ${{ matrix.arg }}
          else
            python tools/build.py -s ${{ inputs.build-system }} ${{ steps.setup-toolchain.outputs.build_option }} ${{ steps.set-one-per-family.outputs.build_option }} ${{ matrix.arg }}
          fi
        shell: bash