Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 28 additions & 4 deletions .github/workflows/bsp_buildings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,18 +39,22 @@ jobs:
legs:
- RTT_BSP: "RT-Thread Online Packages (STM32F407 RT-Spark)"
RTT_TOOL_CHAIN: "sourcery-arm"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "stm32/stm32f407-rt-spark"
- RTT_BSP: "RTduino/Arduino Libraries (STM32F412 Nucleo)"
RTT_TOOL_CHAIN: "sourcery-arm"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "stm32/stm32f412-st-nucleo"
- RTT_BSP: "RTduino/Arduino Libraries (Raspberry Pico)"
RTT_TOOL_CHAIN: "sourcery-arm"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "raspberry-pico"
- RTT_BSP: "others_at32_hc32_ht32"
RTT_TOOL_CHAIN: "sourcery-arm"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "qemu-vexpress-a9"
- "airm2m/air32f103"
Expand Down Expand Up @@ -109,8 +113,9 @@ jobs:
- "hc32l136"
- "yichip/yc3121-pos"
- "fm33lc026"
- RTT_BSP: "stm32l4_f0_f1"
- RTT_BSP: "stm32l4_f0_f1(cmake)"
RTT_TOOL_CHAIN: "sourcery-arm"
RTT_BUILD_TOOL: "cmake"
SUB_RTT_BSP:
- "stm32/stm32l4r5-st-nucleo"
- "stm32/stm32l4r9-st-eval"
Expand Down Expand Up @@ -148,6 +153,7 @@ jobs:
- "stm32/stm32f107-uc-eval"
- RTT_BSP: "stm32_f2_f4"
RTT_TOOL_CHAIN: "sourcery-arm"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "stm32/stm32f207-st-nucleo"
- "stm32/stm32f302-st-nucleo"
Expand Down Expand Up @@ -175,6 +181,7 @@ jobs:
- "stm32/stm32f469-st-disco"
- RTT_BSP: "stm32_f7_g0_h7_mp15_u5_h5_wb5"
RTT_TOOL_CHAIN: "sourcery-arm"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "stm32/stm32f746-st-disco"
- "stm32/stm32f746-st-nucleo"
Expand Down Expand Up @@ -208,6 +215,7 @@ jobs:
- "stm32/stm32wb55-st-nucleo"
- RTT_BSP: "nxp_renesas"
RTT_TOOL_CHAIN: "sourcery-arm"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "nxp/lpc/lpc55sxx/lpc55s69_nxp_evk"
- "nxp/lpc/lpc55sxx/lpc55s28_nxp_evk"
Expand Down Expand Up @@ -253,6 +261,7 @@ jobs:
- "xplorer4330/M4"
- RTT_BSP: "nuvoton"
RTT_TOOL_CHAIN: "sourcery-arm"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "nuvoton/numaker-pfm-m487"
- "nuvoton/numaker-hmi-ma35d1"
Expand All @@ -268,6 +277,7 @@ jobs:
- "nuvoton/numaker-m2354"
- RTT_BSP: "gd32_n32_apm32"
RTT_TOOL_CHAIN: "sourcery-arm"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "gd32/arm/gd32103c-eval"
- "gd32/arm/gd32105c-eval"
Expand Down Expand Up @@ -311,6 +321,7 @@ jobs:
- "apm32/apm32s103vb-miniboard"
- RTT_BSP: "Infineon_TI_microchip"
RTT_TOOL_CHAIN: "sourcery-arm"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "Infineon/psoc6-cy8ckit-062S2-43012"
- "Infineon/psoc6-cy8ckit-062-BLE"
Expand Down Expand Up @@ -338,12 +349,14 @@ jobs:
- "maxim/max32660-evsys"
- RTT_BSP: "mips"
RTT_TOOL_CHAIN: "sourcery-mips"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "loongson/ls1bdev"
- "loongson/ls2kdev"
- "loongson/ls1cdev"
- RTT_BSP: "aarch64"
RTT_TOOL_CHAIN: "sourcery-aarch64"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "qemu-virt64-aarch64"
- "raspberry-pi/raspi3-64"
Expand All @@ -352,18 +365,21 @@ jobs:
- "phytium/aarch64"
- RTT_BSP: "riscv-none"
RTT_TOOL_CHAIN: "sourcery-riscv-none-embed"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "k210"
- "wch/risc-v/ch32v307v-r1"
- "wch/risc-v/yd-ch32v307vct6"
- RTT_BSP: "riscv64-unknown"
RTT_TOOL_CHAIN: "sourcery-riscv64-unknown-elf"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "bluetrum/ab32vg1-ab-prougen"
- "bouffalo_lab/bl60x"
- "bouffalo_lab/bl70x"
- RTT_BSP: "hpmicro"
RTT_TOOL_CHAIN: "RISC-V-GCC-RV32"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "hpmicro/hpm6750evkmini"
- "hpmicro/hpm6750evk"
Expand All @@ -376,22 +392,27 @@ jobs:
- "hpmicro/hpm6e00evk"
- RTT_BSP: "llvm-arm"
RTT_TOOL_CHAIN: "llvm-arm"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "stm32/stm32l475-atk-pandora"
- RTT_BSP: "simulator"
RTT_TOOL_CHAIN: "gcc"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "simulator"
- RTT_BSP: "ESP32C3"
RTT_TOOL_CHAIN: "sourcery-riscv32-esp32"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "ESP32_C3"
- RTT_BSP: "i386-unknown"
RTT_TOOL_CHAIN: "sourcery-i386-unknown-elf"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "x86"
- RTT_BSP: "nordic(yml)"
RTT_TOOL_CHAIN: "sourcery-arm"
RTT_BUILD_TOOL: "scons"
SUB_RTT_BSP:
- "nrf5x/nrf51822"
- "nrf5x/nrf52832"
Expand All @@ -406,7 +427,6 @@ jobs:
python-version: 3.8

- name: Install Tools
shell: bash
run: |
wget https://raw.githubusercontent.com/RT-Thread/env/master/install_ubuntu.sh
chmod 777 install_ubuntu.sh
Expand All @@ -417,9 +437,13 @@ jobs:
echo "RTT_CC=gcc" >> $GITHUB_ENV
echo "export PATH=~/.env/tools/scripts:$PATH" > ~/.env/env.sh

- name: Install Cmake build Tools
if: ${{ matrix.legs.RTT_BUILD_TOOL == 'cmake' && success() }}
run: |
sudo apt install cmake ninja-build

- name: Install Arm ToolChains
if: ${{ matrix.legs.RTT_TOOL_CHAIN == 'sourcery-arm' && success() }}
shell: bash
run: |
wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.3/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
sudo tar xjf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 -C /opt
Expand Down Expand Up @@ -503,10 +527,10 @@ jobs:

- name: Bsp Scons Compile
if: ${{ success() }}
shell: bash
env:
RTT_BSP: ${{ matrix.legs.RTT_BSP }}
RTT_TOOL_CHAIN: ${{ matrix.legs.RTT_TOOL_CHAIN }}
RTT_BUILD_TOOL: ${{ matrix.legs.RTT_BUILD_TOOL }}
SRTT_BSP: ${{ join(matrix.legs.SUB_RTT_BSP, ',') }}
run: |
source ~/.env/env.sh
Expand Down
94 changes: 93 additions & 1 deletion tools/ci/bsp_buildings.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
"""
* Copyright (c) 2006-2025 RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2023-12-24 vacabun first version
* 2023-12-25 kurisaW remove pkgs upgrade everytime
* 2023-12-25 vacabun del debug time remove some output
* 2023-12-25 mysterywolf silent pkgs --update when building bsp
* 2023-12-26 mysterywolf add attach config CI check
* 2023-12-28 vacabun support subfolders
* 2024-01-09 vacabun attachconfig add scons args parsing
* 2024-08-25 supperthomas add manual trigger build all bsp
* 2024-11-05 supperthomas add the yml file support
* 2024-11-05 hydevcode Recursive folder lookup attachconfig.yml
* 2024-11-07 hydevcode yml file adds the depends parameter
* 2024-11-07 hydevcode attachconfig adapts yml syntax features
* 2025-02-25 kaidegit support using cmake and ninja to build
"""

import os
import shutil
import re
Expand Down Expand Up @@ -36,7 +58,18 @@ def run_cmd(cmd, output_info=True):
return output_str_list, res


def build_bsp(bsp, scons_args=''):
def build_bsp(bsp, scons_args='', build_tool=None):
if build_tool is None:
build_tool = os.getenv('RTT_BUILD_TOOL')
if build_tool == 'scons':
return build_bsp_scons(bsp, scons_args)
elif build_tool =='cmake':
return build_bsp_cmake(bsp, scons_args)
else:
print(f"::error::build tool {build_tool} is not supported")
return False

def build_bsp_scons(bsp, scons_args=''):
"""
build bsp.

Expand Down Expand Up @@ -81,6 +114,65 @@ def build_bsp(bsp, scons_args=''):

return success

def build_bsp_cmake(bsp, scons_args=''):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changelog license 加一下

"""
build bsp using cmake generater.

cd {rtt_root}
scons -C bsp/{bsp} --pyconfig-silent > /dev/null

cd {rtt_root}/bsp/{bsp}
pkgs --update > /dev/null
pkgs --list

scons --target=cmake
mkdir build
cd build
cmake .. -G Ninja
ninja -j{nproc}

cd ..
rm -rf build
rm -rf packages

"""
ext_flags = ''
scons_args = scons_args.strip()
if scons_args == "--strict":
print("scons using strict mode, build it with `-Werror` flag")
ext_flags += '-DCMAKE_COMPILE_WARNING_AS_ERROR=1'
elif scons_args != '':
print(f"this project would be built regularly because `scons_args` is `{scons_args}`")
return build_bsp_scons(bsp, scons_args)
success = True
os.chdir(rtt_root)
if os.path.exists(f"{rtt_root}/bsp/{bsp}/Kconfig"):
os.chdir(rtt_root)
run_cmd(f'scons -C bsp/{bsp} --pyconfig-silent', output_info=False)

os.chdir(f'{rtt_root}/bsp/{bsp}')
run_cmd('pkgs --update', output_info=False)
run_cmd('pkgs --list')

nproc = multiprocessing.cpu_count()

run_cmd('scons --target=cmake')
os.mkdir(f'{rtt_root}/bsp/{bsp}/cmake-build')
os.chdir(f'{rtt_root}/bsp/{bsp}/cmake-build')
run_cmd(f'cmake {ext_flags} .. -G Ninja')
_, res = run_cmd(f'ninja -j{nproc}')

if res != 0:
success = False

os.chdir(f'{rtt_root}/bsp/{bsp}')

build_dir = os.path.join(rtt_root, 'bsp', bsp, 'cmake-build')
shutil.rmtree(build_dir, ignore_errors=True)
pkg_dir = os.path.join(rtt_root, 'bsp', bsp, 'packages')
shutil.rmtree(pkg_dir, ignore_errors=True)

return success

def append_file(source_file, destination_file):
"""
Expand Down
8 changes: 4 additions & 4 deletions tools/cmake.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
* 2024-07-04 kaidegit Let cmake generator get more param from `rtconfig.py`
* 2024-08-07 imi415 Updated CMake generator handles private macros, using OBJECT and INTERFACE libraries.
* 2024-11-18 kaidegit fix processing groups with similar name
* 2024-11-18 kaidegit fix missing some flags added in Sconscript
* 2025-02-22 kaidegit fix missing some flags added in Sconscript
* 2025-02-24 kaidegit remove some code that is unnecessary but takes time, get them from env
"""

import os
Expand All @@ -32,7 +33,6 @@ def GenerateCFiles(env, project, project_name):
"""
Generate CMakeLists.txt files
"""
info = utils.ProjectInfo(env)

PROJECT_NAME = project_name if project_name != "project" else "rtthread"

Expand Down Expand Up @@ -177,14 +177,14 @@ def GenerateCFiles(env, project, project_name):
cm_file.write('\n')

cm_file.write("INCLUDE_DIRECTORIES(\n")
for i in info['CPPPATH']:
for i in env['CPPPATH']:
# use relative path
path = _make_path_relative(os.getcwd(), i)
cm_file.write( "\t" + path.replace("\\", "/") + "\n")
cm_file.write(")\n\n")

cm_file.write("ADD_DEFINITIONS(\n")
for i in info['CPPDEFINES']:
for i in env['CPPDEFINES']:
cm_file.write("\t-D" + i + "\n")
cm_file.write(")\n\n")

Expand Down