# The battery is a compile: a static_assert that fails is the failure. It is a
# target rather than only a ctest so a plain build catches a regression too.
add_library(consteval_tests OBJECT consteval.cpp)
target_include_directories(consteval_tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src)
target_link_libraries(consteval_tests PRIVATE libavr)

add_test(NAME fantemp.consteval
         COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target consteval_tests)

# The board has no reset line and no programming header, so the loader-entry
# route in the emitted image is the only thing standing between a firmware change
# and an unreflashable board.
find_package(Python3 COMPONENTS Interpreter)
if(Python3_FOUND)
	add_test(NAME fantemp.reachability
	         COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/check_reachability.py
	                 --objdump ${CMAKE_OBJDUMP} --elf $<TARGET_FILE:fantemp>
	                 --image $<TARGET_FILE_DIR:fantemp>/fantemp.bin)
else()
	message(STATUS "Python not found - the reachability check is skipped")
endif()
