| name: FreeRTOS-Kernel Demos | |
| on: [push, pull_request] | |
| env: | |
| # The bash escape character is \033 | |
| bashPass: \033[32;1mPASSED - | |
| bashInfo: \033[33;1mINFO - | |
| bashFail: \033[31;1mFAILED - | |
| bashEnd: \033[0m | |
| jobs: | |
| WIN32-MSVC: | |
| name: WIN32 MSVC | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout the FreeRTOS/FreeRTOS Repository | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| ref: main | |
| repository: FreeRTOS/FreeRTOS | |
| submodules: 'recursive' | |
| fetch-depth: 1 | |
| # Checkout user pull request changes | |
| - name: Checkout Pull Request | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| path: ./FreeRTOS/Source | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@v1.1 | |
| - name: Build WIN32-MSVC Demo | |
| working-directory: FreeRTOS/Demo/WIN32-MSVC | |
| run: msbuild WIN32.sln -t:rebuild | |
| - name: Build WIN32-MSVC-Static-Allocation-Only Demo | |
| working-directory: FreeRTOS/Demo/WIN32-MSVC-Static-Allocation-Only | |
| run: msbuild WIN32.sln -t:rebuild | |
| WIN32-MingW: | |
| name: WIN32 MingW | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout the FreeRTOS/FreeRTOS Repository | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| ref: main | |
| repository: FreeRTOS/FreeRTOS | |
| submodules: 'recursive' | |
| fetch-depth: 1 | |
| # Checkout user pull request changes | |
| - name: Checkout Pull Request | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| path: ./FreeRTOS/Source | |
| - name: Build WIN32-MingW Demo | |
| working-directory: FreeRTOS/Demo/WIN32-MingW | |
| run: | | |
| gcc --version | |
| make --version | |
| make | |
| POSIX-GCC: | |
| name: Native GCC | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - macos-latest | |
| - ubuntu-latest | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout the FreeRTOS/FreeRTOS Repository | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| ref: main | |
| repository: FreeRTOS/FreeRTOS | |
| submodules: 'recursive' | |
| fetch-depth: 1 | |
| # Checkout user pull request changes | |
| - name: Checkout Pull Request | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| path: ./FreeRTOS/Source | |
| - name: Install GCC | |
| shell: bash | |
| if: matrix.os == 'ubuntu-latest' | |
| run: | | |
| sudo apt-get -y update | |
| sudo apt-get -y install build-essential | |
| - name: Build Posix_GCC Demo | |
| shell: bash | |
| working-directory: FreeRTOS/Demo/Posix_GCC | |
| run: make -j | |
| - name: Build Posix_GCC Demo for Coverage Test | |
| shell: bash | |
| working-directory: FreeRTOS/Demo/Posix_GCC | |
| run: make -j COVERAGE_TEST=1 | |
| CMake-Example: | |
| name: CMake Example with Native GCC | |
| runs-on: ubuntu-latest | |
| steps: | |
| # Checkout user pull request changes | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4.1.1 | |
| - name: Install GCC | |
| shell: bash | |
| run: | | |
| sudo apt-get -y update | |
| sudo apt-get -y install build-essential | |
| - name: Build CMake Example Demo | |
| shell: bash | |
| working-directory: examples/cmake_example | |
| run: | | |
| cmake -S . -B build | |
| cmake --build build | |
| - name: Build CMake SMP Example Demo | |
| shell: bash | |
| working-directory: examples/cmake_example | |
| run: | | |
| cmake -S . -B build -DFREERTOS_SMP_EXAMPLE=1 | |
| cmake --build build | |
| MSP430-GCC: | |
| name: GNU MSP430 Toolchain | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout the FreeRTOS/FreeRTOS Repository | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| ref: main | |
| repository: FreeRTOS/FreeRTOS | |
| submodules: 'recursive' | |
| fetch-depth: 1 | |
| # Checkout user pull request changes | |
| - name: Checkout Pull Request | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| path: ./FreeRTOS/Source | |
| - name: Install MSP430 Toolchain | |
| shell: bash | |
| run: | | |
| sudo apt-get -y update | |
| sudo apt-get -y install gcc-msp430 build-essential | |
| - name: Build msp430_GCC Demo | |
| shell: bash | |
| working-directory: FreeRTOS/Demo/msp430_GCC | |
| run: make -j | |
| MicroBlaze-GCC: | |
| name: GCC MicroBlaze Toolchain | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout the FreeRTOS/FreeRTOS Repository | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| ref: main | |
| repository: FreeRTOS/FreeRTOS | |
| fetch-depth: 1 | |
| - env: | |
| stepName: Fetch Community-Supported-Demos Submodule | |
| shell: bash | |
| run: | | |
| # ${{ env.stepName }} | |
| echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
| git submodule update --checkout --init --depth 1 FreeRTOS/Demo/ThirdParty/Community-Supported-Demos | |
| # This repository contains the microblaze_instructions.h header file | |
| git clone https://github.com/Xilinx/embeddedsw.git --branch xilinx_v2023.1 | |
| echo "::endgroup::" | |
| echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
| # Checkout user pull request changes | |
| - name: Checkout Pull Request | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| path: ./FreeRTOS/Source | |
| - env: | |
| stepName: Install Dependancies | |
| shell: bash | |
| run: | | |
| # ${{ env.stepName }} | |
| echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
| sudo apt update -y | |
| sudo apt upgrade -y | |
| sudo apt install -y build-essential m4 debhelper bison texinfo dejagnu flex | |
| sudo apt install -y autogen gawk libgmp-dev libmpc-dev libmpfr-dev | |
| sudo apt install -y patchutils sharutils zlib1g-dev autoconf2.64 | |
| # Download the mb-gcc toolchain from github | |
| curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/binutils-microblaze_2.35-2021-0623+1_amd64.deb; | |
| curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/gcc-microblaze_10.2.0-2021-0623+2_amd64.deb; | |
| 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; | |
| 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; | |
| curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/libnewlib-microblaze_3.3.0-2021-0623+3_all.deb; | |
| curl -L -O https://github.com/mdednev/mb-gcc/releases/download/2021-0623%2B2/newlib-source_3.3.0-2021-0623+3_all.deb; | |
| # Install the packages for the toolchain | |
| sudo apt install -y ./binutils-microblaze*.deb; | |
| sudo apt install -y ./gcc-microblaze*.deb; | |
| sudo apt install -y ./libnewlib-microblaze-dev*.deb; | |
| sudo apt install -y ./libnewlib-microblaze-doc*.deb; | |
| sudo apt install -y ./libnewlib-microblaze*.deb; | |
| sudo apt install -y ./newlib-source*.deb; | |
| # Validate that the toolchain is in the path and can be called | |
| which mb-gcc | |
| mb-gcc --version | |
| echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
| - env: | |
| stepName: Compile Microblaze Port | |
| shell: bash | |
| run: | | |
| # ${{ env.stepName }} | |
| echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
| # Compile MicroBlazeV9 Port files to validate they build | |
| mb-gcc -mcpu=v9.5 -c \ | |
| FreeRTOS/Source/portable/GCC/MicroBlazeV9/port.c \ | |
| FreeRTOS/Source/portable/GCC/MicroBlazeV9/portasm.S \ | |
| FreeRTOS/Source/portable/GCC/MicroBlazeV9/port_exceptions.c \ | |
| FreeRTOS/Source/tasks.c \ | |
| FreeRTOS/Source/list.c \ | |
| -I embeddedsw/lib/bsp/standalone/src/microblaze \ | |
| -I FreeRTOS/Source/portable/GCC/MicroBlazeV9/ \ | |
| -I FreeRTOS/Source/include \ | |
| -I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/RTOSDemo/src \ | |
| -I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/BSP/microblaze_0/libsrc/standalone_v5_4/src \ | |
| -I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/BSP/microblaze_0/include \ | |
| -I FreeRTOS/Demo/MicroBlaze_Kintex7_EthernetLite/BSP/microblaze_0/libsrc/intc_v3_5/src | |
| echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
| ARM-GCC: | |
| name: GNU ARM Toolchain | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout the FreeRTOS/FreeRTOS Repository | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| ref: main | |
| repository: FreeRTOS/FreeRTOS | |
| fetch-depth: 1 | |
| - env: | |
| stepName: Fetch Community-Supported-Demos Submodule | |
| shell: bash | |
| run: | | |
| # ${{ env.stepName }} | |
| echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
| git submodule update --checkout --init --depth 1 FreeRTOS/Demo/ThirdParty/Community-Supported-Demos | |
| echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" | |
| # Checkout user pull request changes | |
| - name: Checkout Pull Request | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| path: ./FreeRTOS/Source | |
| - name: Install GNU ARM Toolchain | |
| shell: bash | |
| run: | | |
| sudo apt-get -y update | |
| sudo apt-get -y install gcc-arm-none-eabi build-essential cmake git ninja-build python3-minimal | |
| - name: Build CORTEX_MPU_M3_MPS2_QEMU_GCC Demo | |
| shell: bash | |
| working-directory: FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC | |
| run: make -j | |
| - name: Build CORTEX_MPU_R4F_TI_RM46_HERCULES_GCC Demo | |
| shell: bash | |
| working-directory: FreeRTOS/Demo/CORTEX_MPU_R4F_TI_RM46_HERCULES_GCC | |
| run: cmake -S . -B build && make -j -C build all | |
| - name: Build CORTEX_MPU_R5F_TI_RM57_HERCULES_GCC Demo | |
| shell: bash | |
| working-directory: FreeRTOS/Demo/CORTEX_MPU_R5F_TI_RM57_HERCULES_GCC | |
| run: cmake -S . -B build && make -j -C build all | |
| - name: Build CORTEX_LM3S102_GCC Demo | |
| shell: bash | |
| working-directory: FreeRTOS/Demo/CORTEX_LM3S102_GCC | |
| run: make -j | |
| - name: Build CORTEX_LM3S811_GCC Demo | |
| shell: bash | |
| working-directory: FreeRTOS/Demo/CORTEX_LM3S811_GCC | |
| run: make -j | |
| - name: Build CORTEX_M0+_RP2040 Demos | |
| shell: bash | |
| working-directory: FreeRTOS/Demo/ThirdParty/Community-Supported-Demos/CORTEX_M0+_RP2040 | |
| run: | | |
| git clone https://github.com/raspberrypi/pico-sdk.git | |
| cmake -B build -DPICO_SDK_PATH=pico-sdk -GNinja | |
| ninja -C build --verbose | |
| - name: Build CORTEX_MPS2_QEMU_IAR_GCC Demo | |
| shell: bash | |
| working-directory: FreeRTOS/Demo/CORTEX_MPS2_QEMU_IAR_GCC | |
| run: make -C build/gcc -j |