diff --git a/CMakeLists.txt b/CMakeLists.txt index 89463224a89678ee16c84af00e469d88ec185054..0fbada3757ab7ac6375e1d974a64216b3e499a41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,6 +72,7 @@ if(ADIOS_USE_MPI) endif() option(ADIOS_USE_BZip2 "Enable support for BZip2 transforms" OFF) option(ADIOS_USE_ADIOS1 "Enable support for the ADIOS 1 engine" OFF) +option(ADIOS_USE_HDF5 "Enable support for the HDF5 engine" OFF) # DataMan is not a user-settable option. It will always be enabled if the # platform supports it. @@ -137,5 +138,5 @@ message(" MPI: ${ADIOS_USE_MPI}") message(" BZip2: ${ADIOS_USE_BZip2}") message(" ADIOS1: ${ADIOS_USE_ADIOS1}") message(" DataMan: ${ADIOS_USE_DataMan}") -message(" HDF5: ${ADIOS_USE_PHDF5}") +message(" HDF5: ${ADIOS_USE_HDF5}") message("") diff --git a/cmake/FindADIOS1.cmake b/cmake/FindADIOS1.cmake index 867539a498b8790715137ff3e2d7725fe493b1c7..4e4accd11c0b601d40b7a0022d475515f71939bc 100644 --- a/cmake/FindADIOS1.cmake +++ b/cmake/FindADIOS1.cmake @@ -244,20 +244,20 @@ endif() # handles the REQUIRED, QUIET and version-related arguments for find_package include(FindPackageHandleStandardArgs) find_package_handle_standard_args(ADIOS1 - REQUIRED_VARS ADIOS1_LIBRARY_PATH ADIOS1_DEPENDENCY_LIBRARIES ADIOS1_INCLUDE_DIRS - VERSION_VAR ADIOS1_VERSION + REQUIRED_VARS + ADIOS1_LIBRARY_PATH ADIOS1_DEPENDENCY_LIBRARIES ADIOS1_INCLUDE_DIRS + VERSION_VAR + ADIOS1_VERSION ) ########################################################################## # Add target and dependencies to ADIOS2 ########################################################################## -#message(STATUS "ADIOS1 Find ended with ${ADIOS1_FOUND}") - if(ADIOS1_FOUND AND NOT TARGET adios1::adios) - message(STATUS "Add library ADIOS1 to the build") - add_library(adios1::adios UNKNOWN IMPORTED) - set_target_properties(adios1::adios PROPERTIES - IMPORTED_LOCATION "${ADIOS1_LIBRARY_PATH}" - INTERFACE_LINK_LIBRARIES "${ADIOS1_DEPENDENCY_LIBRARIES}" - INTERFACE_INCLUDE_DIRECTORIES "${ADIOS1_INCLUDE_DIRS}" - ) - endif() +if(ADIOS1_FOUND AND NOT TARGET adios1::adios) + add_library(adios1::adios UNKNOWN IMPORTED) + set_target_properties(adios1::adios PROPERTIES + IMPORTED_LOCATION "${ADIOS1_LIBRARY_PATH}" + INTERFACE_LINK_LIBRARIES "${ADIOS1_DEPENDENCY_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${ADIOS1_INCLUDE_DIRS}" + ) +endif() diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 62a642e966648cd5d2d73c4473146429920fa58a..fb4e9725225604ab835ab32e719f5a6797418d08 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -3,107 +3,102 @@ # accompanying file Copyright.txt for details. #------------------------------------------------------------------------------# -set(adios2_targets adios2_nompi) -if(ADIOS_USE_MPI) - list(APPEND adios2_targets adios2) -endif() - -foreach(adios2_target IN LISTS adios2_targets) - add_library(${adios2_target} - ADIOS.cpp ADIOS.tcc - #ADIOS_C.cpp +add_library(adios2 + ADIOS.cpp ADIOS.tcc + #ADIOS_C.cpp - capsule/heap/STLVector.cpp - capsule/shmem/ShmSystemV.cpp + capsule/heap/STLVector.cpp + capsule/shmem/ShmSystemV.cpp - core/Capsule.cpp - core/Engine.cpp - core/Method.cpp - core/Support.cpp - core/Transform.cpp - core/Transport.cpp + core/Capsule.cpp + core/Engine.cpp + core/Method.cpp + core/Support.cpp + core/Transform.cpp + core/Transport.cpp - engine/bp/BPFileReader.cpp - engine/bp/BPFileWriter.cpp + engine/bp/BPFileReader.cpp + engine/bp/BPFileWriter.cpp - utilities/format/bp1/BP1Base.cpp - utilities/format/bp1/BP1Aggregator.cpp - utilities/format/bp1/BP1Writer.cpp + utilities/format/bp1/BP1Base.cpp + utilities/format/bp1/BP1Aggregator.cpp + utilities/format/bp1/BP1Writer.cpp - utilities/profiling/iochrono/Timer.cpp - - functions/adiosFunctions.cpp + utilities/profiling/iochrono/Timer.cpp + + functions/adiosFunctions.cpp - transport/file/FStream.cpp - transport/file/FileDescriptor.cpp - transport/file/FilePointer.cpp + transport/file/FStream.cpp + transport/file/FileDescriptor.cpp + transport/file/FilePointer.cpp - utilities/format/bp1/BP1Base.cpp - utilities/format/bp1/BP1Aggregator.cpp - utilities/format/bp1/BP1Writer.cpp - utilities/format/bp1/BP1Writer.tcc + utilities/format/bp1/BP1Base.cpp + utilities/format/bp1/BP1Aggregator.cpp + utilities/format/bp1/BP1Writer.cpp + utilities/format/bp1/BP1Writer.tcc - utilities/profiling/iochrono/Timer.cpp - ) - target_include_directories(${adios2_target} - PUBLIC ${ADIOS_SOURCE_DIR}/include - ) + utilities/profiling/iochrono/Timer.cpp +) +target_include_directories(adios2 + PUBLIC ${ADIOS_SOURCE_DIR}/include +) - if(ADIOS_USE_DataMan) - target_sources(${adios2_target} PRIVATE - engine/dataman/DataManReader.cpp - engine/dataman/DataManWriter.cpp - transport/wan/MdtmMan.cpp - utilities/realtime/dataman/DataManBase.cpp - utilities/realtime/dataman/DataMan.cpp - ) - target_compile_definitions(${adios2_target} PRIVATE ADIOS_HAVE_DATAMAN) - target_link_libraries(${adios2_target} PRIVATE ${CMAKE_DL_LIBS}) - endif() +if(ADIOS_USE_DataMan) + target_sources(adios2 PRIVATE + engine/dataman/DataManReader.cpp + engine/dataman/DataManWriter.cpp + transport/wan/MdtmMan.cpp + utilities/realtime/dataman/DataManBase.cpp + utilities/realtime/dataman/DataMan.cpp + ) + target_compile_definitions(adios2 PRIVATE ADIOS_HAVE_DATAMAN) + target_link_libraries(adios2 PRIVATE ${CMAKE_DL_LIBS}) +endif() - if(ADIOS_USE_BZip2) - find_package(BZip2 REQUIRED) - target_sources(${adios2_target} PRIVATE transform/BZip2.cpp) - target_compile_definitions(${adios2_target} PRIVATE ADIOS_HAVE_BZIP2) - target_link_libraries(${adios2_target} PRIVATE BZip2::BZip2) - endif() -endforeach() - -target_sources(adios2_nompi PRIVATE mpidummy.cpp) -if(CMAKE_CXX_COMPILER_WRAPPER STREQUAL CrayPrgEnv) - target_compile_options(adios2_nompi PRIVATE --cray-bypass-pkgconfig) +if(ADIOS_USE_BZip2) + find_package(BZip2 REQUIRED) + target_sources(adios2 PRIVATE transform/BZip2.cpp) + target_compile_definitions(adios2 PRIVATE ADIOS_HAVE_BZIP2) + target_link_libraries(adios2 PRIVATE BZip2::BZip2) endif() + if(ADIOS_USE_MPI) find_package(MPI COMPONENTS C REQUIRED) target_include_directories(adios2 PUBLIC ${MPI_C_INCLUDE_PATH}) target_compile_definitions(adios2 PUBLIC ADIOS_HAVE_MPI) target_link_libraries(adios2 PUBLIC ${MPI_C_LIBRARIES}) +else() + target_sources(adios2 PRIVATE mpidummy.cpp) +endif() - if(ADIOS_USE_ADIOS1) +if(ADIOS_USE_ADIOS1) + if(ADIOS_HAVE_MPI) find_package(ADIOS1 REQUIRED) - target_sources(adios2 PRIVATE - engine/adios1/ADIOS1Reader.cpp - engine/adios1/ADIOS1Writer.cpp - ) - target_compile_definitions(adios2 PRIVATE ADIOS_HAVE_ADIOS1) - target_link_libraries(adios2 PRIVATE adios1::adios) + else() + find_package(ADIOS1 COMPONENTS sequential REQUIRED) endif() - if(ADIOS_USE_PHDF5) - find_package(HDF5 REQUIRED) - message(" HDF5 ROOT: ${HDF5_ROOT}") - message(" HDF5 include: ${HDF5_INCLUDE_DIRS} is paralle? ${HDF5_IS_PARALLEL}") - - target_include_directories(adios2 PRIVATE ${HDF5_INCLUDE_DIRS}) + target_sources(adios2 PRIVATE + engine/adios1/ADIOS1Reader.cpp + engine/adios1/ADIOS1Writer.cpp + ) + target_compile_definitions(adios2 PRIVATE ADIOS_HAVE_ADIOS1) + target_link_libraries(adios2 PRIVATE adios1::adios) +endif() - target_sources(adios2 PRIVATE - engine/hdf5/HDF5ReaderP.cpp - engine/hdf5/HDF5WriterP.cpp - ) - target_compile_definitions(adios2 PRIVATE ADIOS_HAVE_PHDF5) - target_link_libraries(adios2 PRIVATE ${HDF5_C_LIBRARIES}) +if(ADIOS_USE_HDF5) + find_package(HDF5 REQUIRED) + if(ADIOS_USE_MPI AND NOT HDF5_IS_PARALLEL) + message(FATAL_ERROR "A sequential version of HDF5 was detected but the parallel version of ADIOS requires a parallel HDF5.") endif() + target_include_directories(adios2 PRIVATE ${HDF5_INCLUDE_DIRS}) + target_sources(adios2 PRIVATE + engine/hdf5/HDF5ReaderP.cpp + engine/hdf5/HDF5WriterP.cpp + ) + target_compile_definitions(adios2 PRIVATE ADIOS_HAVE_HDF5) + target_link_libraries(adios2 PRIVATE ${HDF5_C_LIBRARIES}) endif()