# A cmake cache to connect kelvin BSP with the executables

if((NOT TARGET kelvin))
  message(FATAL_ERROR "Please include kelvin target first")
endif()

if(NOT DEFINED KELVIN_LINKER_SCRIPT)
  message(FATAL_ERROR "Please specifiy KELVIN_LINKER_SCRIPT path first")
endif()

function(add_executable executable)
  cmake_parse_arguments(AE "ALIAS;IMPORTED" "" "" ${ARGN})
  if(AE_ALIAS OR AE_IMPORTED)
    _add_executable(${executable} ${ARGN})
  else()
    _add_executable(${executable} ${ARGN})
    target_link_libraries(${executable} PRIVATE kelvin)
    target_link_options(${executable} PRIVATE "-T${KELVIN_LINKER_SCRIPT}")
    target_link_options(${executable} PRIVATE "-nostartfiles")
  endif()
endfunction()
