cmake_minimum_required(VERSION 3.20)

project(real_time)

set(BUILD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../build)
set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..)

set(ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../..)
set(CMSIS_INCLUDE_DIR ${ROOT_DIR}/CMSIS/Include)
set(ELIOT1_INCLUDE_DIR ${ROOT_DIR}/devices/eliot1)
set(ARM_GCC_DIR ${ROOT_DIR}/devices/eliot1/gcc)
set(DRIVERS_DIR ${ROOT_DIR}/devices/eliot1/drivers)
set(BOARD_DIR ${ROOT_DIR}/boards/eliot1m_mo_cfg/)
set(BOARD_BSP_DIR ${BOARD_DIR}/armgcc/bsp_core0/build)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g -fdata-sections -ffunction-sections -Wl,-Map=${PROJECT_NAME}.map -DBOARD -DELIOT1M -DCPU_ELIOT1M_cm33_core0")
set(CMAKE_EXE_LINKER_FLAGS "-fdata-sections -ffunction-sections -Wl,--gc-sections -T${ARM_GCC_DIR}/eliot1_cm33_core0_flash.ld")

enable_testing()

include_directories(
    ..
    ${CMSIS_INCLUDE_DIR}
    ${ELIOT1_INCLUDE_DIR}
    ${DRIVERS_DIR}
    ${BOARD_DIR}
)

add_executable(${PROJECT_NAME}.elf
    ../main.c
    ${DRIVERS_DIR}/hal_rwc.c
)
target_link_directories(${PROJECT_NAME}.elf PUBLIC ${BOARD_BSP_DIR})
target_link_libraries(${PROJECT_NAME}.elf bsp_core0)                              
add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD
    COMMAND ${CMAKE_OBJDUMP} -D ${PROJECT_NAME}.elf > ${PROJECT_NAME}.dis
    COMMENT "[post] Create disassemble file ${PROJECT_NAME}.dis"
)

