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