summaryrefslogtreecommitdiffstats
path: root/tinyusb/.github/workflows/build.yml
blob: 8ef19b0a06dc75dec21628c355dabd52c7235ed6 (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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
name: Build ARM

on:
  pull_request:
  push:
  release:
    types:
      - created

jobs:
  # ---------------------------------------
  # Unit testing with Ceedling
  # ---------------------------------------
  unit-test:
    runs-on: ubuntu-latest
    steps:
    - name: Setup Ruby
      uses: actions/setup-ruby@v1
      with:
        ruby-version: '2.7'

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

    - name: Unit Tests
      run: |
        # Install Ceedling
        gem install ceedling
        cd test
        ceedling test:all

  # ---------------------------------------
  # Build ARM family
  # ---------------------------------------
  build-arm:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        family:
        # Alphabetical order
        - 'imxrt'
        - 'lpc15'
        - 'lpc18'
        - 'lpc54'
        - 'lpc55'
        - 'nrf'
        - 'rp2040'
        - 'samd11'
        - 'samd21'
        - 'samd51'
        - 'saml2x'
        - 'stm32f0'
        - 'stm32f1'
        - 'stm32f4'
        - 'stm32f7'
        - 'stm32h7'
    steps:
    - name: Setup Python
      uses: actions/setup-python@v2

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

    - name: Checkout common submodules in lib
      run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip lib/sct_neopixel

    - name: Checkout pico-sdk
      if: matrix.family == 'rp2040'
      run: |
        git clone --depth 1 -b develop https://github.com/raspberrypi/pico-sdk ~/pico-sdk
        echo >> $GITHUB_ENV PICO_SDK_PATH=~/pico-sdk

    - name: Set Toolchain URL
      run: echo >> $GITHUB_ENV TOOLCHAIN_URL=https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v10.2.1-1.1/xpack-arm-none-eabi-gcc-10.2.1-1.1-linux-x64.tar.gz

    - name: Cache Toolchain
      uses: actions/cache@v2
      id: cache-toolchain
      with:
        path: ~/cache/
        key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }}

    - name: Install Toolchain
      if: steps.cache-toolchain.outputs.cache-hit != 'true'
      run: |
        mkdir -p ~/cache/toolchain
        wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.gz
        tar -C ~/cache/toolchain -xaf toolchain.tar.gz

    - name: Set Toolchain Path
      run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`

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

  # ---------------------------------------
  # Build all no-family (opharned) boards
  # ---------------------------------------
  build-board:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        example:
        # Alphabetical order, a group of 4
        - 'device/audio_test device/board_test device/cdc_dual_ports device/cdc_msc'
        - 'device/cdc_msc_freertos device/dfu_runtime device/hid_composite device/hid_composite_freertos'
        - 'device/hid_generic_inout device/hid_multiple_interface device/midi_test device/msc_dual_lun'
        - 'device/net_lwip_webserver'
        - 'device/uac2_headset device/usbtmc device/webusb_serial host/cdc_msc_hid'

    steps:
    - name: Setup Python
      uses: actions/setup-python@v2

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

    - name: Checkout common submodules in lib
      run: git submodule update --init lib/FreeRTOS-Kernel lib/lwip

    - name: Set Toolchain URL
      run: echo >> $GITHUB_ENV TOOLCHAIN_URL=https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v10.2.1-1.1/xpack-arm-none-eabi-gcc-10.2.1-1.1-linux-x64.tar.gz

    - name: Cache Toolchain
      uses: actions/cache@v2
      id: cache-toolchain
      with:
        path: ~/cache/
        key: ${{ runner.os }}-21-03-04-${{ env.TOOLCHAIN_URL }}

    - name: Install Toolchain
      if: steps.cache-toolchain.outputs.cache-hit != 'true'
      run: |
        mkdir -p ~/cache/toolchain
        wget --progress=dot:mega $TOOLCHAIN_URL -O toolchain.tar.gz
        tar -C ~/cache/toolchain -xaf toolchain.tar.gz

    - name: Set Toolchain Path
      run: echo >> $GITHUB_PATH `echo ~/cache/toolchain/*/bin`

    - name: Build
      run: python3 tools/build_board.py ${{ matrix.example }}