50 lines
1.5 KiB
CMake
50 lines
1.5 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
|
|
set(CMSIS_PATH ${CMAKE_CURRENT_LIST_DIR}/CMSIS)
|
|
set(PERIPHERAL_PATH ${CMAKE_CURRENT_LIST_DIR}/GD32E23x_standard_peripheral)
|
|
|
|
# Peripheral Driver
|
|
file(GLOB PERIPHERAL_SRCS ${PERIPHERAL_PATH}/src/*.c)
|
|
|
|
# CMSIS
|
|
set(TARGET_C_SOURCES
|
|
${CMSIS_PATH}/src/system_gd32e23x.c
|
|
${CMSIS_PATH}/src/syscalls.c
|
|
${PERIPHERAL_SRCS}
|
|
)
|
|
|
|
set(TARGET_C_INCLUDES
|
|
${CMSIS_PATH}/inc
|
|
${PERIPHERAL_PATH}/inc
|
|
)
|
|
|
|
# Shared library and linker script search paths
|
|
set(TARGET_LIB_DIRECTORIES
|
|
${PERIPHERAL_PATH}/inc
|
|
)
|
|
|
|
if (NOT TARGET_STARTUP_ASM)
|
|
set(TARGET_STARTUP_ASM ${CMSIS_PATH}/Startup/startup_gd32e23x.S)
|
|
endif ()
|
|
message(STATUS "Use startup asm: " ${TARGET_STARTUP_ASM})
|
|
|
|
if (NOT TARGET_LD_SCRIPT)
|
|
message(FATAL_ERROR "Must set TARGET_LD_SCRIPT to locate ld script")
|
|
endif ()
|
|
message(STATUS "Use LD script: " ${TARGET_LD_SCRIPT})
|
|
|
|
add_library(GD32E23X_SDK STATIC ${TARGET_C_SOURCES} ${TARGET_STARTUP_ASM})
|
|
|
|
# Shared sources, includes and definitions
|
|
target_compile_definitions(GD32E23X_SDK PUBLIC ${TARGET_C_DEFINES})
|
|
target_include_directories(GD32E23X_SDK
|
|
PUBLIC ${TARGET_C_INCLUDES}
|
|
INTERFACE ${TARGET_C_INCLUDES}
|
|
)
|
|
|
|
target_link_directories(GD32E23X_SDK PUBLIC ${TARGET_LIB_DIRECTORIES})
|
|
target_link_libraries(GD32E23X_SDK PUBLIC "c" "m" "nosys")
|
|
target_link_options(GD32E23X_SDK
|
|
PUBLIC "-T${TARGET_LD_SCRIPT}"
|
|
PUBLIC "-Wl,-Map=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.map,--cref"
|
|
) |