summaryrefslogtreecommitdiff
path: root/hw/bsp/nuc121_125
diff options
context:
space:
mode:
authorhathach <[email protected]>2025-10-17 16:54:15 +0700
committerhathach <[email protected]>2025-10-23 02:23:20 +0700
commitc8a1b757f05be044d121a655b6e1a5ac3b52ee14 (patch)
tree64dcf52caf145ad8081c91f40318b3587bee80f4 /hw/bsp/nuc121_125
parent2f3b21a1e58e5c03c61e83920d77f8c27540dfd5 (diff)
refactor family.cmake: rename add_board_target() to family_add_board() and move it to family_configure_common()
also move startup and linker from board target to actual exe
Diffstat (limited to 'hw/bsp/nuc121_125')
-rw-r--r--hw/bsp/nuc121_125/family.cmake70
1 files changed, 27 insertions, 43 deletions
diff --git a/hw/bsp/nuc121_125/family.cmake b/hw/bsp/nuc121_125/family.cmake
index 5b95c9d9c..1eb581347 100644
--- a/hw/bsp/nuc121_125/family.cmake
+++ b/hw/bsp/nuc121_125/family.cmake
@@ -14,22 +14,16 @@ set(OPENOCD_OPTION "-f interface/nulink.cfg -f target/numicroM0.cfg")
set(FAMILY_MCUS NUC121 CACHE INTERNAL "")
#------------------------------------
-# BOARD_TARGET
+# Startup & Linker script
#------------------------------------
-# only need to be built ONCE for all examples
-function(add_board_target BOARD_TARGET)
- if (TARGET ${BOARD_TARGET})
- return()
- endif ()
-
- set(LD_FILE_Clang ${LD_FILE_GNU})
- if (NOT DEFINED LD_FILE_${CMAKE_C_COMPILER_ID})
- message(FATAL_ERROR "LD_FILE_${CMAKE_C_COMPILER_ID} not defined")
- endif ()
-
- set(STARTUP_FILE_GNU ${SDK_DIR}/Device/Nuvoton/NUC121/Source/GCC/startup_NUC121.S)
- set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
+set(LD_FILE_Clang ${LD_FILE_GNU})
+set(STARTUP_FILE_GNU ${SDK_DIR}/Device/Nuvoton/NUC121/Source/GCC/startup_NUC121.S)
+set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
+#------------------------------------
+# Board Target
+#------------------------------------
+function(family_add_board BOARD_TARGET)
# Common sources for all NUC12x
add_library(${BOARD_TARGET} STATIC
${SDK_DIR}/Device/Nuvoton/NUC121/Source/system_NUC121.c
@@ -38,7 +32,6 @@ function(add_board_target BOARD_TARGET)
${SDK_DIR}/StdDriver/src/fmc.c
${SDK_DIR}/StdDriver/src/sys.c
${SDK_DIR}/StdDriver/src/timer.c
- ${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
)
target_include_directories(${BOARD_TARGET} PUBLIC
@@ -53,52 +46,43 @@ function(add_board_target BOARD_TARGET)
CFG_EXAMPLE_MSC_READONLY
)
update_board(${BOARD_TARGET})
-
- if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
- target_link_options(${BOARD_TARGET} PUBLIC
- "LINKER:--script=${LD_FILE_GNU}"
- --specs=nosys.specs --specs=nano.specs
- )
- elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
- target_link_options(${BOARD_TARGET} PUBLIC
- "LINKER:--script=${LD_FILE_Clang}"
- )
- elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
- target_link_options(${BOARD_TARGET} PUBLIC
- "LINKER:--config=${LD_FILE_IAR}"
- )
- endif ()
endfunction()
-
#------------------------------------
# Functions
#------------------------------------
function(family_configure_example TARGET RTOS)
family_configure_common(${TARGET} ${RTOS})
+ family_add_tinyusb(${TARGET} OPT_MCU_NUC121)
- # Board target
- add_board_target(board_${BOARD})
-
- # These files are built for each example since it depends on example's tusb_config.h
target_sources(${TARGET} PUBLIC
- # BSP
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/family.c
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../board.c
+ ${TOP}/src/portable/nuvoton/nuc121/dcd_nuc121.c
+ ${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
)
target_include_directories(${TARGET} PUBLIC
- # family, hw, board
${CMAKE_CURRENT_FUNCTION_LIST_DIR}
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}
)
- # Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_NUC121)
- target_sources(${TARGET} PUBLIC
- ${TOP}/src/portable/nuvoton/nuc121/dcd_nuc121.c
- )
- target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+ if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
+ target_link_options(${TARGET} PUBLIC
+ "LINKER:--script=${LD_FILE_GNU}"
+ --specs=nosys.specs --specs=nano.specs
+ )
+ elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
+ target_link_options(${TARGET} PUBLIC
+ "LINKER:--script=${LD_FILE_Clang}"
+ )
+ elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
+ target_link_options(${TARGET} PUBLIC
+ "LINKER:--config=${LD_FILE_IAR}"
+ )
+ endif ()
+
+ set_source_files_properties(${STARTUP_FILE_${CMAKE_C_COMPILER_ID}} PROPERTIES SKIP_LINTING ON)
family_flash_openocd_nuvoton(${TARGET})
endfunction()