cmake_minimum_required(VERSION 3.20)
project(brq_aba_review LANGUAGES CXX)
get_filename_component(default_source "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE)
set(BRQ_SOURCE "${default_source}" CACHE PATH "BRQ component source directory")
find_package(Python3 REQUIRED COMPONENTS Interpreter)
set(BRQ_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(BRQ_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(BRQ_BUILD_BENCHMARKS OFF CACHE BOOL "" FORCE)
set(BRQ_BUILD_COMPARISON OFF CACHE BOOL "" FORCE)
add_subdirectory("${BRQ_SOURCE}" component)
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/instrumented_stack.hpp"
  COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/generate_instrumented.py"
    "${BRQ_SOURCE}" "${CMAKE_CURRENT_BINARY_DIR}"
  DEPENDS generate_instrumented.py "${BRQ_SOURCE}/src/utils/spsc_intrusive_stack.hpp"
  VERBATIM)
add_executable(brq_aba_schedules cas_schedules.cpp "${CMAKE_CURRENT_BINARY_DIR}/instrumented_stack.hpp")
target_include_directories(brq_aba_schedules PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
target_link_libraries(brq_aba_schedules PRIVATE batch_read_queue)
add_executable(brq_aba_source_reuse source_reuse.cpp)
target_link_libraries(brq_aba_source_reuse PRIVATE batch_read_queue)
enable_testing()
add_test(NAME aba_schedules COMMAND brq_aba_schedules)
add_test(NAME aba_source_reuse COMMAND brq_aba_source_reuse)
add_test(NAME aba_sc_model COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/model.py")
set_tests_properties(aba_schedules aba_source_reuse aba_sc_model PROPERTIES TIMEOUT 30)
