cmake_minimum_required(VERSION 4.0)
project(partridge_cpp)

set(CMAKE_CXX_STANDARD 20)

add_executable(partridge_cpp
        main.cc)

option(PARTRIDGE_BUILD_BENCHMARKS "Build the heavyweight benchmark probe" OFF)
if(PARTRIDGE_BUILD_BENCHMARKS)
  add_executable(partridge_benchmark
          benchmarks/benchmark.cc)
endif()

include(CTest)

if(BUILD_TESTING)
  add_executable(partridge_tests
          tests/tests.cc)
  add_test(NAME validator COMMAND partridge_tests validator)
  add_test(NAME construction COMMAND partridge_tests construction)
  add_test(NAME rendering COMMAND partridge_tests rendering)
  add_test(NAME solver-small COMMAND partridge_tests solver-small)
  add_test(NAME solver-completion COMMAND partridge_tests solver-completion)
  add_test(NAME search-counters COMMAND partridge_tests search-counters)
  find_package(Python3 COMPONENTS Interpreter)
  if(Python3_Interpreter_FOUND)
    add_test(NAME benchmark-format
      COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/run.py"
              --self-test)
  endif()
endif()
