improves bsp of riscv-vp by including init.c
This commit is contained in:
@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.21)
|
||||
include(CheckLinkerFlag)
|
||||
|
||||
project(mnrs-bsp LANGUAGES ASM C)
|
||||
option(NO_INIT "use an empty init routine" OFF)
|
||||
set(LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/env/${BOARD}/link.lds"
|
||||
CACHE FILEPATH "Linker script to use for BSP linking")
|
||||
get_filename_component(LINKER_SCRIPT_DIR "${LINKER_SCRIPT}" DIRECTORY)
|
||||
@@ -30,18 +31,22 @@ target_include_directories(startup PUBLIC env include)
|
||||
|
||||
add_subdirectory(libwrap)
|
||||
|
||||
add_library(bsp STATIC env/${BOARD}/init.c)
|
||||
target_link_libraries(bsp PUBLIC startup wrap)
|
||||
target_include_directories(bsp PUBLIC env/${BOARD})
|
||||
add_library(runtime STATIC env/${BOARD}/init.c)
|
||||
target_include_directories(runtime PUBLIC env/${BOARD} env include)
|
||||
if(NO_INIT)
|
||||
target_compile_definitions(runtime PRIVATE NO_INIT)
|
||||
endif()
|
||||
|
||||
check_linker_flag(C "LINKER:--no-warn-rwx-segments" HAS_NO_WARN_RWX_SEGMENTS)
|
||||
|
||||
if(HAS_NO_WARN_RWX_SEGMENTS)
|
||||
target_link_options(bsp INTERFACE LINKER:--no-warn-rwx-segments)
|
||||
target_link_options(runtime INTERFACE LINKER:--no-warn-rwx-segments)
|
||||
endif()
|
||||
target_link_options(bsp INTERFACE LINKER: -nostartfiles -T ${LINKER_SCRIPT} -L${LINKER_SCRIPT_DIR})
|
||||
target_link_options(runtime INTERFACE LINKER: -nostartfiles -T ${LINKER_SCRIPT} -L${LINKER_SCRIPT_DIR})
|
||||
|
||||
if(SEMIHOSTING)
|
||||
target_include_directories(bsp INTERFACE include)
|
||||
target_sources(bsp INTERFACE env/semihosting.c env/trap.c)
|
||||
target_sources(runtime INTERFACE env/semihosting.c env/trap.c)
|
||||
endif()
|
||||
|
||||
add_library(bsp INTERFACE)
|
||||
target_link_libraries(bsp INTERFACE startup runtime wrap)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user