cmake_minimum_required(VERSION 3.14.0)
project(unicam VERSION 0.3.0)
get_verstring(VERSTRING)

add_link_options(-ffreestanding -nostdlib -nostartfiles -s -Wl,-e_rom_start -Wl,-T${CMAKE_CURRENT_SOURCE_DIR}/ldscript.lds)
add_compile_options(-Os -m68040 -msmall-code -mpcrel -mregparm=4 -fomit-frame-pointer)
add_compile_definitions(PRIVATE VERSION_STRING="${VERSTRING}")

set_source_files_properties(src/main.c PROPERTIES COMPILE_FLAGS -mno-pcrel)

add_library(unicam INTERFACE)
target_include_directories(unicam INTERFACE include)

add_executable(unicam.resource
    src/main.c
    src/init.c
    src/mbox.c
    src/smoothing.c
    src/start.c
    src/stop.c
    src/unicam.c
    src/videocore.c
    src/getframebuffer.c
    src/getcropsize.c
    src/getkernel.c
    src/getconfig.c
    src/getsize.c
)

add_custom_command(
    TARGET unicam.resource POST_BUILD
    COMMAND ${CMAKE_OBJCOPY} -v -O binary "${CMAKE_CURRENT_BINARY_DIR}/unicam.resource" "${CMAKE_CURRENT_BINARY_DIR}/unicam.bin"
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
set_target_properties(unicam.resource PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ldscript.lds)
target_link_libraries(unicam.resource unicam devicetree common)
