You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
3.4 KiB
106 lines
3.4 KiB
2 years ago
|
########################################################################
|
||
|
# See associated tribits/Copyright.txt file for copyright and license! #
|
||
|
########################################################################
|
||
|
|
||
|
set(HDF5_INTERNAL_IS_MODERN FALSE)
|
||
|
|
||
|
if (Netcdf_ALLOW_MODERN)
|
||
|
|
||
|
print_var(Netcdf_ALLOW_MODERN)
|
||
|
message("-- Using find_package(HDF5 CONFIG) ...")
|
||
|
find_package(HDF5 CONFIG)
|
||
|
if (HDF5_FOUND)
|
||
|
message("-- Found HDF5_CONFIG=${HDF5_CONFIG}")
|
||
|
message("-- Generating Netcdf::all_libs and NetcdfConfig.cmake")
|
||
|
message("-- HDF5_EXPORT_LIBRARIES=${HDF5_EXPORT_LIBRARIES}")
|
||
|
tribits_extpkg_create_imported_all_libs_target_and_config_file(
|
||
|
HDF5
|
||
|
INNER_FIND_PACKAGE_NAME HDF5
|
||
|
IMPORTED_TARGETS_FOR_ALL_LIBS ${HDF5_EXPORT_LIBRARIES})
|
||
|
set(HDF5_INTERNAL_IS_MODERN TRUE)
|
||
|
else()
|
||
|
message("-- Could not find HDF5_CONFIG (FindTPLHDF5.cmake)")
|
||
|
endif()
|
||
|
|
||
|
endif()
|
||
|
|
||
|
set(HDF5_FOUND_MODERN_CONFIG_FILE ${HDF5_INTERNAL_IS_MODERN} CACHE INTERNAL "True if HDF5 was found by the modern method")
|
||
|
|
||
|
if (NOT TARGET HDF5::all_libs)
|
||
|
|
||
|
# First, set up the variables for the (backward-compatible) TriBITS way of
|
||
|
# finding HDF5. These are used in case find_package(HDF5 ...) is not called
|
||
|
# or does not find HDF5. Also, these variables need to be non-null in order
|
||
|
# to trigger the right behavior in the function
|
||
|
# tribits_tpl_find_include_dirs_and_libraries().
|
||
|
|
||
|
set(REQUIRED_HEADERS hdf5.h)
|
||
|
set(REQUIRED_LIBS_NAMES hdf5)
|
||
|
|
||
|
if (HDF5_REQUIRE_FORTRAN)
|
||
|
set(REQUIRED_LIBS_NAMES ${REQUIRED_LIBS_NAMES} hdf5_fortran)
|
||
|
endif()
|
||
|
|
||
|
if (TPL_ENABLE_MPI)
|
||
|
set(REQUIRED_LIBS_NAMES ${REQUIRED_LIBS_NAMES} z)
|
||
|
endif()
|
||
|
|
||
|
if (TPL_ENABLE_Netcdf)
|
||
|
set(REQUIRED_LIBS_NAMES ${REQUIRED_LIBS_NAMES} hdf5_hl)
|
||
|
endif()
|
||
|
|
||
|
#
|
||
|
# Second, search for HDF5 components (if allowed) using the standard
|
||
|
# find_package(HDF5 ...).
|
||
|
#
|
||
|
tribits_tpl_allow_pre_find_package(HDF5 HDF5_ALLOW_PREFIND)
|
||
|
if (HDF5_ALLOW_PREFIND)
|
||
|
|
||
|
message("-- Using find_package(HDF5 ...) ...")
|
||
|
|
||
|
set(HDF5_COMPONENTS C)
|
||
|
if (HDF5_REQUIRE_FORTRAN)
|
||
|
list(APPEND HDF5_COMPONENTS Fortran)
|
||
|
endif()
|
||
|
|
||
|
if (TPL_ENABLE_MPI)
|
||
|
set(HDF5_PREFER_PARALLEL TRUE)
|
||
|
endif()
|
||
|
|
||
|
find_package(HDF5 COMPONENTS ${HDF5_COMPONENTS})
|
||
|
|
||
|
# Make sure that HDF5 is parallel.
|
||
|
if (TPL_ENABLE_MPI AND NOT HDF5_IS_PARALLEL)
|
||
|
message(FATAL_ERROR "Trilinos is configured for MPI, HDF5 is not.
|
||
|
Did CMake find the correct libraries?
|
||
|
Try setting HDF5_INCLUDE_DIRS and/or HDF5_LIBRARY_DIRS explicitly.
|
||
|
")
|
||
|
endif()
|
||
|
|
||
|
if (HDF5_FOUND)
|
||
|
# Tell TriBITS that we found HDF5 and there no need to look any further!
|
||
|
set(TPL_HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS} CACHE PATH
|
||
|
"HDF5 include dirs")
|
||
|
set(TPL_HDF5_LIBRARIES ${HDF5_LIBRARIES} CACHE FILEPATH
|
||
|
"HDF5 libraries")
|
||
|
set(TPL_HDF5_LIBRARY_DIRS ${HDF5_LIBRARY_DIRS} CACHE PATH
|
||
|
"HDF5 library dirs")
|
||
|
endif()
|
||
|
|
||
|
endif()
|
||
|
|
||
|
#
|
||
|
# Third, call tribits_tpl_find_include_dirs_and_libraries()
|
||
|
#
|
||
|
tribits_tpl_find_include_dirs_and_libraries( HDF5
|
||
|
REQUIRED_HEADERS ${REQUIRED_HEADERS}
|
||
|
REQUIRED_LIBS_NAMES ${REQUIRED_LIBS_NAMES}
|
||
|
)
|
||
|
# NOTE: If find_package(HDF5 ...) was called and successfully found HDF5, then
|
||
|
# tribits_tpl_find_include_dirs_and_libraries() will use the already-set
|
||
|
# variables TPL_HDF5_INCLUDE_DIRS and TPL_HDF5_LIBRARIES and then print them
|
||
|
# out (and set some other standard variables as well). This is the final
|
||
|
# "hook" into the TriBITS TPL system.
|
||
|
|
||
|
endif()
|