]> begriffs open source - freertos/blob - .github/workflows/kernel-demos.yml
Update XMOS xcore.ai port to be compatible with v11.x (#1096)
[freertos] / .github / workflows / kernel-demos.yml
1 name: FreeRTOS-Kernel Demos
2 on: [push, pull_request]
3
4 env:
5   # The bash escape character is \033
6   bashPass:   \033[32;1mPASSED -
7   bashInfo:   \033[33;1mINFO -
8   bashFail:   \033[31;1mFAILED -
9   bashEnd:    \033[0m
10
11 jobs:
12   WIN32-MSVC:
13     name: WIN32 MSVC
14     runs-on: windows-latest
15     steps:
16       - name: Checkout the FreeRTOS/FreeRTOS Repository
17         uses: actions/checkout@v4.1.1
18         with:
19           ref: main
20           repository: FreeRTOS/FreeRTOS
21           submodules: 'recursive'
22           fetch-depth: 1
23
24       # Checkout user pull request changes
25       - name: Checkout Pull Request
26         uses: actions/checkout@v4.1.1
27         with:
28           path: ./FreeRTOS/Source
29
30       - name: Add msbuild to PATH
31         uses: microsoft/setup-msbuild@v1.1
32
33       - name: Build WIN32-MSVC Demo
34         working-directory: FreeRTOS/Demo/WIN32-MSVC
35         run: msbuild WIN32.sln -t:rebuild
36
37       - name: Build WIN32-MSVC-Static-Allocation-Only Demo
38         working-directory: FreeRTOS/Demo/WIN32-MSVC-Static-Allocation-Only
39         run: msbuild WIN32.sln -t:rebuild
40
41   WIN32-MingW:
42     name: WIN32 MingW
43     runs-on: windows-latest
44     steps:
45       - name: Checkout the FreeRTOS/FreeRTOS Repository
46         uses: actions/checkout@v4.1.1
47         with:
48           ref: main
49           repository: FreeRTOS/FreeRTOS
50           submodules: 'recursive'
51           fetch-depth: 1
52
53       # Checkout user pull request changes
54       - name: Checkout Pull Request
55         uses: actions/checkout@v4.1.1
56         with:
57           path: ./FreeRTOS/Source
58
59       - name: Build WIN32-MingW Demo
60         working-directory: FreeRTOS/Demo/WIN32-MingW
61         run: |
62           gcc --version
63           make --version
64           make
65
66   POSIX-GCC:
67     name: Native GCC
68     strategy:
69       fail-fast: false
70       matrix:
71         os:
72           - macos-latest
73           - ubuntu-latest
74     runs-on: ${{ matrix.os }}
75     steps:
76       - name: Checkout the FreeRTOS/FreeRTOS Repository
77         uses: actions/checkout@v4.1.1
78         with:
79           ref: main
80           repository: FreeRTOS/FreeRTOS
81           submodules: 'recursive'
82           fetch-depth: 1
83
84       # Checkout user pull request changes
85       - name: Checkout Pull Request
86         uses: actions/checkout@v4.1.1
87         with:
88           path: ./FreeRTOS/Source
89
90       - name: Install GCC
91         shell: bash
92         if: matrix.os == 'ubuntu-latest'
93         run: |
94           sudo apt-get -y update
95           sudo apt-get -y install build-essential
96
97       - name: Build Posix_GCC Demo
98         shell: bash
99         working-directory: FreeRTOS/Demo/Posix_GCC
100         run: make -j
101
102       - name: Build Posix_GCC Demo for Coverage Test
103         shell: bash
104         working-directory: FreeRTOS/Demo/Posix_GCC
105         run: make -j COVERAGE_TEST=1
106
107   CMake-Example:
108     name: CMake Example with Native GCC
109     runs-on: ubuntu-latest
110     steps:
111       # Checkout user pull request changes
112       - name: Checkout Repository
113         uses: actions/checkout@v4.1.1
114
115       - name: Install GCC
116         shell: bash
117         run: |
118           sudo apt-get -y update
119           sudo apt-get -y install build-essential
120
121       - name: Build CMake Example Demo
122         shell: bash
123         working-directory: examples/cmake_example
124         run: |
125           cmake -S . -B build
126           cmake --build build
127
128       - name: Build CMake SMP Example Demo
129         shell: bash
130         working-directory: examples/cmake_example
131         run: |
132           cmake -S . -B build -DFREERTOS_SMP_EXAMPLE=1
133           cmake --build build
134
135   MSP430-GCC:
136     name: GNU MSP430 Toolchain
137     runs-on: ubuntu-latest
138     steps:
139       - name: Checkout the FreeRTOS/FreeRTOS Repository
140         uses: actions/checkout@v4.1.1
141         with:
142           ref: main
143           repository: FreeRTOS/FreeRTOS
144           submodules: 'recursive'
145           fetch-depth: 1
146
147       # Checkout user pull request changes
148       - name: Checkout Pull Request
149         uses: actions/checkout@v4.1.1
150         with:
151           path: ./FreeRTOS/Source
152
153       - name: Install MSP430 Toolchain
154         shell: bash
155         run: |
156           sudo apt-get -y update
157           sudo apt-get -y install gcc-msp430 build-essential
158
159       - name: Build msp430_GCC Demo
160         shell: bash
161         working-directory: FreeRTOS/Demo/msp430_GCC
162         run: make -j
163
164   MicroBlaze-GCC:
165     name: GCC MicroBlaze Toolchain
166     runs-on: ubuntu-latest
167     steps:
168       - name: Checkout the FreeRTOS/FreeRTOS Repository
169         uses: actions/checkout@v4.1.1
170         with:
171           ref: main
172           repository: FreeRTOS/FreeRTOS
173           fetch-depth: 1
174
175       - env:
176           stepName: Fetch Community-Supported-Demos Submodule
177         shell: bash
178         run: |
179           # ${{ env.stepName }}
180           echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
181           git submodule update --checkout --init --depth 1 FreeRTOS/Demo/ThirdParty/Community-Supported-Demos
182           # This repository contains the microblaze_instructions.h header file
183           git clone https://github.com/Xilinx/embeddedsw.git --branch xilinx_v2023.1
184           echo "::endgroup::"
185           echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
186
187       # Checkout user pull request changes
188       - name: Checkout Pull Request
189         uses: actions/checkout@v4.1.1
190         with:
191           path: ./FreeRTOS/Source
192
193       - env:
194           stepName: Install Dependancies
195         shell: bash
196         run: |
197           # ${{ env.stepName }}
198           echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
199           sudo apt update -y
200           sudo apt upgrade -y
201           sudo apt install -y build-essential m4 debhelper bison texinfo dejagnu flex
202           sudo apt install -y autogen gawk libgmp-dev libmpc-dev libmpfr-dev
203           sudo apt install -y patchutils sharutils zlib1g-dev autoconf2.64
204
205           # Download the mb-gcc toolchain from github
206           curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/binutils-microblaze_2.35-2021-0623+1_amd64.deb;
207           curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/gcc-microblaze_10.2.0-2021-0623+2_amd64.deb;
208           curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/libnewlib-microblaze-dev_3.3.0-2021-0623+3_all.deb;
209           curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/libnewlib-microblaze-doc_3.3.0-2021-0623+3_all.deb;
210           curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/libnewlib-microblaze_3.3.0-2021-0623+3_all.deb;
211           curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/newlib-source_3.3.0-2021-0623+3_all.deb;
212
213           # Install the packages for the toolchain
214           sudo apt install -y ./binutils-microblaze*.deb;
215           sudo apt install -y ./gcc-microblaze*.deb;
216           sudo apt install -y ./libnewlib-microblaze-dev*.deb;
217           sudo apt install -y ./libnewlib-microblaze-doc*.deb;
218           sudo apt install -y ./libnewlib-microblaze*.deb;
219           sudo apt install -y ./newlib-source*.deb;
220
221           # Validate that the toolchain is in the path and can be called
222           which mb-gcc
223           mb-gcc --version
224
225           echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
226
227       - env:
228           stepName: Compile Microblaze Port
229         shell: bash
230         run: |
231           # ${{ env.stepName }}
232           echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
233           # Compile MicroBlazeV9 Port files to validate they build
234           mb-gcc -mcpu=v9.5 -c \
235             FreeRTOS/Source/portable/GCC/MicroBlazeV9/port.c \
236             FreeRTOS/Source/portable/GCC/MicroBlazeV9/portasm.S \
237             FreeRTOS/Source/portable/GCC/MicroBlazeV9/port_exceptions.c \
238             FreeRTOS/Source/tasks.c \
239             FreeRTOS/Source/list.c \
240             -I embeddedsw/lib/bsp/standalone/src/microblaze \
241             -I FreeRTOS/Source/portable/GCC/MicroBlazeV9/ \
242             -I FreeRTOS/Source/include \
243             -I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/RTOSDemo/src \
244             -I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/BSP/microblaze_0/libsrc/standalone_v5_4/src \
245             -I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/BSP/microblaze_0/include \
246             -I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/BSP/microblaze_0/libsrc/intc_v3_5/src
247           echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
248
249
250   ARM-GCC:
251     name: GNU ARM Toolchain
252     runs-on: ubuntu-latest
253     steps:
254       - name: Checkout the FreeRTOS/FreeRTOS Repository
255         uses: actions/checkout@v4.1.1
256         with:
257           ref: main
258           repository: FreeRTOS/FreeRTOS
259           fetch-depth: 1
260
261       - env:
262           stepName: Fetch Community-Supported-Demos Submodule
263         shell: bash
264         run: |
265           # ${{ env.stepName }}
266           echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"
267           git submodule update --checkout --init --depth 1 FreeRTOS/Demo/ThirdParty/Community-Supported-Demos
268           echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
269
270       # Checkout user pull request changes
271       - name: Checkout Pull Request
272         uses: actions/checkout@v4.1.1
273         with:
274           path: ./FreeRTOS/Source
275
276       - name: Install GNU ARM Toolchain
277         shell: bash
278         run: |
279           sudo apt-get -y update
280           sudo apt-get -y install gcc-arm-none-eabi build-essential cmake git ninja-build python3-minimal
281
282       - name: Build CORTEX_MPU_M3_MPS2_QEMU_GCC Demo
283         shell: bash
284         working-directory: FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC
285         run: make -j
286
287       - name: Build CORTEX_MPU_R4F_TI_RM46_HERCULES_GCC Demo
288         shell: bash
289         working-directory: FreeRTOS/Demo/CORTEX_MPU_R4F_TI_RM46_HERCULES_GCC
290         run: cmake -S . -B build && make -j -C build all
291
292       - name: Build CORTEX_MPU_R5F_TI_RM57_HERCULES_GCC Demo
293         shell: bash
294         working-directory: FreeRTOS/Demo/CORTEX_MPU_R5F_TI_RM57_HERCULES_GCC
295         run: cmake -S . -B build && make -j -C build all
296
297       - name: Build CORTEX_LM3S102_GCC Demo
298         shell: bash
299         working-directory: FreeRTOS/Demo/CORTEX_LM3S102_GCC
300         run: make -j
301
302       - name: Build CORTEX_LM3S811_GCC Demo
303         shell: bash
304         working-directory: FreeRTOS/Demo/CORTEX_LM3S811_GCC
305         run: make -j
306
307       - name: Build CORTEX_M0+_RP2040 Demos
308         shell: bash
309         working-directory: FreeRTOS/Demo/ThirdParty/Community-Supported-Demos/CORTEX_M0+_RP2040
310         run: |
311           git clone https://github.com/raspberrypi/pico-sdk.git
312           cmake -B build -DPICO_SDK_PATH=pico-sdk -GNinja
313           ninja -C build --verbose
314
315       - name: Build CORTEX_MPS2_QEMU_IAR_GCC Demo
316         shell: bash
317         working-directory: FreeRTOS/Demo/CORTEX_MPS2_QEMU_IAR_GCC
318         run: make -C build/gcc -j