# Copyright (c) 2018 Foundries.io Ltd
#
# SPDX-License-Identifier: Apache-2.0

# Let's rely on `-march` being generated by the CMake script based on which `CONFIG_RISCV_ISA_EXT_*`
# options are y-selected; provide full arch string with the custom extension otherwise.
if(CONFIG_SOC_OPENISA_RV32M1_RI5CY AND NOT CONFIG_RISCV_GENERIC_TOOLCHAIN)
  zephyr_compile_options(-march=rv32imcxpulpv2)
endif()

zephyr_sources(
  vector.S
  soc_irq.S
  wdog.S
  soc.c
)

zephyr_include_directories(.)

zephyr_linker_sources(ROM_START SORT_KEY 0x0vectors vector_table.ld)

set(SOC_LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld CACHE INTERNAL "")
