# For catalyst macro
find_package(catalyst REQUIRED COMPONENTS SDK)
find_package(ADIOS2 REQUIRED)

include_directories(${MPI_INCLUDE_PATH})

set(BUILD_SHARED_LIBS ON)

if (WIN32)
  set(catalyst_library_destination
    "${CMAKE_INSTALL_BINDIR}/catalyst")
else ()
  set(catalyst_library_destination
    "${CMAKE_INSTALL_LIBDIR}/catalyst")
  file(RELATIVE_PATH _catalyst_impl_relpath
    "/prefix/${catalyst_library_destination}"
    "/prefix/${CMAKE_INSTALL_LIBDIR}")
  if (APPLE)
    set(catalyst_rel_rpath
      "@loader_path/${_catalyst_impl_relpath}")
  else ()
    set(catalyst_rel_rpath
      "$ORIGIN/${_catalyst_impl_relpath}")
  endif ()

  list(APPEND CMAKE_INSTALL_RPATH
    "${catalyst_rel_rpath}")
endif ()

# Specific implementation for Adios2
catalyst_implementation(
  NAME    adios
  TARGET  catalyst-adios
  LIBRARY_DESTINATION
    "${catalyst_library_destination}"
  SOURCES
    AdiosCatalyst.cxx
    AdiosPipeline.cxx
    AdiosPipeline.h
  CATALYST_TARGET catalyst::catalyst)

if(USE_MPI)
  add_compile_definitions(catalyst-adios
    PRIVATE
      USE_MPI
  )
endif()

target_link_libraries(catalyst-adios
  PRIVATE
    adios2::adios2
    MPI::MPI_CXX)
