cmake_minimum_required(VERSION 3.9)
project(ADIS LANGUAGES C CXX VERSION 0.1)

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

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" ON)

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

set(headers
  Array.h
  CellSet.h
  CoordinateSystem.h
  DataModel.h
  DataSetReader.h
  DataSource.h
  Field.h
  Keys.h
  MetaData.h
  Value.h
)

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

adis_generate_export_header(adis)

target_link_libraries(adis PUBLIC vtkm_cont adios2::adios2 PRIVATE
  RapidJSON::RapidJSON)
target_include_directories(adis PUBLIC
  $<BUILD_INTERFACE:${VTKm_INCLUDE_DIRS}>
  $<BUILD_INTERFACE:${ADIS_SOURCE_DIR}>
  $<BUILD_INTERFACE:${ADIS_BINARY_DIR}>
  $<INSTALL_INTERFACE:include/adis>
  )

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

#-------------------------------------------------------------------------------
# generate the config file that includes the exports
include(CMakePackageConfigHelpers)
configure_package_config_file(${ADIS_SOURCE_DIR}/cmake/Config.cmake.in
  "${CMAKE_CURRENT_BINARY_DIR}/ADIS-Config.cmake"
  INSTALL_DESTINATION lib/cmake/adis
  NO_SET_AND_CHECK_MACRO
  NO_CHECK_REQUIRED_COMPONENTS_MACRO
  )

install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ADIS-Config.cmake" DESTINATION lib/cmake/adis)

install(TARGETS adis DESTINATION lib
        EXPORT ADISTargets)

install(EXPORT ADISTargets FILE ADISTargets.cmake DESTINATION lib/cmake/adis)

export(EXPORT ADISTargets
  FILE ADISTargets.cmake
  )

install(FILES ${headers} ${CMAKE_CURRENT_BINARY_DIR}/adis_export.h
  DESTINATION include/adis
  )
