# SPDX-License-Identifier: MPL-2.0

include(FetchContent)

FetchContent_Declare(
  benchmark
  GIT_REPOSITORY https://github.com/google/benchmark.git
  GIT_TAG v1.8.3 # Change to the latest version if needed
)

# Ensure Google Benchmark is built correctly
set(BENCHMARK_ENABLE_TESTING
    OFF
    CACHE BOOL "" FORCE)

FetchContent_MakeAvailable(benchmark)

add_executable(benchmarks)

target_sources(
  benchmarks PRIVATE ndarray_benchmark.cpp calculateeta_benchmark.cpp
                     reduce_benchmark.cpp)

# Link Google Benchmark and other necessary libraries
target_link_libraries(benchmarks PRIVATE benchmark::benchmark aare_core
                                         aare_compiler_flags)

# Set output properties
set_target_properties(
  benchmarks PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
                        OUTPUT_NAME run_benchmarks)

add_executable(fit_benchmark fit_benchmark.cpp)
target_link_libraries(fit_benchmark PRIVATE benchmark::benchmark aare_core
                                            aare_compiler_flags)
target_include_directories(
  fit_benchmark SYSTEM
  PRIVATE $<TARGET_PROPERTY:Minuit2::Minuit2,INTERFACE_INCLUDE_DIRECTORIES>)
set_target_properties(fit_benchmark PROPERTIES RUNTIME_OUTPUT_DIRECTORY
                                               ${CMAKE_BINARY_DIR})
