chore: migrate project into clean repository

This commit is contained in:
yuuux
2026-08-13 16:50:52 +08:00
commit d1d25a09e7
27405 changed files with 9422808 additions and 0 deletions

View File

@@ -0,0 +1,99 @@
# ARCS BOARD SUPPORT
#
# Copyright (c) 2025, LISTENAI
# SPDX-License-Identifier: Apache-2.0
# 1. 动态获取可用板型列表
function(get_available_boards output_var)
set(boards_list "")
file(GLOB board_dirs RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*")
foreach(item ${board_dirs})
if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${item}")
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${item}/CMakeLists.txt")
list(APPEND boards_list "${item}")
endif()
endif()
endforeach()
set(${output_var} ${boards_list} PARENT_SCOPE)
endfunction()
# 2. 获取板型名称
if(NOT DEFINED BOARD)
# 动态生成板型列表
get_available_boards(AVAILABLE_BOARDS)
set(BOARD_LIST_STR "")
foreach(board ${AVAILABLE_BOARDS})
string(APPEND BOARD_LIST_STR " - ${board}\n")
endforeach()
message(FATAL_ERROR
"BOARD is not specified!\n"
"Please specify a board using -DBOARD=<board_name>\n"
"Available SDK boards:\n"
"${BOARD_LIST_STR}\n"
"Example usage:\n"
" ./build.sh -S samples/helloworld -DBOARD=arcs_evb\n"
" ./build.sh -S samples/helloworld -DBOARD=my_board -DBOARD_SEARCH_PATH=/path/to/boards")
endif()
message(STATUS "Target board: ${BOARD}")
# 3. 板型搜索(两级优先级)
set(BOARD_DIR "")
# 优先级1: 自定义板型路径 (如果 BOARD_SEARCH_PATH 已定义)
if(DEFINED BOARD_SEARCH_PATH)
if(EXISTS "${BOARD_SEARCH_PATH}/${BOARD}")
set(BOARD_DIR "${BOARD_SEARCH_PATH}/${BOARD}")
message(STATUS "Board found (custom): ${BOARD} from ${BOARD_SEARCH_PATH}")
else()
message(WARNING "BOARD_SEARCH_PATH specified but board '${BOARD}' not found in ${BOARD_SEARCH_PATH}")
endif()
endif()
# 优先级2: SDK 内置板型
if(NOT BOARD_DIR)
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${BOARD}")
set(BOARD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${BOARD}")
message(STATUS "Board found (SDK): ${BOARD}")
endif()
endif()
# 4. 验证板型目录存在
if(NOT BOARD_DIR)
# 动态生成板型列表
get_available_boards(AVAILABLE_BOARDS)
set(BOARD_LIST_STR "")
foreach(board ${AVAILABLE_BOARDS})
string(APPEND BOARD_LIST_STR " - ${board}\n")
endforeach()
message(FATAL_ERROR
"Board '${BOARD}' not found!\n"
"Searched in:\n"
" - ${BOARD_SEARCH_PATH}/${BOARD} (if BOARD_SEARCH_PATH defined)\n"
" - ${CMAKE_CURRENT_SOURCE_DIR}/${BOARD}\n"
"Please check:\n"
" 1. BOARD variable is set correctly (-DBOARD=xxx)\n"
" 2. Board directory exists\n"
" 3. BOARD_SEARCH_PATH is correct (if using custom board)\n"
"Available SDK boards:\n"
"${BOARD_LIST_STR}\n"
"Example usage:\n"
" ./build.sh -S samples/helloworld -DBOARD=arcs_evb\n"
" ./build.sh -S samples/helloworld -DBOARD=my_board -DBOARD_SEARCH_PATH=/path/to/boards")
endif()
# 5. 检查板型 CMakeLists.txt 存在
if(NOT EXISTS "${BOARD_DIR}/CMakeLists.txt")
message(FATAL_ERROR
"Board directory found but missing CMakeLists.txt: ${BOARD_DIR}\n"
"Each board must contain a CMakeLists.txt file.\n"
"Please refer to boards/BOARD_TEMPLATE.md for board structure requirements.")
endif()
# 6. 加载板型
# 使用第二个参数指定二进制目录,避免外部板型路径冲突
add_subdirectory(${BOARD_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${BOARD})
message(STATUS "Board loaded successfully: ${BOARD_DIR}")