cmake_minimum_required(VERSION 3.28)

project(fantemp LANGUAGES CXX)

# libavr rides as the pinned submodule; LIBAVR_ROOT (cache or environment)
# overrides it for tandem development against a working tree. The toolchain
# file comes from the submodule via CMakePresets.json either way.
if(NOT LIBAVR_ROOT AND DEFINED ENV{LIBAVR_ROOT})
	set(LIBAVR_ROOT $ENV{LIBAVR_ROOT})
endif()
if(NOT LIBAVR_ROOT)
	set(LIBAVR_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/libavr)
endif()
if(NOT EXISTS ${LIBAVR_ROOT}/CMakeLists.txt)
	message(FATAL_ERROR "libavr not found at ${LIBAVR_ROOT} - run: git submodule update --init libavr")
endif()
add_subdirectory(${LIBAVR_ROOT} libavr-build)

add_executable(fantemp src/main.cpp)
target_link_libraries(fantemp PRIVATE libavr)
# The raw image is what the loader takes, and what the reachability check
# measures the boot-section clearance against.
add_custom_command(TARGET fantemp POST_BUILD
                   COMMAND ${CMAKE_SIZE} $<TARGET_FILE:fantemp>
                   COMMAND ${CMAKE_OBJCOPY} -O binary -R .eeprom
                           $<TARGET_FILE:fantemp> $<TARGET_FILE_DIR:fantemp>/fantemp.bin
                   COMMAND ${CMAKE_OBJCOPY} -O ihex -R .eeprom
                           $<TARGET_FILE:fantemp> $<TARGET_FILE_DIR:fantemp>/fantemp.hex)

enable_testing()
add_subdirectory(test)
