From 62548ab57af43fc437eeac3453e2370e4105789e Mon Sep 17 00:00:00 2001 From: Chuck Atkins <chuck.atkins@kitware.com> Date: Tue, 20 Jun 2017 14:19:17 -0600 Subject: [PATCH] Enable SysV ShMem to be enabled or disabled as appropriate --- CMakeLists.txt | 23 ++++++++++++----------- cmake/DetectOptions.cmake | 17 +++++++++++++++++ source/adios2/ADIOSConfig.h.in | 3 +++ source/adios2/CMakeLists.txt | 7 +++++-- 4 files changed, 37 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d97a54ebe..69ffaa917 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,14 +64,15 @@ if(ADIOS2_ENABLE_PIC) set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() -adios_option(BZip2 "Enable support for BZip2 transforms" AUTO) -adios_option(ZFP "Enable support for ZFP transforms" AUTO) -adios_option(MPI "Enable support for MPI" AUTO) -adios_option(DataMan "Enable support for DataMan" AUTO) -adios_option(ZeroMQ "Enable support for ZeroMQ" AUTO) -adios_option(HDF5 "Enable support for the HDF5 engine" AUTO) -adios_option(ADIOS1 "Enable support for the ADIOS 1 engine" AUTO) -adios_option(Python "Enable support for Python bindings" AUTO) +adios_option(BZip2 "Enable support for BZip2 transforms" AUTO) +adios_option(ZFP "Enable support for ZFP transforms" AUTO) +adios_option(MPI "Enable support for MPI" AUTO) +adios_option(DataMan "Enable support for DataMan" AUTO) +adios_option(ZeroMQ "Enable support for ZeroMQ" AUTO) +adios_option(HDF5 "Enable support for the HDF5 engine" AUTO) +adios_option(ADIOS1 "Enable support for the ADIOS 1 engine" AUTO) +adios_option(Python "Enable support for Python bindings" AUTO) +adios_option(SysVShMem "Enable support for SysV Shared Memory IPC on *NIX" AUTO) include(${ADIOS2_SOURCE_DIR}/cmake/DetectOptions.cmake) if(ADIOS2_HAVE_MPI) @@ -79,7 +80,7 @@ if(ADIOS2_HAVE_MPI) add_definitions(-DOMPI_SKIP_MPICXX) endif() -GenerateADIOSConfig(MPI ZFP BZip2 ADIOS1 HDF5 DataMan Python) +GenerateADIOSConfig(MPI ZFP BZip2 ADIOS1 HDF5 DataMan Python SysVShMem) install( FILES ${ADIOS2_BINARY_DIR}/adios2/ADIOSConfig.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/adios2 @@ -140,8 +141,8 @@ endif() message(" Build Type: ${CMAKE_BUILD_TYPE}") message(" Testing: ${BUILD_TESTING}") message(" Build Options:") -foreach(opt BZip2 ZFP MPI DataMan ZeroMQ HDF5 ADIOS1 Python) - message_pad(" ${opt}" 13 label) +foreach(opt BZip2 ZFP MPI DataMan ZeroMQ HDF5 ADIOS1 Python SysVShMem) + message_pad(" ${opt}" 15 label) if(${ADIOS2_HAVE_${opt}}) message("${label}: ON") else() diff --git a/cmake/DetectOptions.cmake b/cmake/DetectOptions.cmake index 562a6b30f..29237fcc4 100644 --- a/cmake/DetectOptions.cmake +++ b/cmake/DetectOptions.cmake @@ -106,3 +106,20 @@ if(ADIOS2_USE_Python STREQUAL AUTO) elseif(ADIOS2_USE_Python) set(ADIOS2_HAVE_Python TRUE) endif() + +#SysV IPC +if(ADIOS2_USE_SysVShMem STREQUAL AUTO) + if(UNIX) + include(CheckSymbolExists) + CHECK_SYMBOL_EXISTS(shmget "sys/ipc.h;sys/shm.h" HAVE_shmget) + if(HAVE_shmget) + set(ADIOS2_HAVE_SysVShMem ON) + else() + set(ADIOS2_HAVE_SysVShMem OFF) + endif() + else() + set(ADIOS2_HAVE_SysVShMem OFF) + endif() +elseif(ADIOS2_USE_SysVShMem) + set(ADIOS2_HAVE_SysVShMem) +endif() \ No newline at end of file diff --git a/source/adios2/ADIOSConfig.h.in b/source/adios2/ADIOSConfig.h.in index 046923c2c..c917b81a8 100644 --- a/source/adios2/ADIOSConfig.h.in +++ b/source/adios2/ADIOSConfig.h.in @@ -45,4 +45,7 @@ /* CMake Option: ADIOS_USE_Python=ON */ #cmakedefine ADIOS2_HAVE_PYTHON +/* CMake Option: ADIOS_USE_SysVShMem=ON */ +#cmakedefine ADIOS2_HAVE_SYSVSHMEM + #endif /* ADIOSCONFIG_H_ */ diff --git a/source/adios2/CMakeLists.txt b/source/adios2/CMakeLists.txt index 7617d7b83..79e779d23 100644 --- a/source/adios2/CMakeLists.txt +++ b/source/adios2/CMakeLists.txt @@ -27,8 +27,7 @@ add_library(adios2 toolkit/capsule/Capsule.cpp toolkit/capsule/heap/STLVector.cpp - toolkit/capsule/shmem/ShmSystemV.cpp - + toolkit/format/bp1/BP1Base.cpp toolkit/format/bp1/BP1Base.tcc toolkit/format/bp1/BP1Aggregator.cpp toolkit/format/bp1/BP1Writer.cpp toolkit/format/bp1/BP1Writer.tcc @@ -54,6 +53,10 @@ target_include_directories(adios2 find_package(Threads REQUIRED) target_link_libraries(adios2 PUBLIC ${CMAKE_THREAD_LIBS_INIT}) +if(ADIOS2_HAVE_SysVShMem) + target_sources(adios2 PRIVATE toolkit/capsule/shmem/ShmSystemV.cpp) +endif() + if(ADIOS2_HAVE_DataMan) target_sources(adios2 PRIVATE engine/dataman/DataManReader.cpp -- GitLab