Skip to content

Develop/nn

Develop/nn #38

Workflow file for this run

name: Build
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
build-gcc:
name: Build with ARM GCC
runs-on: ubuntu-latest
strategy:
matrix:
config:
- name: "Default (All OFF)"
freertos: "OFF"
lvgl: "OFF"
- name: "FreeRTOS ON"
freertos: "ON"
lvgl: "OFF"
- name: "LVGL ON"
freertos: "OFF"
lvgl: "ON"
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build
- name: Install ARM GCC Toolchain
run: |
sudo apt-get install -y gcc-arm-none-eabi
- name: Verify toolchain installation
run: |
arm-none-eabi-gcc --version
ninja --version
cmake --version
- name: Build with GCC - ${{ matrix.config.name }}
run: |
cmake -B build -G Ninja \
-DCMAKE_TOOLCHAIN_FILE="cmake/gcc-arm-none-eabi.cmake" \
-DCMAKE_BUILD_TYPE=Debug \
-DLINKER_SCRIPT="L1_MCU/STM32F407VGT6_GCC/STM32F407XX_FLASH.ld" \
-DMCU_MODEL="STM32F407VGT6_GCC"\
-DUSE_FREERTOS=${{ matrix.config.freertos }} \
-DUSE_FATFS=OFF \
-DUSE_LVGL=${{ matrix.config.lvgl }}
ninja -C build
build-gcc-windows:
name: Build with ARM GCC (Windows)
runs-on: windows-latest
strategy:
matrix:
config:
- name: "Default (All OFF)"
freertos: "OFF"
lvgl: "OFF"
- name: "FreeRTOS ON"
freertos: "ON"
lvgl: "OFF"
- name: "LVGL ON"
freertos: "OFF"
lvgl: "ON"
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Install ARM GCC Toolchain
uses: carlosperate/arm-none-eabi-gcc-action@v1
with:
release: '13.2.Rel1'
- name: Verify toolchain installation
shell: pwsh
run: |
arm-none-eabi-gcc --version
ninja --version
cmake --version
- name: Build with GCC - ${{ matrix.config.name }}
shell: pwsh
run: |
cmake -B build -G Ninja `
-DCMAKE_TOOLCHAIN_FILE="cmake/gcc-arm-none-eabi.cmake" `
-DCMAKE_BUILD_TYPE=Debug `
-DLINKER_SCRIPT="L1_MCU/STM32F407VGT6_GCC/STM32F407XX_FLASH.ld" `
-DMCU_MODEL="STM32F407VGT6_GCC" `
-DUSE_FREERTOS=${{ matrix.config.freertos }} `
-DUSE_FATFS=OFF `
-DUSE_LVGL=${{ matrix.config.lvgl }} `
-DUSE_LVGL_THORVG=${{ matrix.config.thorvg }}
ninja -C build
test:
name: Run Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build gcc-multilib g++-multilib
- name: Verify tools installation
run: |
ninja --version
cmake --version
gcc --version
- name: Run tests
run: |
cd Test
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_C_FLAGS="-m32" \
-DCMAKE_CXX_FLAGS="-m32"
cmake --build build --config Debug
# 运行测试可执行文件
if [ -f "build/test" ]; then
echo "Running test executable..."
./build/test
else
echo "Error: Test executable not found at build/test"
ls -la build/
exit 1
fi
test-windows:
name: Run Unit Tests (Windows)
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Setup MSYS2 with GCC
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: >-
mingw-w64-x86_64-gcc
mingw-w64-x86_64-cmake
mingw-w64-x86_64-ninja
- name: Verify tools installation
shell: msys2 {0}
run: |
gcc --version
cmake --version
ninja --version
- name: Run tests
shell: msys2 {0}
run: |
cd Test
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug
cmake --build build --config Debug
# 运行测试可执行文件
if [ -f "build/test.exe" ]; then
echo "Running test executable..."
./build/test.exe
else
echo "Error: Test executable not found at build/test.exe"
ls -la build/
exit 1
fi