Add an opt-in benchmark probe and JSON runner that separate solve, construction, validation, and rendering time. Record stable search counters, environment metadata, warm-up and repetition policy, timeouts, errors, median spread, and instrumentation overhead. Compile production solving without counters and interleave counted and plain trials when measuring overhead. Keep heavyweight cases outside the default correctness path while testing counter and report behavior cheaply. Tests: Debug and Release CTest suites (7 passed each) Refs: #8
33 lines
1.0 KiB
CMake
33 lines
1.0 KiB
CMake
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()
|