Skip to content

Commit

Permalink
Fix HDF5 install during H5PP_PACKAGE_MANAGER=fetch
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidAce committed Jun 3, 2021
1 parent 5ec574c commit 0bd0574
Showing 1 changed file with 49 additions and 25 deletions.
74 changes: 49 additions & 25 deletions cmake/SetupDependenciesFetch.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,47 @@ if(H5PP_PACKAGE_MANAGER MATCHES "fetch")
if(TARGET spdlog::spdlog)
target_link_libraries(deps INTERFACE spdlog::spdlog)
else()
message(FATAL_ERROR "Failed FetchContent: fmt")
message(FATAL_ERROR "Failed FetchContent: spdlog")
endif()
endif()


# Download HDF5 (and ZLIB and SZIP)
if(NOT TARGET hdf5::all)
list(INSERT HDF5_ROOT 0 ${H5PP_DEPS_INSTALL_DIR})
include(cmake/InstallPackage.cmake)
if(NOT szip_FOUND OR NOT TARGET szip-static)
set(SZIP_ROOT ${H5PP_DEPS_INSTALL_DIR} CACHE PATH "Default root path for SZIP installed by h5pp")
find_package(SZIP CONFIG NAMES szip sz COMPONENTS static
PATH_SUFFIXES share/cmake # Fixes bug in CMake 3.20.2 not generating search paths
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_PACKAGE_REGISTRY
NO_CMAKE_SYSTEM_PATH
NO_CMAKE_SYSTEM_PACKAGE_REGISTRY)
if(szip_FOUND OR NOT TARGET szip-static)
install_package(szip "${H5PP_DEPS_INSTALL_DIR}" "")
find_package(SZIP CONFIG NAMES szip sz COMPONENTS static
PATH_SUFFIXES share/cmake # Fixes bug in CMake 3.20.2 not generating search paths
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_SYSTEM_PATH
NO_CMAKE_PACKAGE_REGISTRY
NO_CMAKE_SYSTEM_PACKAGE_REGISTRY
REQUIRED)
get_target_property(SZIP_LIBRARY szip-static LOCATION)
get_target_property(SZIP_INCLUDE_DIR szip-static LOCATION)
endif()
endif()

if(NOT ZLIB_LIBRARY OR NOT ZLIB_INCLUDE_DIR)
find_library(ZLIB_LIBRARY NAMES z HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES zlib/lib NO_DEFAULT_PATH)
find_path(ZLIB_INCLUDE_DIR NAMES zlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES zlib/include NO_DEFAULT_PATH)
if(NOT ZLIB_LIBRARY OR NOT ZLIB_INCLUDE_DIR)
install_package(zlib "${H5PP_DEPS_INSTALL_DIR}" "")
find_library(ZLIB_LIBRARY NAMES z HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES zlib/lib NO_DEFAULT_PATH REQUIRED)
find_path(ZLIB_INCLUDE_DIR NAMES zlib.h HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES zlib/include NO_DEFAULT_PATH REQUIRED)
endif()
endif()

if(NOT HDF5_FOUND OR NOT TARGET hdf5::all)
set(HDF5_ROOT ${H5PP_DEPS_INSTALL_DIR} CACHE PATH "Default root path for HDF5 installed by h5pp")
set(HDF5_NO_SYSTEM_ENVIRONMENT_PATH ON)
set(HDF5_NO_CMAKE_PACKAGE_REGISTRY ON)
set(HDF5_NO_CMAKE_SYSTEM_PATH ON)
Expand All @@ -61,33 +94,24 @@ if(H5PP_PACKAGE_MANAGER MATCHES "fetch")
mark_as_advanced(HDF5_NO_CMAKE_SYSTEM_PACKAGE_REGISTRY)
mark_as_advanced(HDF5_FIND_VERBOSE)
mark_as_advanced(HDF5_FIND_DEBUG)

find_package(HDF5 1.8 COMPONENTS C HL)
if(NOT TARGET hdf5::all)
# This one uses our own module, but will call the config-mode internally first.
find_package(HDF5 1.12 COMPONENTS C HL)
if(NOT HDF5_FOUND OR NOT TARGET hdf5::all)
message(STATUS "HDF5 will be installed into ${H5PP_DEPS_INSTALL_DIR}")
include(cmake/InstallPackage.cmake)
find_library(SZIP_LIBRARY NAMES sz HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec lib aec/lib NO_DEFAULT_PATH)
find_library(AEC_LIBRARY NAMES aec HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec lib aec/lib NO_DEFAULT_PATH)
find_library(ZLIB_LIBRARY NAMES z HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES zlib lib zlib/lib NO_DEFAULT_PATH)
if(NOT SZIP_LIBRARY OR NOT AEC_LIBRARY)
install_package(aec "${H5PP_DEPS_INSTALL_DIR}" "")
find_library(SZIP_LIBRARY NAMES sz HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec lib aec/lib NO_DEFAULT_PATH REQUIRED)
find_library(AEC_LIBRARY NAMES aec HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES aec lib aec/lib NO_DEFAULT_PATH REQUIRED)
endif()
if(NOT ZLIB_LIBRARY)
install_package(zlib "${H5PP_DEPS_INSTALL_DIR}" "")
find_library(ZLIB_LIBRARY NAMES z HINTS ${H5PP_DEPS_INSTALL_DIR} PATH_SUFFIXES zlib lib zlib/lib NO_DEFAULT_PATH REQUIRED)
endif()

list(APPEND H5PP_HDF5_OPTIONS "-DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=ON")
list(APPEND H5PP_HDF5_OPTIONS "-DHDF5_ENABLE_SZIP_SUPPORT:BOOL=ON")
list(APPEND H5PP_HDF5_OPTIONS "-DZLIB_LIBRARY:BOOL=${ZLIB_LIBRARY}")
list(APPEND H5PP_HDF5_OPTIONS "-DZLIB_INCLUDE_DIR:BOOL=${ZLIB_INCLUDE_DIR}")
list(APPEND H5PP_HDF5_OPTIONS "-DSZIP_LIBRARY:BOOL=${SZIP_LIBRARY}")
list(APPEND H5PP_HDF5_OPTIONS "-DSZIP_INCLUDE_DIR:BOOL=${SZIP_INCLUDE_DIR}")
list(APPEND H5PP_HDF5_OPTIONS "-DHDF5_ENABLE_PARALLEL:BOOL=${H5PP_ENABLE_MPI}")
install_package(hdf5 "${H5PP_DEPS_INSTALL_DIR}" "${H5PP_HDF5_OPTIONS}")
# This one uses our own module though, but will call the config-mode internally first.
# This one uses our own module, but will call the config-mode internally first.
find_package(HDF5 1.12 COMPONENTS C HL REQUIRED)
if(TARGET hdf5::all)
message(STATUS "hdf5 installed successfully")
endif()
message(STATUS "hdf5 installed successfully")

endif()
if(TARGET hdf5::all)
if(HDF5_FOUND AND TARGET hdf5::all)
list(APPEND H5PP_TARGETS hdf5::all)
target_link_libraries(deps INTERFACE hdf5::all)
else()
Expand Down

0 comments on commit 0bd0574

Please sign in to comment.