Salome HOME
*** empty log message ***
[modules/kernel.git] / salome_adm / cmake_files / FindHDF5.cmake
1 #  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 #
3 #  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 #  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 #
6 #  This library is free software; you can redistribute it and/or
7 #  modify it under the terms of the GNU Lesser General Public
8 #  License as published by the Free Software Foundation; either
9 #  version 2.1 of the License.
10 #
11 #  This library is distributed in the hope that it will be useful,
12 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 #  Lesser General Public License for more details.
15 #
16 #  You should have received a copy of the GNU Lesser General Public
17 #  License along with this library; if not, write to the Free Software
18 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 #
20 #  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 #
22 # ------
23
24 MESSAGE(STATUS "Check for hdf5 ...")
25
26 # ------
27
28 IF(HDF5_IS_MANDATORY STREQUAL 0)
29   SET(HDF5_IS_MANDATORY 0)
30   SET(HDF5_IS_OPTIONAL 1)
31 ENDIF(HDF5_IS_MANDATORY STREQUAL 0)
32 IF(HDF5_IS_OPTIONAL STREQUAL 0)
33   SET(HDF5_IS_MANDATORY 1)
34   SET(HDF5_IS_OPTIONAL 0)
35 ENDIF(HDF5_IS_OPTIONAL STREQUAL 0)
36 IF(NOT HDF5_IS_MANDATORY AND NOT HDF5_IS_OPTIONAL)
37   SET(HDF5_IS_MANDATORY 1)
38   SET(HDF5_IS_OPTIONAL 0)
39 ENDIF(NOT HDF5_IS_MANDATORY AND NOT HDF5_IS_OPTIONAL)
40
41 # ------
42
43 SET(HDF5_STATUS 1)
44 IF(WITHOUT_HDF5 OR WITH_HDF5 STREQUAL 0)
45   SET(HDF5_STATUS 0)
46   MESSAGE(STATUS "hdf5 disabled from command line.")
47 ENDIF(WITHOUT_HDF5 OR WITH_HDF5 STREQUAL 0)
48
49 # ------
50
51 IF(HDF5_STATUS)
52   IF(WITH_HDF5)
53     SET(HDF5_ROOT_USER ${WITH_HDF5})
54   ENDIF(WITH_HDF5)
55   IF(NOT HDF5_ROOT_USER)
56     SET(HDF5_ROOT_USER $ENV{HDF5_ROOT})
57   ENDIF(NOT HDF5_ROOT_USER)
58   IF(NOT HDF5_ROOT_USER)
59     SET(HDF5_ROOT_USER $ENV{HDF5HOME})
60   ENDIF(NOT HDF5_ROOT_USER)
61 ENDIF(HDF5_STATUS)
62
63 # ------
64
65 IF(HDF5_STATUS)
66   IF(NOT HDF5_ROOT_USER)
67     FIND_PROGRAM(HDF5_DUMP h5dump)
68     IF(HDF5_DUMP)
69       MESSAGE(STATUS "h5dump found: ${HDF5_DUMP}")
70       IF(HDF5_DUMP STREQUAL /usr/bin/h5dump)
71       ELSE(HDF5_DUMP STREQUAL /usr/bin/h5dump)
72         SET(HDF5_ROOT_USER ${HDF5_DUMP})
73         GET_FILENAME_COMPONENT(HDF5_ROOT_USER ${HDF5_ROOT_USER} PATH)
74         GET_FILENAME_COMPONENT(HDF5_ROOT_USER ${HDF5_ROOT_USER} PATH)
75       ENDIF(HDF5_DUMP STREQUAL /usr/bin/h5dump)
76     ELSE(HDF5_DUMP)
77       MESSAGE(STATUS "h5dump not found, try to use WITH_HDF5 option or HDF5_ROOT (or HDF5HOME) environment variable")
78       SET(HDF5_STATUS 0)
79     ENDIF(HDF5_DUMP)
80   ENDIF(NOT HDF5_ROOT_USER)
81 ENDIF(HDF5_STATUS)
82
83 # ------
84
85 IF(HDF5_STATUS)
86   IF(HDF5_ROOT_USER)
87     SET(HDF5_FIND_PATHS_OPTION NO_DEFAULT_PATH)
88   ELSE(HDF5_ROOT_USER)
89     SET(HDF5_FIND_PATHS_OPTION)
90   ENDIF(HDF5_ROOT_USER)
91 ENDIF(HDF5_STATUS)
92
93 # ------
94
95 IF(HDF5_STATUS)
96   IF(HDF5_ROOT_USER)
97     SET(HDF5_INCLUDE_PATHS ${HDF5_ROOT_USER}/include)
98   ELSE(HDF5_ROOT_USER)
99     SET(HDF5_INCLUDE_PATHS)
100   ENDIF(HDF5_ROOT_USER)
101   SET(HDF5_INCLUDE_TO_FIND H5public.h)
102   FIND_PATH(HDF5_INCLUDE_DIR ${HDF5_INCLUDE_TO_FIND} PATHS ${HDF5_INCLUDE_PATHS} ${HDF5_FIND_PATHS_OPTION})
103   IF(HDF5_INCLUDE_DIR)
104     IF(HDF5_ROOT_USER)
105       SET(HDF5_INCLUDES -I${HDF5_INCLUDE_DIR})
106     ENDIF(HDF5_ROOT_USER)
107     SET(HDF5_INCLUDES -D_HDF5USEDLL_ ${HDF5_INCLUDES})
108     MESSAGE(STATUS "${HDF5_INCLUDE_TO_FIND} found in ${HDF5_INCLUDE_DIR}")
109   ELSE(HDF5_INCLUDE_DIR)
110     SET(HDF5_STATUS 0)
111     IF(HDF5_ROOT_USER)
112       MESSAGE(STATUS "${HDF5_INCLUDE_TO_FIND} not found in ${HDF5_INCLUDE_PATHS}, check your HDF5 installation.")
113     ELSE(HDF5_ROOT_USER)
114       MESSAGE(STATUS "${HDF5_INCLUDE_TO_FIND} not found on system, try to use WITH_HDF5 option or HDF5_ROOT (or HDF5HOME) environment variable.")
115     ENDIF(HDF5_ROOT_USER)
116   ENDIF(HDF5_INCLUDE_DIR)
117 ENDIF(HDF5_STATUS)
118
119 # ----
120
121 IF(HDF5_STATUS)
122   IF(HDF5_ROOT_USER)
123     IF(WINDOWS)
124       SET(HDF5_LIB_PATHS ${HDF5_ROOT_USER}/dll)
125     ELSE(WINDOWS)
126       SET(HDF5_LIB_PATHS ${HDF5_ROOT_USER}/lib)
127     ENDIF(WINDOWS)
128   ELSE(HDF5_ROOT_USER)
129     SET(HDF5_LIB_PATHS)
130   ENDIF(HDF5_ROOT_USER)
131   IF(WINDOWS)
132     IF(CMAKE_BUILD_TYPE STREQUAL Release)
133       FIND_LIBRARY(HDF5_LIB hdf5dll PATHS ${HDF5_LIB_PATHS} ${HDF5_FIND_PATHS_OPTION})
134     ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
135       FIND_LIBRARY(HDF5_LIB hdf5ddll PATHS ${HDF5_LIB_PATHS} ${HDF5_FIND_PATHS_OPTION})
136     ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
137   ELSE(WINDOWS)
138     FIND_LIBRARY(HDF5_LIB hdf5 PATHS ${HDF5_LIB_PATHS} ${HDF5_FIND_PATHS_OPTION})
139   ENDIF(WINDOWS)
140   SET(HDF5_LIBS)
141   IF(HDF5_LIB)
142     SET(HDF5_LIBS ${HDF5_LIBS} ${HDF5_LIB})
143     MESSAGE(STATUS "hdf5 lib found: ${HDF5_LIB}")
144   ELSE(HDF5_LIB)
145     SET(HDF5_STATUS 0)
146     IF(HDF5_ROOT_USER)
147       MESSAGE(STATUS "hdf5 lib not found in ${HDF5_LIB_PATHS}, check your HDF5 installation.")
148     ELSE(HDF5_ROOT_USER)
149       MESSAGE(STATUS "hdf5 lib not found on system, try to use WITH_HDF5 option or HDF5_ROOT (or HDF5HOME) environment variable.")
150     ENDIF(HDF5_ROOT_USER)
151   ENDIF(HDF5_LIB)
152 ENDIF(HDF5_STATUS)
153
154 # ----
155
156 IF(HDF5_STATUS)
157 ELSE(HDF5_STATUS)
158   IF(HDF5_IS_MANDATORY)
159     MESSAGE(FATAL_ERROR "hdf5 not found ... mandatory ... abort")
160   ELSE(HDF5_IS_MANDATORY)
161     MESSAGE(STATUS "hdf5 not found ... optional ... disabled")
162   ENDIF(HDF5_IS_MANDATORY)
163 ENDIF(HDF5_STATUS)
164
165 # ------
166
167 #SET(ZLIB_ROOT $ENV{ZLIB_ROOT})
168 #STRING(LENGTH "${ZLIB_ROOT}" NB)
169 #IF(${NB} GREATER 0)
170 #  FIND_LIBRARY(ZLIB_LIBS zlib ${ZLIB_ROOT}/lib)
171 #  SET(HDF5_LIBS ${HDF5_LIBS} ${ZLIB_LIBS})
172 #ENDIF(${NB} GREATER 0)
173
174 #SET(SZIP_ROOT $ENV{SZIP_ROOT})
175 #STRING(LENGTH "${SZIP_ROOT}" NB)
176 #IF(${NB} GREATER 0)
177 #  FIND_LIBRARY(SZIP_LIBS szlib ${SZIP_ROOT}/lib)
178 #  SET(HDF5_LIBS ${HDF5_LIBS} ${SZIP_LIBS})
179 #ENDIF(${NB} GREATER 0)
180
181 # ------