mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-03-07 17:08:02 +08:00
improve mechanism by which to find parallel HDF5
So far, CMakeLists.txt made the assumption that ${HDF5_LIB} is always defined in order to determine if it has parallel support. This is not the case, compare with bug #25. Make use of FIND_PACKAGE(HDF5) now; it sets HDF5_IS_PARALLEL anyways.
This commit is contained in:
parent
f4537c2b60
commit
76bd3a328f
@ -568,14 +568,20 @@ ENDIF()
|
||||
IF (USE_HDF5 OR ENABLE_NETCDF_4)
|
||||
SET(USE_HDF5 ON)
|
||||
SET(USE_NETCDF4 ON)
|
||||
|
||||
# Accomodate developers who have hdf5 libraries and
|
||||
# headers on their system, but do not have a the hdf
|
||||
# .cmake files. If this is the case, they should
|
||||
# specify HDF5_HL_LIB, HDF5_LIB, HDF5_INCLUDE_DIR manually.
|
||||
IF(HDF5_LIB AND HDF5_HL_LIB AND HDF5_INCLUDE_DIR)
|
||||
SET(HDF5_LIBRARIES ${HDF5_LIB} ${HDF5_HL_LIB})
|
||||
SET(HDF5_LIBRARIES ${HDF5_LIB} ${HDF5_HL_LIB})
|
||||
SET(HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIR})
|
||||
# Find out if HDF5 was built with parallel support.
|
||||
# Do that by checking for the targets H5Pget_fapl_mpiposx and
|
||||
# H5Pget_fapl_mpio in ${HDF5_LIB}.
|
||||
CHECK_LIBRARY_EXISTS(${HDF5_LIB} H5Pget_fapl_mpioposix "" HDF5_IS_PARALLEL)
|
||||
IF(NOT HDF5_IS_PARALLEL)
|
||||
CHECK_LIBRARY_EXISTS(${HDF5_LIB} H5Pget_fapl_mpio "" HDF5_IS_PARALLEL)
|
||||
ENDIF()
|
||||
ELSE()
|
||||
IF(MSVC)
|
||||
FIND_PACKAGE(HDF5 COMPONENTS C HL NO_MODULE REQUIRED)
|
||||
@ -583,7 +589,6 @@ IF (USE_HDF5 OR ENABLE_NETCDF_4)
|
||||
ELSE()
|
||||
FIND_PACKAGE(HDF5 COMPONENTS C HL REQUIRED)
|
||||
ENDIF()
|
||||
|
||||
ENDIF()
|
||||
|
||||
INCLUDE_DIRECTORIES(${HDF5_INCLUDE_DIRS})
|
||||
@ -730,19 +735,12 @@ SET(STATUS_PARALLEL "OFF")
|
||||
OPTION(ENABLE_PARALLEL "Build netCDF-4 with parallel IO" OFF)
|
||||
IF(ENABLE_PARALLEL AND ENABLE_NETCDF_4)
|
||||
SET(USE_PARALLEL ON CACHE BOOL "")
|
||||
# Check for H5Pget_fapl_mpiposx, define USE_PARALLEL_POSIX
|
||||
CHECK_LIBRARY_EXISTS(${HDF5_LIB} H5Pget_fapl_mpioposix "" USE_PARALLEL_POSIX)
|
||||
|
||||
# Else Check for H5Pget_fapl_mpio, define USE_PARALLEL_MPIO
|
||||
IF(NOT USE_PARALLEL_POSIX)
|
||||
CHECK_LIBRARY_EXISTS(${HDF5_LIB} H5Pget_fapl_mpio "" USE_PARALLEL_MPIO)
|
||||
ENDIF()
|
||||
|
||||
IF(NOT USE_PARALLEL_POSIX AND NOT USE_PARALLEL_MPIO)
|
||||
IF(NOT HDF5_IS_PARALLEL)
|
||||
SET(USE_PARALLEL OFF CACHE BOOL "")
|
||||
MESSAGE(STATUS "Cannot find HDF5 library built with parallel support. Disabling parallel build.")
|
||||
ELSE()
|
||||
SET(STATUS_PARALLEL "ON")
|
||||
ENDIF()
|
||||
SET(STATUS_PARALLEL "ON")
|
||||
ENDIF()
|
||||
|
||||
# Options to enable parallel IO, tests.
|
||||
|
Loading…
Reference in New Issue
Block a user