diff --git a/CMakeLists.txt b/CMakeLists.txt index 1d3d49d..8b721fd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,6 @@ cmake_minimum_required(VERSION 3.21) +include(CheckLinkerFlag) + 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") @@ -30,7 +32,13 @@ 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 ${LINKER_SCRIPT}) + +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) +endif() +target_link_options(bsp INTERFACE LINKER: -nostartfiles -T ${LINKER_SCRIPT}) if(SEMIHOSTING) target_include_directories(bsp INTERFACE include)