Salome HOME
Even if MPI is activated, scotch can be activated
[tools/medcoupling.git] / adm_local / unix / config_files / check_parmetis.m4
1 dnl Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
2 dnl
3 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 dnl
6 dnl This library is free software; you can redistribute it and/or
7 dnl modify it under the terms of the GNU Lesser General Public
8 dnl License as published by the Free Software Foundation; either
9 dnl version 2.1 of the License, or (at your option) any later version.
10 dnl
11 dnl This library is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 dnl Lesser General Public License for more details.
15 dnl
16 dnl You should have received a copy of the GNU Lesser General Public
17 dnl License along with this library; if not, write to the Free Software
18 dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 dnl
20 dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 dnl
22
23 #for a future use...see further down AC_DEFUN([CHECK_PARMETISV4]
24
25 #for use with ParMETIS V3
26 AC_DEFUN([CHECK_PARMETIS],[
27 AC_REQUIRE([AC_PROG_CC])dnl
28 AC_REQUIRE([AC_PROG_CPP])dnl
29 AC_REQUIRE([CHECK_MPI])dnl
30
31 AC_CHECKING(for ParMETIS V3 Library)
32
33 AC_LANG_SAVE
34 AC_LANG_C
35
36 PARMETIS_CPPFLAGS=""
37 PARMETIS_LIBS=""
38 ENABLE_PARMETIS="no"
39
40 AC_CHECKING(for ParMETIS location)
41 AC_ARG_WITH(parmetis,
42             [  --with-parmetis=DIR      root directory path to ParMETIS library installation ],
43             [PARMETISDIR="$withval"
44              AC_MSG_RESULT("select $withval as path to ParMETIS library")])
45
46 if test "x${PARMETISDIR}" == "x" ; then
47   AC_MSG_RESULT(for \${PARMETIS_ROOT_DIR}: ${PARMETIS_ROOT_DIR})
48    # --with-parmetis option is not used
49    if test "x${PARMETIS_ROOT_DIR}" != "x" ; then
50       PARMETISDIR=${PARMETIS_ROOT_DIR}
51    fi
52 fi
53
54 AC_MSG_RESULT(\$PARMETISDIR = ${PARMETISDIR})
55
56 CPPFLAGS_old="${CPPFLAGS}"
57 LIBS_old=$LIBS
58
59 if test "x${PARMETISDIR}" != "x" ; then
60   PARMETIS_CPPFLAGS="-DMED_ENABLE_PARMETIS -I${PARMETISDIR} ${MPI_INCLUDES}"
61   PARMETIS_LIBS="-L${PARMETISDIR} -lparmetis -lmetis ${MPI_LIBS}"
62 fi
63
64 parmetis_ok=no
65 parmetis_headers_ok=no
66 parmetis_binaries_ok=no
67
68 dnl ParMETIS headers
69 AC_CHECKING(for ParMETIS headers)
70 CPPFLAGS="${CPPFLAGS_old} ${PARMETIS_CPPFLAGS}"
71
72 parmetis_include_dir_ok=yes
73 if test "x${PARMETISDIR}" != "x" ; then
74   AC_CHECK_FILE(${PARMETISDIR}/parmetis.h,
75                 parmetis_include_dir_ok=yes,
76                 parmetis_include_dir_ok=no)
77 fi
78
79 if test "x${parmetis_include_dir_ok}" = "xyes" ; then
80   AC_TRY_COMPILE([#include <parmetis.h>],
81                  [ParMETIS_V3_PartGeom(0,0,0,0,0)],
82                  parmetis_headers_ok=yes,
83                  parmetis_headers_ok=no)
84 fi
85
86 if test "x${parmetis_headers_ok}" = "xyes" ; then
87   AC_MSG_RESULT(\$PARMETIS_CPPFLAGS = ${PARMETIS_CPPFLAGS})
88 fi
89 AC_MSG_RESULT(for ParMETIS headers: $parmetis_headers_ok)
90
91 if test "x${parmetis_headers_ok}" = "xyes" ; then
92   dnl ParMETIS binaries
93   AC_CHECKING(for ParMETIS binaries)
94   parmetis_lib_dir_ok=yes
95   AC_CHECK_FILE(${PARMETISDIR}/libparmetis.a,
96                 parmetis_lib_dir_ok=yes,
97                 parmetis_lib_dir_ok=no)
98
99   if test "x${parmetis_lib_dir_ok}" = "xyes" ; then
100     LIBS="${LIBS_old} ${PARMETIS_LIBS}"
101     AC_TRY_LINK([#include <parmetis.h>],
102                 [ParMETIS_V3_PartGeom(0,0,0,0,0)],
103                 parmetis_binaries_ok=yes,
104                 parmetis_binaries_ok=no)
105   fi
106 fi
107
108 if test "x${parmetis_binaries_ok}" = "xyes" ; then
109   AC_MSG_RESULT(\$PARMETIS_LIBS = ${PARMETIS_LIBS})
110 fi
111 AC_MSG_RESULT(for ParMETIS binaries: $parmetis_binaries_ok)
112
113 CPPFLAGS="${CPPFLAGS_old}"
114 LIBS="${LIBS_old}"
115
116 if test "x${parmetis_headers_ok}" = "xyes" ; then
117   if test "x${parmetis_binaries_ok}" = "xyes" ; then
118     parmetis_ok=yes
119     ENABLE_PARMETIS="yes"
120     # ParMETIS includes METIS, so we redefine METIS cppflags and libs
121     # And metis.h #include parmetis.h + mpi.h
122     metis_ok=yes
123     ENABLE_METIS="yes"
124     METISDIR=${PARMETISDIR}
125     METIS_CPPFLAGS="-DMED_ENABLE_METIS -I${METISDIR}/METISLib ${PARMETIS_CPPFLAGS}"
126     METIS_LIBS="-L${METISDIR} -lmetis ${MPI_LIBS}"
127   fi
128 fi
129
130 AC_MSG_RESULT(for ParMETIS: $parmetis_ok)
131
132 AC_SUBST(ENABLE_PARMETIS)
133 AC_SUBST(PARMETIS_CPPFLAGS)
134 AC_SUBST(PARMETIS_LIBS)
135 AC_SUBST(ENABLE_METIS)
136 AC_SUBST(METIS_CPPFLAGS)
137 AC_SUBST(METIS_LIBS)
138
139 AC_LANG_RESTORE
140
141 ])dnl
142
143 #for a future use...
144 AC_DEFUN([CHECK_PARMETISV4],[
145 AC_REQUIRE([AC_PROG_CC])dnl
146 AC_REQUIRE([AC_PROG_CPP])dnl
147 AC_REQUIRE([CHECK_MPI])dnl
148
149 AC_CHECKING(for ParMETIS V4 Library)
150
151 AC_LANG_SAVE
152 AC_LANG_C
153
154 PARMETIS_CPPFLAGS=""
155 PARMETIS_LIBS=""
156 ENABLE_PARMETIS="no"
157
158 AC_CHECKING(for ParMETIS location)
159 AC_ARG_WITH(parmetis,
160             [  --with-parmetis=DIR      root directory path to ParMETIS library installation ],
161             [PARMETISDIR="$withval"
162              AC_MSG_RESULT("select $withval as path to ParMETIS library")])
163
164 AC_MSG_RESULT(\$PARMETISDIR = ${PARMETISDIR})
165
166 CPPFLAGS_old="${CPPFLAGS}"
167 LIBS_old=$LIBS
168
169 if test "x${PARMETISDIR}" != "x" ; then
170   PARMETIS_CPPFLAGS="-DMED_ENABLE_PARMETIS -I${PARMETISDIR}/include ${MPI_INCLUDES}"
171   PARMETIS_LIBS="-L${PARMETISDIR}/lib -lparmetis -lmetis ${MPI_LIBS}"
172 fi
173
174 parmetis_ok=no
175 parmetis_headers_ok=no
176 parmetis_binaries_ok=no
177
178 dnl ParMETIS headers
179 AC_CHECKING(for ParMETIS headers)
180 CPPFLAGS="${CPPFLAGS_old} ${PARMETIS_CPPFLAGS}"
181
182 parmetis_include_dir_ok=yes
183 if test "x${PARMETISDIR}" != "x" ; then
184   AC_CHECK_FILE(${PARMETISDIR}/include/parmetis.h,
185                 parmetis_headers_ok=yes,
186                 parmetis_headers_ok=no)
187 fi
188
189 if test "x${parmetis_headers_ok}" = "xyes" ; then
190   AC_MSG_RESULT(\$PARMETIS_CPPFLAGS = ${PARMETIS_CPPFLAGS})
191 fi
192 AC_MSG_RESULT(for ParMETIS headers: $parmetis_headers_ok)
193
194 if test "x${parmetis_headers_ok}" = "xyes" ; then
195   dnl ParMETIS binaries
196   AC_CHECKING(for ParMETIS binaries)
197   AC_CHECK_FILE(${PARMETISDIR}/lib/libparmetis.a,
198                 parmetis_binaries_ok=yes,
199                 parmetis_binaries_ok=no)
200 fi
201
202 if test "x${parmetis_binaries_ok}" = "xyes" ; then
203   AC_MSG_RESULT(\$PARMETIS_LIBS = ${PARMETIS_LIBS})
204 fi
205 AC_MSG_RESULT(for ParMETIS binaries: $parmetis_binaries_ok)
206
207 CPPFLAGS="${CPPFLAGS_old}"
208 LIBS="${LIBS_old}"
209
210 if test "x${parmetis_headers_ok}" = "xyes" ; then
211   if test "x${parmetis_binaries_ok}" = "xyes" ; then
212     parmetis_ok=yes
213     ENABLE_PARMETIS="yes"
214   fi
215 fi
216
217 AC_MSG_RESULT(for ParMETIS: $parmetis_ok)
218
219 AC_SUBST(ENABLE_PARMETIS)
220 AC_SUBST(PARMETIS_CPPFLAGS)
221 AC_SUBST(PARMETIS_LIBS)
222
223 AC_LANG_RESTORE
224
225 ])dnl