cmake_minimum_required(VERSION 3.20)

set(ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../..)

PROJECT(otp_xip_bootloader)

add_executable(${PROJECT_NAME}.elf
    ${CMAKE_CURRENT_SOURCE_DIR}/startup_ELIOT1.S
)

include_directories(
    ${ROOT_DIR}/CMSIS/Include
)

enable_language(ASM)

set (CMAKE_EXE_LINKER_FLAGS "-nostartfiles -nostdlib -fdata-sections \
    -ffunction-sections -Wl,--gc-sections")

if (CMAKE_BUILD_TYPE STREQUAL "Release")
message("========================== CMAKE_BUILD_TYPE IS RELEASE ==========================")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} \
        -T${CMAKE_CURRENT_LIST_DIR}/mem.ld")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Os")
endif()

if (CMAKE_BUILD_TYPE STREQUAL "Debug")
message("========================== CMAKE_BUILD_TYPE IS DEBUG ==========================")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} \
        -T${CMAKE_CURRENT_LIST_DIR}/../simple_bootloader/mem.ld")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
endif()

message("QSPICLK VALUE = ${QSPICLK_VALUE} Hz")

set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -fdata-sections -ffunction-sections")

add_compile_definitions("QSPICLK=${QSPICLK_VALUE}")

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"
)
add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD
    COMMAND ${CMAKE_OBJCOPY} -O binary ${PROJECT_NAME}.elf ${PROJECT_NAME}.bin
    COMMENT "[post] Copy to ${PROJECT_NAME}.bin"
)
