#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-FIND_PROGRAM(HDF5_DUMP h5dump)
+# ------
-SET(HDF5_ROOT ${HDF5_DUMP})
-GET_FILENAME_COMPONENT(HDF5_ROOT ${HDF5_ROOT} PATH)
-GET_FILENAME_COMPONENT(HDF5_ROOT ${HDF5_ROOT} PATH)
+MESSAGE(STATUS "Check for hdf5 ...")
-FIND_PATH(HDF5_INCLUDES H5public.h ${HDF5_ROOT}/include)
-SET(HDF5_INCLUDES -I${HDF5_INCLUDES})
+# ------
-IF(WINDOWS)
- FIND_LIBRARY(HDF5_LIBS hdf5d ${HDF5_ROOT}/lib)
-ELSE(WINDOWS)
- FIND_LIBRARY(HDF5_LIBS hdf5 ${HDF5_ROOT}/lib)
-ENDIF(WINDOWS)
+IF(HDF5_IS_MANDATORY STREQUAL 0)
+ SET(HDF5_IS_MANDATORY 0)
+ SET(HDF5_IS_OPTIONAL 1)
+ENDIF(HDF5_IS_MANDATORY STREQUAL 0)
+IF(HDF5_IS_OPTIONAL STREQUAL 0)
+ SET(HDF5_IS_MANDATORY 1)
+ SET(HDF5_IS_OPTIONAL 0)
+ENDIF(HDF5_IS_OPTIONAL STREQUAL 0)
+IF(NOT HDF5_IS_MANDATORY AND NOT HDF5_IS_OPTIONAL)
+ SET(HDF5_IS_MANDATORY 1)
+ SET(HDF5_IS_OPTIONAL 0)
+ENDIF(NOT HDF5_IS_MANDATORY AND NOT HDF5_IS_OPTIONAL)
+
+# ------
+
+SET(HDF5_STATUS 1)
+IF(WITHOUT_HDF5 OR WITH_HDF5 STREQUAL 0)
+ SET(HDF5_STATUS 0)
+ MESSAGE(STATUS "hdf5 disabled from command line.")
+ENDIF(WITHOUT_HDF5 OR WITH_HDF5 STREQUAL 0)
+
+# ------
+
+IF(HDF5_STATUS)
+ IF(WITH_HDF5)
+ SET(HDF5_ROOT_USER ${WITH_HDF5})
+ ENDIF(WITH_HDF5)
+ IF(NOT HDF5_ROOT_USER)
+ SET(HDF5_ROOT_USER $ENV{HDF5_ROOT})
+ ENDIF(NOT HDF5_ROOT_USER)
+ IF(NOT HDF5_ROOT_USER)
+ SET(HDF5_ROOT_USER $ENV{HDF5HOME})
+ ENDIF(NOT HDF5_ROOT_USER)
+ENDIF(HDF5_STATUS)
+
+# ------
+
+IF(HDF5_STATUS)
+ IF(NOT HDF5_ROOT_USER)
+ FIND_PROGRAM(HDF5_DUMP h5dump)
+ IF(HDF5_DUMP)
+ MESSAGE(STATUS "h5dump found: ${HDF5_DUMP}")
+ IF(HDF5_DUMP STREQUAL /usr/bin/h5dump)
+ ELSE(HDF5_DUMP STREQUAL /usr/bin/h5dump)
+ SET(HDF5_ROOT_USER ${HDF5_DUMP})
+ GET_FILENAME_COMPONENT(HDF5_ROOT_USER ${HDF5_ROOT_USER} PATH)
+ GET_FILENAME_COMPONENT(HDF5_ROOT_USER ${HDF5_ROOT_USER} PATH)
+ ENDIF(HDF5_DUMP STREQUAL /usr/bin/h5dump)
+ ELSE(HDF5_DUMP)
+ MESSAGE(STATUS "h5dump not found, try to use WITH_HDF5 option or HDF5_ROOT (or HDF5HOME) environment variable")
+ SET(HDF5_STATUS 0)
+ ENDIF(HDF5_DUMP)
+ ENDIF(NOT HDF5_ROOT_USER)
+ENDIF(HDF5_STATUS)
+
+# ------
+
+IF(HDF5_STATUS)
+ IF(HDF5_ROOT_USER)
+ SET(HDF5_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+ ELSE(HDF5_ROOT_USER)
+ SET(HDF5_FIND_PATHS_OPTION)
+ ENDIF(HDF5_ROOT_USER)
+ENDIF(HDF5_STATUS)
+
+# ------
+
+IF(HDF5_STATUS)
+ IF(HDF5_ROOT_USER)
+ SET(HDF5_INCLUDE_PATHS ${HDF5_ROOT_USER}/include)
+ ELSE(HDF5_ROOT_USER)
+ SET(HDF5_INCLUDE_PATHS)
+ ENDIF(HDF5_ROOT_USER)
+ SET(HDF5_INCLUDE_TO_FIND H5public.h)
+ FIND_PATH(HDF5_INCLUDE_DIR ${HDF5_INCLUDE_TO_FIND} PATHS ${HDF5_INCLUDE_PATHS} ${HDF5_FIND_PATHS_OPTION})
+ IF(HDF5_INCLUDE_DIR)
+ IF(HDF5_ROOT_USER)
+ SET(HDF5_INCLUDES -I${HDF5_INCLUDE_DIR})
+ ENDIF(HDF5_ROOT_USER)
+ SET(HDF5_INCLUDES -DH5_USE_16_API -D_HDF5USEDLL_ ${HDF5_INCLUDES})
+ MESSAGE(STATUS "${HDF5_INCLUDE_TO_FIND} found in ${HDF5_INCLUDE_DIR}")
+ ELSE(HDF5_INCLUDE_DIR)
+ SET(HDF5_STATUS 0)
+ IF(HDF5_ROOT_USER)
+ MESSAGE(STATUS "${HDF5_INCLUDE_TO_FIND} not found in ${HDF5_INCLUDE_PATHS}, check your HDF5 installation.")
+ ELSE(HDF5_ROOT_USER)
+ MESSAGE(STATUS "${HDF5_INCLUDE_TO_FIND} not found on system, try to use WITH_HDF5 option or HDF5_ROOT (or HDF5HOME) environment variable.")
+ ENDIF(HDF5_ROOT_USER)
+ ENDIF(HDF5_INCLUDE_DIR)
+ENDIF(HDF5_STATUS)
+
+# ----
+
+IF(HDF5_STATUS)
+ IF(HDF5_ROOT_USER)
+ IF(WINDOWS)
+ SET(HDF5_LIB_PATHS ${HDF5_ROOT_USER}/dll)
+ ELSE(WINDOWS)
+ SET(HDF5_LIB_PATHS ${HDF5_ROOT_USER}/lib)
+ ENDIF(WINDOWS)
+ ELSE(HDF5_ROOT_USER)
+ SET(HDF5_LIB_PATHS)
+ ENDIF(HDF5_ROOT_USER)
+ IF(WINDOWS)
+ IF(CMAKE_BUILD_TYPE STREQUAL Release)
+ FIND_LIBRARY(HDF5_LIB hdf5dll PATHS ${HDF5_LIB_PATHS} ${HDF5_FIND_PATHS_OPTION})
+ ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
+ FIND_LIBRARY(HDF5_LIB hdf5ddll PATHS ${HDF5_LIB_PATHS} ${HDF5_FIND_PATHS_OPTION})
+ ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
+ ELSE(WINDOWS)
+ FIND_LIBRARY(HDF5_LIB hdf5 PATHS ${HDF5_LIB_PATHS} ${HDF5_FIND_PATHS_OPTION})
+ ENDIF(WINDOWS)
+ SET(HDF5_LIBS)
+ IF(HDF5_LIB)
+ SET(HDF5_LIBS ${HDF5_LIBS} ${HDF5_LIB})
+ MESSAGE(STATUS "hdf5 lib found: ${HDF5_LIB}")
+ ELSE(HDF5_LIB)
+ SET(HDF5_STATUS 0)
+ IF(HDF5_ROOT_USER)
+ MESSAGE(STATUS "hdf5 lib not found in ${HDF5_LIB_PATHS}, check your HDF5 installation.")
+ ELSE(HDF5_ROOT_USER)
+ MESSAGE(STATUS "hdf5 lib not found on system, try to use WITH_HDF5 option or HDF5_ROOT (or HDF5HOME) environment variable.")
+ ENDIF(HDF5_ROOT_USER)
+ ENDIF(HDF5_LIB)
+ENDIF(HDF5_STATUS)
+
+# ----
+
+IF(HDF5_STATUS)
+ELSE(HDF5_STATUS)
+ IF(HDF5_IS_MANDATORY)
+ MESSAGE(FATAL_ERROR "hdf5 not found ... mandatory ... abort")
+ ELSE(HDF5_IS_MANDATORY)
+ MESSAGE(STATUS "hdf5 not found ... optional ... disabled")
+ ENDIF(HDF5_IS_MANDATORY)
+ENDIF(HDF5_STATUS)
+
+# ------
#SET(ZLIB_ROOT $ENV{ZLIB_ROOT})
#STRING(LENGTH "${ZLIB_ROOT}" NB)
# FIND_LIBRARY(SZIP_LIBS szlib ${SZIP_ROOT}/lib)
# SET(HDF5_LIBS ${HDF5_LIBS} ${SZIP_LIBS})
#ENDIF(${NB} GREATER 0)
+
+# ------