cmake_minimum_required(VERSION 3.9)
project(ADIS C CXX)

list(INSERT CMAKE_MODULE_PATH 0 "${PROJECT_SOURCE_DIR}/cmake")

find_package(MPI)
find_package(RapidJSON REQUIRED)
find_package(ADIOS2 REQUIRED)
find_package(VTKm REQUIRED)

option(BUILD_SHARED_LIBS "Build adis with shared libraries" ON)
set(ADIS_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
option(ADIS_ENABLE_TESTING "Enable ADIS Testing" OFF)

set(srcs
  Array.cxx
  CellSet.cxx
  CoordinateSystem.cxx
  DataModel.cxx
  DataSetReader.cxx
  DataSource.cxx
  Field.cxx
  Keys.cxx
  MetaData.cxx
  Value.cxx
)

include(cmake/adis_generate_export_header.cmake)
add_library(adis ${srcs})

adis_generate_export_header(adis)

target_link_libraries(adis PUBLIC vtkm_cont PRIVATE
  RapidJSON::RapidJSON adios2::adios2 MPI::MPI_CXX MPI::MPI_C)
target_include_directories(adis PUBLIC
  "$<BUILD_INTERFACE:${VTKm_INCLUDE_DIRS}>"
  $<BUILD_INTERFACE:${ADIS_SOURCE_DIR}>
  $<BUILD_INTERFACE:${ADIS_BINARY_DIR}>
  $<INSTALL_INTERFACE:${ADIS_INSTALL_INCLUDE_DIR}>
  )

if (ADIS_ENABLE_TESTING)
  enable_testing()
  include(CTest)
  add_subdirectory(tests)
endif()

if(CMAKE_BUILD_TYPE MATCHES "Debug")
if(CMAKE_CXX_COMPILER_ID MATCHES "^(AppleClang|Clang|GNU)$")
  set(CMAKE_CXX_FLAGS_DEBUG "-Wall -g -O2 -Wfatal-errors -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer")
  set(CMAKE_SHARED_LINKER_FLAGS "-fsanitize=address -fsanitize=undefined")
endif()
endif()
