Salome HOME
MED file loading on demand.
[modules/med.git] / adm_local / cmake_files / FindPARMETIS.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 parmetis ...")
23
24 # ------
25
26 IF(PARMETIS_IS_MANDATORY STREQUAL 0)
27   SET(PARMETIS_IS_MANDATORY 0)
28   SET(PARMETIS_IS_OPTIONAL 1)
29 ENDIF(PARMETIS_IS_MANDATORY STREQUAL 0)
30 IF(PARMETIS_IS_OPTIONAL STREQUAL 0)
31   SET(PARMETIS_IS_MANDATORY 1)
32   SET(PARMETIS_IS_OPTIONAL 0)
33 ENDIF(PARMETIS_IS_OPTIONAL STREQUAL 0)
34 IF(NOT PARMETIS_IS_MANDATORY AND NOT PARMETIS_IS_OPTIONAL)
35   SET(PARMETIS_IS_MANDATORY 0)
36   SET(PARMETIS_IS_OPTIONAL 1)
37 ENDIF(NOT PARMETIS_IS_MANDATORY AND NOT PARMETIS_IS_OPTIONAL)
38
39 # ------
40
41 SET(MED_ENABLE_PARMETIS 1)
42 IF(WITHOUT_PARMETIS OR WITH_PARMETIS STREQUAL 0)
43   SET(MED_ENABLE_PARMETIS 0)
44   MESSAGE(STATUS "parmetis disabled from command line.")
45 ENDIF(WITHOUT_PARMETIS OR WITH_PARMETIS STREQUAL 0)
46
47 # ------
48
49 IF(MED_ENABLE_PARMETIS)
50   IF(WITH_PARMETIS)
51     SET(PARMETIS_ROOT_USER ${WITH_PARMETIS})
52   ENDIF(WITH_PARMETIS)
53   IF(NOT PARMETIS_ROOT_USER)
54     SET(PARMETIS_ROOT_USER $ENV{PARMETISDIR})
55   ENDIF(NOT PARMETIS_ROOT_USER)
56   IF(NOT PARMETIS_ROOT_USER)
57     SET(PARMETIS_ROOT_USER $ENV{PARMETIS_ROOT})
58   ENDIF(NOT PARMETIS_ROOT_USER)
59   IF(NOT PARMETIS_ROOT_USER)
60     SET(PARMETIS_ROOT_USER $ENV{PARMETISHOME})
61   ENDIF(NOT PARMETIS_ROOT_USER)
62 ENDIF(MED_ENABLE_PARMETIS)
63
64 # ------
65
66 IF(MED_ENABLE_PARMETIS)
67   IF(NOT PARMETIS_ROOT_USER)
68     FIND_PROGRAM(PARMETIS_MAINBINARY parmetis)
69     IF(PARMETIS_MAINBINARY)
70       MESSAGE(STATUS "parmetis found: ${PARMETIS_MAINBINARY}")
71       IF(PARMETIS_MAINBINARY STREQUAL /usr/bin/parmetis)
72       ELSE(PARMETIS_MAINBINARY STREQUAL /usr/bin/parmetis)
73         SET(PARMETIS_ROOT_USER ${PARMETIS_MAINBINARY})
74         GET_FILENAME_COMPONENT(PARMETIS_ROOT_USER ${PARMETIS_ROOT_USER} PATH)
75         GET_FILENAME_COMPONENT(PARMETIS_ROOT_USER ${PARMETIS_ROOT_USER} PATH)
76       ENDIF(PARMETIS_MAINBINARY STREQUAL /usr/bin/parmetis)
77     ELSE(PARMETIS_MAINBINARY)
78       MESSAGE(STATUS "parmetis not found, try to use WITH_PARMETIS option or PARMETIS_ROOT (or PARMETISHOME or PARMETISDIR) environment variable")
79       SET(MED_ENABLE_PARMETIS 0)
80     ENDIF(PARMETIS_MAINBINARY)
81   ENDIF(NOT PARMETIS_ROOT_USER)
82 ENDIF(MED_ENABLE_PARMETIS)
83
84 # ------
85
86 IF(MED_ENABLE_PARMETIS)
87   IF(PARMETIS_ROOT_USER)
88     SET(PARMETIS_FIND_PATHS_OPTION NO_DEFAULT_PATH)
89   ELSE(PARMETIS_ROOT_USER)
90     SET(PARMETIS_FIND_PATHS_OPTION)
91   ENDIF(PARMETIS_ROOT_USER)
92 ENDIF(MED_ENABLE_PARMETIS)
93
94 # ------
95
96 IF(MED_ENABLE_PARMETIS)
97   IF(PARMETIS_ROOT_USER)
98     SET(PARMETIS_INCLUDE_PATHS ${PARMETIS_ROOT_USER})
99   ELSE(PARMETIS_ROOT_USER)
100     SET(PARMETIS_INCLUDE_PATHS)
101   ENDIF(PARMETIS_ROOT_USER)
102   SET(PARMETIS_INCLUDE_TO_FIND parmetis.h)
103   FIND_PATH(PARMETIS_INCLUDE_DIR ${PARMETIS_INCLUDE_TO_FIND} PATHS ${PARMETIS_INCLUDE_PATHS} ${PARMETIS_FIND_PATHS_OPTION})
104   IF(PARMETIS_INCLUDE_DIR)
105     IF(PARMETIS_ROOT_USER)
106       SET(PARMETIS_INCLUDES -I${PARMETIS_INCLUDE_DIR})# to remove
107       SET(PARMETIS_INCLUDE_DIRS ${PARMETIS_INCLUDE_DIR})
108     ENDIF(PARMETIS_ROOT_USER)
109     SET(PARMETIS_INCLUDES -D_PARMETISUSEDLL_ ${PARMETIS_INCLUDES})# to remove
110     SET(PARMETIS_DEFINITIONS "-D_PARMETISUSEDLL_")
111     MESSAGE(STATUS "${PARMETIS_INCLUDE_TO_FIND} found in ${PARMETIS_INCLUDE_DIR}")
112   ELSE(PARMETIS_INCLUDE_DIR)
113     SET(MED_ENABLE_PARMETIS 0)
114     IF(PARMETIS_ROOT_USER)
115       MESSAGE(STATUS "${PARMETIS_INCLUDE_TO_FIND} not found in ${PARMETIS_INCLUDE_PATHS}, check your PARMETIS installation.")
116     ELSE(PARMETIS_ROOT_USER)
117       MESSAGE(STATUS "${PARMETIS_INCLUDE_TO_FIND} not found on system, try to use WITH_PARMETIS option or PARMETIS_ROOT (or PARMETISHOME or PARMETISDIR) environment variable.")
118     ENDIF(PARMETIS_ROOT_USER)
119   ENDIF(PARMETIS_INCLUDE_DIR)
120 ENDIF(MED_ENABLE_PARMETIS)
121
122 # ----
123
124 IF(MED_ENABLE_PARMETIS)
125   IF(PARMETIS_ROOT_USER)
126     IF(WINDOWS)
127       SET(PARMETIS_LIB_PATHS ${PARMETIS_ROOT_USER} ${PARMETIS_ROOT_USER})
128     ELSE(WINDOWS)
129       SET(PARMETIS_LIB_PATHS ${PARMETIS_ROOT_USER})
130     ENDIF(WINDOWS)
131   ELSE(PARMETIS_ROOT_USER)
132     SET(PARMETIS_LIB_PATHS)
133   ENDIF(PARMETIS_ROOT_USER)
134   IF(WINDOWS)
135     IF(CMAKE_BUILD_TYPE STREQUAL Release)
136       FIND_LIBRARY(PARMETIS_LIB parmetisdll PATHS ${PARMETIS_LIB_PATHS} ${PARMETIS_FIND_PATHS_OPTION})
137       FIND_LIBRARY(PARMETIS_LIB2 metisdll PATHS ${PARMETIS_LIB_PATHS} ${PARMETIS_FIND_PATHS_OPTION})
138     ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
139       FIND_LIBRARY(PARMETIS_LIB parmetisddll PATHS ${PARMETIS_LIB_PATHS} ${PARMETIS_FIND_PATHS_OPTION})
140       FIND_LIBRARY(PARMETIS_LIB2 metisddll PATHS ${PARMETIS_LIB_PATHS} ${PARMETIS_FIND_PATHS_OPTION})
141     ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
142   ELSE(WINDOWS)
143     FIND_LIBRARY(PARMETIS_LIB parmetis PATHS ${PARMETIS_LIB_PATHS} ${PARMETIS_FIND_PATHS_OPTION})
144     FIND_LIBRARY(PARMETIS_LIB2 metis PATHS ${PARMETIS_LIB_PATHS} ${PARMETIS_FIND_PATHS_OPTION})
145   ENDIF(WINDOWS)
146   SET(PARMETIS_LIBS)
147   IF(PARMETIS_LIB)
148     SET(PARMETIS_LIBS ${PARMETIS_LIBS} ${PARMETIS_LIB} ${PARMETIS_LIB2})
149     MESSAGE(STATUS "parmetis lib found: ${PARMETIS_LIB}")
150   ELSE(PARMETIS_LIB)
151     SET(MED_ENABLE_PARMETIS 0)
152     IF(PARMETIS_ROOT_USER)
153       MESSAGE(STATUS "parmetis lib not found in ${PARMETIS_LIB_PATHS}, check your PARMETIS installation.")
154     ELSE(PARMETIS_ROOT_USER)
155       MESSAGE(STATUS "parmetis lib not found on system, try to use WITH_PARMETIS option or PARMETIS_ROOT (or PARMETISHOME or PARMETISDIR) environment variable.")
156     ENDIF(PARMETIS_ROOT_USER)
157   ENDIF(PARMETIS_LIB)
158 ENDIF(MED_ENABLE_PARMETIS)
159
160 # ----
161
162 IF(MED_ENABLE_PARMETIS)
163   SET(PARMETIS_CPPFLAGS ${PARMETIS_INCLUDES} -DMED_ENABLE_PARMETIS)# to remove
164   SET(PARMETIS_DEFINITIONS "${PARMETIS_DEFINITIONS} -DMED_ENABLE_PARMETIS")
165 ELSE(MED_ENABLE_PARMETIS)
166   IF(PARMETIS_IS_MANDATORY)
167     MESSAGE(FATAL_ERROR "parmetis not found ... mandatory ... abort")
168   ELSE(PARMETIS_IS_MANDATORY)
169     MESSAGE(STATUS "parmetis not found ... optional ... disabled")
170   ENDIF(PARMETIS_IS_MANDATORY)
171 ENDIF(MED_ENABLE_PARMETIS)
172
173 # ------