include_directories("${PROJECT_SOURCE_DIR}/cpp" "${CMAKE_CURRENT_BINARY_DIR}/include")

add_benchmark(measurement_operator utilities.cc LIBRARIES libpurify)
add_benchmark(padmm utilities.cc LIBRARIES libpurify)
add_benchmark(wavelet_operator utilities.cc LIBRARIES libpurify)
add_benchmark(fft utilities.cc LIBRARIES libpurify)
add_benchmark(degridding utilities.cc LIBRARIES libpurify)
if(doaf)
  add_benchmark(measurement_operator_af utilities.cc LIBRARIES libpurify)
  add_benchmark(measurement_operator_cpu measurement_operator_af.cc utilities.cc LIBRARIES libpurify)
  target_compile_definitions(benchmark_measurement_operator_cpu PRIVATE PURIFY_CPU)
endif()

if(dompi)
  add_executable(mpi_benchmark_MO main.cc utilities.cc measurement_operator_mpi.cc)
  target_link_libraries(mpi_benchmark_MO ${MPI_LIBRARIES} gbenchmark libpurify)
  target_include_directories(mpi_benchmark_MO PUBLIC "${PROJECT_SOURCE_DIR}/cpp" "${CMAKE_CURRENT_BINARY_DIR}/include")
  add_executable(mpi_benchmark_MO_wproj main.cc utilities.cc measurement_operator_wproj.cc)
  target_link_libraries(mpi_benchmark_MO_wproj ${MPI_LIBRARIES} gbenchmark libpurify)
  target_include_directories(mpi_benchmark_MO_wproj PUBLIC "${PROJECT_SOURCE_DIR}/cpp" "${CMAKE_CURRENT_BINARY_DIR}/include")
  add_executable(mpi_benchmark_PADMM main.cc utilities.cc padmm_mpi.cc)
  target_link_libraries(mpi_benchmark_PADMM ${MPI_LIBRARIES} gbenchmark libpurify)
  target_include_directories(mpi_benchmark_PADMM PUBLIC "${PROJECT_SOURCE_DIR}/cpp" "${CMAKE_CURRENT_BINARY_DIR}/include")
  add_executable(mpi_benchmark_WLO main.cc utilities.cc wavelet_operator_mpi.cc)
  target_link_libraries(mpi_benchmark_WLO ${MPI_LIBRARIES} gbenchmark libpurify)
  target_include_directories(mpi_benchmark_WLO PUBLIC "${PROJECT_SOURCE_DIR}/cpp" "${CMAKE_CURRENT_BINARY_DIR}/include")
endif()
