Salome HOME
MED file loading on demand.
[modules/med.git] / adm_local / cmake_files / FindMETIS.cmake
1 # Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19
20 # ------
21
22 MESSAGE(STATUS "Check for metis ...")
23
24 # ------
25
26 IF(METIS_IS_MANDATORY STREQUAL 0)
27   SET(METIS_IS_MANDATORY 0)
28   SET(METIS_IS_OPTIONAL 1)
29 ENDIF(METIS_IS_MANDATORY STREQUAL 0)
30 IF(METIS_IS_OPTIONAL STREQUAL 0)
31   SET(METIS_IS_MANDATORY 1)
32   SET(METIS_IS_OPTIONAL 0)
33 ENDIF(METIS_IS_OPTIONAL STREQUAL 0)
34 IF(NOT METIS_IS_MANDATORY AND NOT METIS_IS_OPTIONAL)
35   SET(METIS_IS_MANDATORY 0)
36   SET(METIS_IS_OPTIONAL 1)
37 ENDIF(NOT METIS_IS_MANDATORY AND NOT METIS_IS_OPTIONAL)
38
39 # ------
40
41 SET(MED_ENABLE_METIS 1)
42 IF(WITHOUT_METIS OR WITH_METIS STREQUAL 0)
43   SET(MED_ENABLE_METIS 0)
44   MESSAGE(STATUS "metis disabled from command line.")
45 ENDIF(WITHOUT_METIS OR WITH_METIS STREQUAL 0)
46
47 # ------
48
49 IF(MED_ENABLE_METIS)
50   IF(WITH_METIS)
51     SET(METIS_ROOT_USER ${WITH_METIS})
52   ENDIF(WITH_METIS)
53   IF(NOT METIS_ROOT_USER)
54     SET(METIS_ROOT_USER $ENV{METISDIR})
55   ENDIF(NOT METIS_ROOT_USER)
56   IF(NOT METIS_ROOT_USER)
57     SET(METIS_ROOT_USER $ENV{METIS_ROOT})
58   ENDIF(NOT METIS_ROOT_USER)
59   IF(NOT METIS_ROOT_USER)
60     SET(METIS_ROOT_USER $ENV{METISHOME})
61   ENDIF(NOT METIS_ROOT_USER)
62 ENDIF(MED_ENABLE_METIS)
63
64 # ------
65
66 IF(MED_ENABLE_METIS)
67   IF(NOT METIS_ROOT_USER)
68     FIND_PROGRAM(METIS_MAINBINARY pmetis)
69     IF(METIS_MAINBINARY)
70       MESSAGE(STATUS "metis found: ${METIS_MAINBINARY}")
71       IF(METIS_MAINBINARY STREQUAL /usr/bin/pmetis)
72       ELSE(METIS_MAINBINARY STREQUAL /usr/bin/pmetis)
73         SET(METIS_ROOT_USER ${METIS_MAINBINARY})
74         GET_FILENAME_COMPONENT(METIS_ROOT_USER ${METIS_ROOT_USER} PATH)
75       ENDIF(METIS_MAINBINARY STREQUAL /usr/bin/pmetis)
76     ELSE(METIS_MAINBINARY)
77       MESSAGE(STATUS "metis not found, try to use WITH_METIS option or METIS_ROOT (or METISHOME or METISDIR) environment variable")
78       SET(MED_ENABLE_METIS 0)
79     ENDIF(METIS_MAINBINARY)
80   ENDIF(NOT METIS_ROOT_USER)
81 ENDIF(MED_ENABLE_METIS)
82
83 # ------
84
85 IF(MED_ENABLE_METIS)
86   IF(METIS_ROOT_USER)
87     SET(METIS_FIND_PATHS_OPTION NO_DEFAULT_PATH)
88   ELSE(METIS_ROOT_USER)
89     SET(METIS_FIND_PATHS_OPTION)
90   ENDIF(METIS_ROOT_USER)
91 ENDIF(MED_ENABLE_METIS)
92
93 # ------
94
95 IF(MED_ENABLE_METIS)
96   IF(METIS_ROOT_USER)
97     SET(METIS_INCLUDE_PATHS ${METIS_ROOT_USER}/Lib)
98   ELSE(METIS_ROOT_USER)
99     SET(METIS_INCLUDE_PATHS)
100   ENDIF(METIS_ROOT_USER)
101   SET(METIS_INCLUDE_TO_FIND metis.h)
102   FIND_PATH(METIS_INCLUDE_DIR ${METIS_INCLUDE_TO_FIND} PATHS ${METIS_INCLUDE_PATHS} ${METIS_FIND_PATHS_OPTION})
103   SET(METIS_DEFINITIONS)
104   IF(METIS_INCLUDE_DIR)
105     IF(METIS_ROOT_USER)
106       SET(METIS_INCLUDES -I${METIS_INCLUDE_DIR})#to remove
107       SET(METIS_INCLUDE_DIRS ${METIS_INCLUDE_DIR})
108     ENDIF(METIS_ROOT_USER)
109     SET(METIS_INCLUDES -D_METISUSEDLL_ ${METIS_INCLUDES})#to remove
110     SET(METIS_DEFINITIONS "${METIS_DEFINITIONS} -D_METISUSEDLL_")
111     MESSAGE(STATUS "${METIS_INCLUDE_TO_FIND} found in ${METIS_INCLUDE_DIR}")
112   ELSE(METIS_INCLUDE_DIR)
113     SET(MED_ENABLE_METIS 0)
114     IF(METIS_ROOT_USER)
115       MESSAGE(STATUS "${METIS_INCLUDE_TO_FIND} not found in ${METIS_INCLUDE_PATHS}, check your METIS installation.")
116     ELSE(METIS_ROOT_USER)
117       MESSAGE(STATUS "${METIS_INCLUDE_TO_FIND} not found on system, try to use WITH_METIS option or METIS_ROOT (or METISHOME or METISDIR) environment variable.")
118     ENDIF(METIS_ROOT_USER)
119   ENDIF(METIS_INCLUDE_DIR)
120 ENDIF(MED_ENABLE_METIS)
121
122 # ----
123
124 IF(MED_ENABLE_METIS)
125   IF(METIS_ROOT_USER)
126     IF(WINDOWS)
127       SET(METIS_LIB_PATHS ${METIS_ROOT_USER}/dll ${METIS_ROOT_USER}/lib)
128     ELSE(WINDOWS)
129       SET(METIS_LIB_PATHS ${METIS_ROOT_USER})
130     ENDIF(WINDOWS)
131   ELSE(METIS_ROOT_USER)
132     SET(METIS_LIB_PATHS)
133   ENDIF(METIS_ROOT_USER)
134   IF(WINDOWS)
135     IF(CMAKE_BUILD_TYPE STREQUAL Release)
136       FIND_LIBRARY(METIS_LIB metisdll PATHS ${METIS_LIB_PATHS} ${METIS_FIND_PATHS_OPTION})
137     ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
138       FIND_LIBRARY(METIS_LIB metisddll PATHS ${METIS_LIB_PATHS} ${METIS_FIND_PATHS_OPTION})
139     ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
140   ELSE(WINDOWS)
141     FIND_LIBRARY(METIS_LIB metis PATHS ${METIS_LIB_PATHS} ${METIS_FIND_PATHS_OPTION})
142   ENDIF(WINDOWS)
143   SET(METIS_LIBS)
144   IF(METIS_LIB)
145     SET(METIS_LIBS ${METIS_LIBS} ${METIS_LIB})
146     MESSAGE(STATUS "metis lib found: ${METIS_LIB}")
147   ELSE(METIS_LIB)
148     SET(MED_ENABLE_METIS 0)
149     IF(METIS_ROOT_USER)
150       MESSAGE(STATUS "metis lib not found in ${METIS_LIB_PATHS}, check your METIS installation.")
151     ELSE(METIS_ROOT_USER)
152       MESSAGE(STATUS "metis lib not found on system, try to use WITH_METIS option or METIS_ROOT (or METISHOME or METISDIR) environment variable.")
153     ENDIF(METIS_ROOT_USER)
154   ENDIF(METIS_LIB)
155 ENDIF(MED_ENABLE_METIS)
156
157 # ----
158
159 IF(MED_ENABLE_METIS)
160   SET(METIS_CPPFLAGS ${METIS_INCLUDES} -DMED_ENABLE_METIS)
161   SET(METIS_DEFINITIONS "${METIS_DEFINITIONS} -DMED_ENABLE_METIS")
162 ELSE(MED_ENABLE_METIS)
163   IF(METIS_IS_MANDATORY)
164     MESSAGE(FATAL_ERROR "metis not found ... mandatory ... abort")
165   ELSE(METIS_IS_MANDATORY)
166     MESSAGE(STATUS "metis not found ... optional ... disabled")
167   ENDIF(METIS_IS_MANDATORY)
168 ENDIF(MED_ENABLE_METIS)
169
170 # ------