Skip to content
Closed
32 changes: 26 additions & 6 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 @@ -252,6 +260,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 @@ -267,6 +276,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 @@ -310,6 +320,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 @@ -337,12 +348,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 @@ -351,17 +364,20 @@ 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"
- 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 @@ -374,22 +390,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_BSP: "ESP32C3(cmake)"
RTT_TOOL_CHAIN: "sourcery-riscv32-esp32"
RTT_BUILD_TOOL: "cmake"
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 @@ -404,7 +425,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 @@ -414,10 +434,10 @@ jobs:
echo "RTT_ROOT=${{ github.workspace }}" >> $GITHUB_ENV
echo "RTT_CC=gcc" >> $GITHUB_ENV
echo "export PATH=~/.env/tools/scripts:$PATH" > ~/.env/env.sh
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 @@ -500,11 +520,11 @@ jobs:
echo "RTT_EXEC_PATH=/opt/i386-unknown-elf_for_x86_64-pc-linux-gnu/bin" >> $GITHUB_ENV

- name: Bsp Scons Compile
if: ${{ success() }}
shell: bash
if: ${{ success() && matrix.legs.RTT_BUILD_TOOL == 'cmake' }}
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
73 changes: 72 additions & 1 deletion tools/ci/bsp_buildings.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import shutil
import re
import multiprocessing
import subprocess
import yaml

def add_summary(text):
Expand Down Expand Up @@ -36,7 +37,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 +93,65 @@ def build_bsp(bsp, scons_args=''):

return success

def build_bsp_cmake(bsp, scons_args=''):
"""
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 @@ -45,13 +45,13 @@ def GenerateCFiles(env, project, project_name):
OBJDUMP = tool_path_conv["CMAKE_OBJDUMP"]["path"]
OBJCOPY = tool_path_conv["CMAKE_OBJCOPY"]["path"]
FROMELF = tool_path_conv["CMAKE_FROMELF"]["path"]

CFLAGS = rtconfig.CFLAGS.replace('\\', "/").replace('\"', "\\\"")
CFLAGS = env['CFLAGS'].replace('\\', "/").replace('\"', "\\\"")
if 'CXXFLAGS' in dir(rtconfig):
CXXFLAGS = rtconfig.CXXFLAGS.replace('\\', "/").replace('\"', "\\\"")
CXXFLAGS = env['CXXFLAGS'].replace('\\', "/").replace('\"', "\\\"")
else:
CXXFLAGS = CFLAGS
AFLAGS = rtconfig.AFLAGS.replace('\\', "/").replace('\"', "\\\"")
AFLAGS = env['ASFLAGS'].replace('\\', "/").replace('\"', "\\\"")
LFLAGS = env['LINKFLAGS'].replace('\\', "/").replace('\"', "\\\"")

POST_ACTION = rtconfig.POST_ACTION
Expand Down
Loading