From a33b51a7086b6f03a34c9f1d489aa0370bee9ccd Mon Sep 17 00:00:00 2001 From: Eyck-Alexander Jentzsch Date: Mon, 26 May 2025 20:18:10 +0200 Subject: [PATCH] makes start.S, entry.S and link.lds configurable --- CMakeLists.txt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b91808b..1d3d49d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,11 @@ cmake_minimum_required(VERSION 3.21) project(mnrs-bsp LANGUAGES ASM C) - +set(LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/env/${BOARD}/link.lds" + CACHE FILEPATH "Linker script to use for BSP linking") +set(BSP_STARTUP "${CMAKE_CURRENT_SOURCE_DIR}/env/start.S" + CACHE FILEPATH "Path to the BSP startup assembly file") +set(BSP_TRAP_HANDLER "${CMAKE_CURRENT_SOURCE_DIR}/env/entry.S" + CACHE FILEPATH "Assembly file implementing trap handler") if(NOT DEFINED BOARD) message(FATAL_ERROR "No Board selected") endif() @@ -17,7 +22,7 @@ if(SEMIHOSTING) add_compile_definitions(SEMIHOSTING) endif() -add_library(startup STATIC env/start.S env/entry.S) +add_library(startup STATIC ${BSP_STARTUP} ${BSP_TRAP_HANDLER}) target_include_directories(startup PUBLIC env include) add_subdirectory(libwrap) @@ -25,7 +30,7 @@ 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}) -target_link_options(bsp INTERFACE LINKER:--no-warn-rwx-segments -nostartfiles -T ${CMAKE_CURRENT_SOURCE_DIR}/env/${BOARD}/link.lds) +target_link_options(bsp INTERFACE LINKER:--no-warn-rwx-segments -nostartfiles -T ${LINKER_SCRIPT}) if(SEMIHOSTING) target_include_directories(bsp INTERFACE include)