Salome HOME
*** empty log message ***
[modules/kernel.git] / salome_adm / cmake_files / FindHDF5.cmake
index c0f0a60c1b38d5bd249c2ab8bf5fd3185bf3df6b..fe54d590a2a8b6201f2c1b7f8818efd6db9c6aba 100644 (file)
 #
 #  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 -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)
@@ -47,3 +177,5 @@ ENDIF(WINDOWS)
 #  FIND_LIBRARY(SZIP_LIBS szlib ${SZIP_ROOT}/lib)
 #  SET(HDF5_LIBS ${HDF5_LIBS} ${SZIP_LIBS})
 #ENDIF(${NB} GREATER 0)
+
+# ------