diff --git a/cmake/DetectOptions.cmake b/cmake/DetectOptions.cmake index bc9d2aba3d626565c2858d842089010d96376dfb..990fc3f3cec5a8d171e701737eebf2eaa511e324 100644 --- a/cmake/DetectOptions.cmake +++ b/cmake/DetectOptions.cmake @@ -16,30 +16,30 @@ set(adios2_find_modules) # BZip2 if(ADIOS2_USE_BZip2 STREQUAL AUTO) find_package(BZip2) - if(BZIP2_FOUND) - set(ADIOS2_HAVE_BZip2 TRUE) - endif() elseif(ADIOS2_USE_BZip2) + find_package(BZip2 REQUIRED) +endif() +if(BZIP2_FOUND) set(ADIOS2_HAVE_BZip2 TRUE) endif() # ZFP if(ADIOS2_USE_ZFP STREQUAL AUTO) find_package(ZFP) - if(ZFP_FOUND) - set(ADIOS2_HAVE_ZFP TRUE) - endif() elseif(ADIOS2_USE_ZFP) + find_package(ZFP REQUIRED) +endif() +if(ZFP_FOUND) set(ADIOS2_HAVE_ZFP TRUE) endif() # MPI if(ADIOS2_USE_MPI STREQUAL AUTO) - find_package(MPI COMPONENTS C) - if(MPI_FOUND) - set(ADIOS2_HAVE_MPI TRUE) - endif() + find_package(MPI) elseif(ADIOS2_USE_MPI) + find_package(MPI REQUIRED) +endif() +if(MPI_FOUND) set(ADIOS2_HAVE_MPI TRUE) endif() @@ -49,47 +49,42 @@ if(ADIOS2_USE_C) endif() # DataMan -if(ADIOS2_USE_DataMan STREQUAL AUTO) - if(SHARED_LIBS_SUPPORTED AND NOT MSVC) - set(ADIOS2_HAVE_DataMan TRUE) - endif() -elseif(ADIOS2_USE_DataMan) +if(SHARED_LIBS_SUPPORTED AND NOT MSVC) set(ADIOS2_HAVE_DataMan TRUE) endif() # ZeroMQ if(ADIOS2_USE_ZeroMQ STREQUAL AUTO) find_package(ZeroMQ) - if(ZeroMQ_FOUND) - set(ADIOS2_HAVE_ZeroMQ TRUE) - endif() elseif(ADIOS2_USE_ZeroMQ) + find_package(ZeroMQ REQUIRED) +endif() +if(ZeroMQ_FOUND) set(ADIOS2_HAVE_ZeroMQ TRUE) endif() # HDF5 if(ADIOS2_USE_HDF5 STREQUAL AUTO) find_package(HDF5 COMPONENTS C) - if(HDF5_FOUND AND - ((ADIOS2_HAVE_MPI AND HDF5_IS_PARALLEL) OR - NOT (ADIOS2_HAVE_MPI OR HDF5_IS_PARALLEL))) - set(ADIOS2_HAVE_HDF5 TRUE) - endif() elseif(ADIOS2_USE_HDF5) + find_package(HDF5 REQUIRED COMPONENTS C) +endif() +if(HDF5_FOUND AND + ((ADIOS2_HAVE_MPI AND HDF5_IS_PARALLEL) OR + NOT (ADIOS2_HAVE_MPI OR HDF5_IS_PARALLEL))) set(ADIOS2_HAVE_HDF5 TRUE) endif() # ADIOS1 +if(NOT ADIOS2_HAVE_MPI) + set(adios1_find_args COMPONENTS sequential) +endif() if(ADIOS2_USE_ADIOS1 STREQUAL AUTO) - if(NOT ADIOS2_HAVE_MPI) - set(adios1_args COMPONENTS sequential) - endif() find_package(ADIOS1 1.12.0 ${adios1_args}) - unset(adios1_args) - if(ADIOS1_FOUND) - set(ADIOS2_HAVE_ADIOS1 TRUE) - endif() elseif(ADIOS2_USE_ADIOS1) + find_package(ADIOS1 1.12.0 REQUIRED ${adios1_args}) +endif() +if(ADIOS1_FOUND) set(ADIOS2_HAVE_ADIOS1 TRUE) endif() @@ -98,39 +93,35 @@ endif() list(INSERT CMAKE_MODULE_PATH 0 "${ADIOS2_SOURCE_DIR}/thirdparty/pybind11/pybind11/tools" ) -if(ADIOS2_USE_Python STREQUAL AUTO) +if(ADIOS2_USE_Python) + if(NOT (ADIOS2_USE_Python STREQUAL AUTO)) + set(python_find_args REQUIRED) + endif() if(SHARED_LIBS_SUPPORTED AND ADIOS2_ENABLE_PIC) set(Python_ADDITIONAL_VERSIONS 3 2.7) - find_package(PythonInterp) - find_package(PythonLibsNew) - if(PYTHONLIBS_FOUND) - if(ADIOS2_HAVE_MPI) - find_package(PythonModule COMPONENTS mpi4py mpi4py/mpi4py.h) - if(PythonModule_mpi4py_FOUND) - set(ADIOS2_HAVE_Python TRUE) - endif() - else() - set(ADIOS2_HAVE_Python TRUE) - endif() + list(APPEND python_find_args COMPONENTS Interp Libs numpy) + if(ADIOS2_HAVE_MPI) + list(APPEND python_find_args "mpi4py\\\;mpi4py/mpi4py.h") endif() + find_package(PythonFull ${python_find_args}) endif() -elseif(ADIOS2_USE_Python) - set(ADIOS2_HAVE_Python TRUE) +endif() +if(PythonFull_FOUND) + set(ADIOS2_HAVE_Python ON) 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() +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() -elseif(ADIOS2_USE_SysVShMem) - set(ADIOS2_HAVE_SysVShMem TRUE) +else() + set(ADIOS2_HAVE_SysVShMem OFF) endif() + +# Multithreading +find_package(Threads REQUIRED)