cmake_minimum_required(VERSION 3.30.0)
project(devicetree VERSION 1.6.0)

include(cmake/bin2h.cmake)
include(cmake/verstring.cmake)
include(cmake/sfdc.cmake)

get_verstring(VERSTRING)
sfdc(sfd/devicetree_lib.sfd)

add_executable(devicetree.resource
    src/main.c
    src/init.c
    src/closekey.c
    src/openkey.c
    src/findproperty.c
    src/getpropname.c
    src/getpropvalue.c
    src/getproplen.c
    src/getchild.c
    src/getproperty.c
    src/getparent.c
    src/addram.c
    src/getkeyname.c
)

bin_to_header(devicetree.resource)

target_compile_options(devicetree.resource PRIVATE -Os -m68040 -msmall-code -fomit-frame-pointer)
target_compile_definitions(devicetree.resource PRIVATE VERSION_STRING="${VERSTRING}")
target_include_directories(devicetree.resource PRIVATE include)
target_link_options(devicetree.resource PRIVATE -ffreestanding -nostdlib -nostartfiles -s -Wl,-e_rom_start -Wl,-T${CMAKE_CURRENT_SOURCE_DIR}/ldscript.lds)
target_link_libraries(devicetree.resource devicetree)

set_target_properties(devicetree.resource PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ldscript.lds)

# no install for devicetree.resource itself, it goes to ROM
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/sfd DESTINATION Developer)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include DESTINATION Developer)
