1 |
gezelter |
2190 |
dnl We need a function similar to AC_CHECK_LIB to check for C++ libraries. |
2 |
|
|
dnl AC_CHECK_CXX_LIB provides a similar interface like AC_CHECK_LIB |
3 |
|
|
dnl and uses AC_TRY_LINK. |
4 |
gezelter |
1490 |
dnl |
5 |
gezelter |
2190 |
dnl $1 library name (without "-l") |
6 |
|
|
dnl $2 object name to check for |
7 |
|
|
dnl $3 neccessary include directive(s) |
8 |
|
|
dnl $4 command to create object $2 |
9 |
|
|
dnl $5 yes-action |
10 |
|
|
dnl $6 no-action |
11 |
|
|
dnl $7 include dir for $3 (with -I) |
12 |
|
|
dnl $8 additional libraries to link with |
13 |
|
|
|
14 |
|
|
AC_DEFUN(AC_CHECK_CXX_LIB, AC_MSG_CHECKING([for $2 in -l$1]) |
15 |
|
|
save_CXXFLAGS_CHECK_CXX_LIB="$CXXFLAGS" |
16 |
|
|
CXXFLAGS="$CXXFLAGS $7" |
17 |
|
|
save_LIBS_CHECK_CXX_LIB="$LIBS" |
18 |
|
|
LIBS="-l$1 $8 $LIBS" |
19 |
|
|
[AC_TRY_LINK([$3], [$4], [AC_MSG_RESULT([yes]) |
20 |
|
|
$5], [AC_MSG_RESULT([no]) |
21 |
|
|
$6])] |
22 |
|
|
CXXFLAGS="$save_CXXFLAGS_CHECK_CXX_LIB" |
23 |
|
|
LIBS="$save_LIBS_CHECK_CXX_LIB")dnl |
24 |
|
|
dnl |
25 |
gezelter |
1490 |
dnl AC_CHECK_MODSUFFIX |
26 |
|
|
dnl |
27 |
|
|
AC_DEFUN([AC_CHECK_MODSUFFIX],[ |
28 |
|
|
|
29 |
|
|
AC_MSG_CHECKING(for module suffix) |
30 |
|
|
rm -f conftest* |
31 |
|
|
# Intel ifc compiler generates files by the name of work.pc and work.pcl (!) |
32 |
|
|
rm -f work* |
33 |
|
|
cat >conftest.f90 <<EOF |
34 |
|
|
module conftest |
35 |
|
|
integer n |
36 |
|
|
parameter (n=1) |
37 |
|
|
end module conftest |
38 |
|
|
EOF |
39 |
|
|
# SGI and absoft compilers generates module name in upper case! |
40 |
|
|
testname="conftest" |
41 |
|
|
modcase="lower" |
42 |
|
|
if $F90 -c conftest.f90 > conftest.out 2>&1 ; then |
43 |
|
|
MOD=`ls conftest* | grep -v conftest.f | grep -v conftest.o` |
44 |
|
|
MOD=`echo "$MOD" | sed -e 's/conftest\.//g'` |
45 |
|
|
if test -z "$MOD" ; then |
46 |
|
|
MOD=`ls CONFTEST* 2>/dev/null \ |
47 |
|
|
| grep -v CONFTEST.f | grep -v CONFTEST.o` |
48 |
|
|
MOD=`echo "$MOD" | sed -e 's/CONFTEST\.//g'` |
49 |
|
|
if test -n "$MOD" ; then |
50 |
|
|
testname="CONFTEST" |
51 |
|
|
modcase="upper" |
52 |
|
|
fi |
53 |
|
|
fi |
54 |
|
|
if test -z "$MOD" ; then |
55 |
|
|
AC_MSG_RESULT(unknown) |
56 |
|
|
# Use mod if we can't figure it out |
57 |
|
|
MOD="mod" |
58 |
|
|
else |
59 |
|
|
AC_MSG_RESULT($MOD) |
60 |
|
|
fi |
61 |
|
|
if test -s work.pcl ; then |
62 |
|
|
AC_MSG_WARN([Compiler generates auxillery files!]) |
63 |
|
|
fi |
64 |
|
|
else |
65 |
|
|
AC_MSG_RESULT(unknown) |
66 |
|
|
fi |
67 |
|
|
AC_SUBST(MOD) |
68 |
|
|
|
69 |
|
|
]) |
70 |
|
|
|
71 |
|
|
|
72 |
|
|
dnl |
73 |
|
|
dnl AC_CHECK_MODDIRFLAG |
74 |
|
|
dnl |
75 |
|
|
AC_DEFUN([AC_CHECK_MODDIRFLAG],[ |
76 |
|
|
|
77 |
|
|
# Check for module include path (some use -I, some (Solaris) use -M, some |
78 |
|
|
# (absoft) use -p). |
79 |
|
|
# Intel compilers use a wierd system: -cl,filename.pcl . If no file is |
80 |
|
|
# specified, work.pcl and work.pc are created. However, if you specify |
81 |
|
|
# a file, it must contain a the name of a file ending in .pc . Ugh! |
82 |
|
|
# Use the module made above |
83 |
|
|
AC_MSG_CHECKING(for module directory path flag) |
84 |
|
|
rm -f conftest* |
85 |
|
|
# Intel ifc compiler generates files by the name of work.pc and work.pcl (!) |
86 |
|
|
rm -f work* |
87 |
|
|
cat >conftest.f90 <<EOF |
88 |
|
|
module conftest |
89 |
|
|
integer n |
90 |
|
|
parameter (n=1) |
91 |
|
|
end module conftest |
92 |
|
|
EOF |
93 |
|
|
# SGI and absoft compilers generates module name in upper case! |
94 |
|
|
testname="conftest" |
95 |
|
|
if $F90 -c conftest.f90 > conftest.out 2>&1 ; then |
96 |
|
|
mod=`ls CONFTEST* 2>/dev/null | grep -v CONFTEST.f | grep -v CONFTEST.o` |
97 |
|
|
mod=`echo "$mod" | sed -e 's/CONFTEST\.//g'` |
98 |
|
|
if test -n "$mod" ; then |
99 |
|
|
testname="CONFTEST" |
100 |
|
|
fi |
101 |
|
|
madedir=0 |
102 |
|
|
if test ! -d conf ; then mkdir conf ; madedir=1; fi |
103 |
|
|
cp $testname.$MOD conf |
104 |
|
|
rm -f conftest* CONFTEST* |
105 |
|
|
cat >conftest1.f90 <<EOF |
106 |
|
|
program main |
107 |
|
|
use conftest |
108 |
|
|
print *, n |
109 |
|
|
end |
110 |
|
|
EOF |
111 |
|
|
F90_WORK_FILES_ARG="" |
112 |
|
|
F90MODINCSPEC="" |
113 |
|
|
if $F90 -c -Iconf conftest1.f90 > conftest.out 2>&1 ; then |
114 |
|
|
MODDIRFLAG="-I" |
115 |
|
|
F90MODINCSPEC="-I<dir>" |
116 |
|
|
AC_MSG_RESULT(-I) |
117 |
|
|
elif $F90 -c -Mconf conftest1.f90 >> conftest.out 2>&1 ; then |
118 |
|
|
MODDIRFLAG="-M" |
119 |
|
|
F90MODINCSPEC="-M<dir>" |
120 |
|
|
AC_MSG_RESULT(-M) |
121 |
|
|
elif $F90 -c -pconf conftest1.f90 >> conftest.out 2>&1 ; then |
122 |
|
|
MODDIRFLAG="-p" |
123 |
|
|
F90MODINCSPEC="-p<dir>" |
124 |
|
|
AC_MSG_RESULT(-p) |
125 |
|
|
elif test -s work.pc ; then |
126 |
|
|
cp work.pc conf/mpimod.pc |
127 |
|
|
echo "mpimod.pc" > conf/mpimod.pcl |
128 |
|
|
echo "`pwd`/conf/mpimod.pc" >> conf/mpimod.pcl |
129 |
|
|
if $F90 -c -cl,conf/mpimod.pcl conftest1.f >>conftest.out 2>&1 ; then |
130 |
|
|
MODDIRFLAG='-cl,mpimod.pcl' |
131 |
|
|
AC_MSG_RESULT([-cl,filename where filename contains a list of files and directories]) |
132 |
|
|
F90_WORK_FILES_ARG="-cl,mpimod.pcl" |
133 |
|
|
F90MODINCSPEC="-cl,<dir>/<file>mod.pcl" |
134 |
|
|
AC_SUBST(F90_WORK_FILES_ARG) |
135 |
|
|
else |
136 |
|
|
# The version of the Intel compiler that I have refuses to let |
137 |
|
|
# you put the "work catalog" list anywhere but the current |
138 |
|
|
# directory. For example, you cannot in |
139 |
|
|
: |
140 |
|
|
fi |
141 |
|
|
fi |
142 |
|
|
if test -z "MODDIRFLAG" ; then |
143 |
|
|
AC_MSG_RESULT(unknown) |
144 |
|
|
fi |
145 |
|
|
AC_SUBST(MODDIRFLAG) |
146 |
|
|
AC_SUBST(F90MODINCSPEC) |
147 |
|
|
rm -f conftest* conf/conftest* conf/CONFTEST* CONFTEST* conf/mpimod* |
148 |
|
|
if test $madedir = 1 ; then rmdir conf ; fi |
149 |
|
|
fi |
150 |
|
|
|
151 |
|
|
]) |
152 |
|
|
|
153 |
|
|
|
154 |
|
|
dnl |
155 |
|
|
dnl AC_CHECK_MPI_F90MOD |
156 |
|
|
dnl |
157 |
|
|
AC_DEFUN([AC_CHECK_MPI_F90MOD],[ |
158 |
|
|
|
159 |
|
|
AC_ARG_WITH(mpi_f90_mods, [ --with-mpi_f90_mods=<dir> |
160 |
|
|
Location where MPI f90 modules are installed ], |
161 |
|
|
mpi_f90_mods="$withval", |
162 |
|
|
mpi_f90_mods="/usr/local/include/f90choice") |
163 |
|
|
|
164 |
|
|
AC_MSG_CHECKING(for MPI F90 modules) |
165 |
|
|
AC_LANG_SAVE() |
166 |
|
|
AC_LANG([Fortran 90]) |
167 |
|
|
ac_save_F90FLAGS=$F90FLAGS |
168 |
|
|
|
169 |
|
|
AS_IF([test "$mpi_f90_mods"], [F90FLAGS="${F90FLAGS} ${MODDIRFLAG}${mpi_f90_mods}"]) |
170 |
|
|
_AC_COMPILE_IFELSE([ |
171 |
|
|
AC_LANG_PROGRAM([ |
172 |
|
|
use mpi |
173 |
|
|
integer :: ierr |
174 |
|
|
call MPI_Init(ierr) |
175 |
|
|
])], [HAVE_MPI_MOD=1], [HAVE_MPI_MOD=0]) |
176 |
|
|
|
177 |
|
|
F90FLAGS=$ac_save_F90FLAGS |
178 |
|
|
AC_LANG_RESTORE() |
179 |
|
|
|
180 |
|
|
if test "$HAVE_MPI_MOD" = 1; then |
181 |
|
|
AC_MSG_RESULT(yes) |
182 |
|
|
AC_DEFINE(MPI_MOD, 1, [have mpi module]) |
183 |
|
|
MPI_F90_MODS="${mpi_f90_mods}" |
184 |
|
|
AC_SUBST(MPI_F90_MODS) |
185 |
|
|
# The library name: |
186 |
|
|
if test -z "$MPI_LIB" ; then |
187 |
|
|
MPI_LIBNAME=-lmpich |
188 |
|
|
else |
189 |
|
|
MPI_LIBNAME="$MPI_LIB" |
190 |
|
|
fi |
191 |
|
|
if test -z "$MPIMODLIBNAME" ; then |
192 |
|
|
MPIMODLIBNAME="${MPI_LIBNAME}f90" |
193 |
|
|
fi |
194 |
|
|
AC_SUBST(MPIMODLIBNAME) |
195 |
|
|
else |
196 |
|
|
AC_MSG_RESULT(no) |
197 |
|
|
AC_MSG_WARN([Couldn't locate MPI F90 Modules]) |
198 |
|
|
fi |
199 |
|
|
|
200 |
|
|
]) |
201 |
|
|
|
202 |
|
|
|
203 |
|
|
|
204 |
|
|
|
205 |
|
|
dnl |
206 |
|
|
dnl AM_PATH_SPRNG |
207 |
|
|
dnl |
208 |
|
|
AC_DEFUN([AM_PATH_SPRNG],[ |
209 |
|
|
|
210 |
|
|
AC_ARG_WITH(sprng_prefix, [ --with-sprng_prefix=PREFIX |
211 |
|
|
Prefix where SPRNG is installed ], |
212 |
|
|
sprng_prefix="$withval", |
213 |
|
|
sprng_prefix="/usr/local") |
214 |
|
|
AC_ARG_WITH(sprng-libdir, [ --with-sprng-libdir=PREFIX SPRNG library directory], |
215 |
|
|
sprng_libdir="$withval", |
216 |
|
|
sprng_libdir="/usr/local/lib") |
217 |
|
|
AC_ARG_WITH(sprng-include, [ --with-sprng-include=PREFIX |
218 |
|
|
SPRNG include directory], |
219 |
|
|
sprng_include="$withval", |
220 |
|
|
sprng_include="/usr/local/include/sprng") |
221 |
|
|
|
222 |
|
|
if test x$sprng_libdir = x ; then |
223 |
|
|
sprng_libdir=${sprng_prefix}/lib |
224 |
|
|
fi |
225 |
|
|
|
226 |
|
|
if test x$sprng_include = x ; then |
227 |
|
|
sprng_include=${sprng_prefix}/include |
228 |
|
|
fi |
229 |
|
|
|
230 |
|
|
AC_MSG_CHECKING(for SPRNG include files in $sprng_include) |
231 |
|
|
if test -f ${sprng_include}/sprng.h; then |
232 |
|
|
have_sprngincl=yes |
233 |
|
|
AC_MSG_RESULT(yes) |
234 |
|
|
else |
235 |
|
|
have_sprngincl=no |
236 |
|
|
AC_MSG_RESULT(no) |
237 |
|
|
AC_MSG_ERROR(Could not locate the SPRNG include files) |
238 |
|
|
fi |
239 |
|
|
|
240 |
|
|
AC_MSG_CHECKING(for SPRNG libraries in $sprng_libdir) |
241 |
|
|
if test -f ${sprng_libdir}/libsprng.a; then |
242 |
|
|
have_sprnglib=yes |
243 |
|
|
AC_MSG_RESULT(yes) |
244 |
|
|
else |
245 |
|
|
have_sprnglib=no |
246 |
|
|
AC_MSG_RESULT(no) |
247 |
|
|
AC_MSG_ERROR(Could not locate the SPRNG libraries) |
248 |
|
|
fi |
249 |
|
|
|
250 |
|
|
AC_LANG_SAVE() |
251 |
|
|
AC_LANG([C]) |
252 |
|
|
ac_save_CPPFLAGS=$CPPFLAGS |
253 |
|
|
CPPFLAGS="${CPPFLAGS} -I${sprng_include}" |
254 |
|
|
ac_save_LDFLAGS=$LDFLAGS |
255 |
|
|
LDFLAGS="${LDFLAGS} -L${sprng_libdir} -lsprng" |
256 |
|
|
AC_CHECK_HEADER(sprng.h, [ |
257 |
|
|
AC_CHECK_LIB(sprng, |
258 |
|
|
init_rng, |
259 |
|
|
[SPRNG_LIBDIR="${sprng_libdir}" |
260 |
|
|
SPRNG_LIB="-lsprng" SPRNG_INC="-I${sprng_include}" |
261 |
|
|
HAVE_SPRNG="yes"])]) |
262 |
|
|
CPPFLAGS=$ac_save_CPPFLAGS |
263 |
|
|
LDFLAGS=$ac_save_LDFLAGS |
264 |
|
|
AC_LANG_RESTORE() |
265 |
|
|
|
266 |
|
|
if test x_$HAVE_SPRNG != x_yes; then |
267 |
|
|
AC_MSG_ERROR(Can't build with SPRNG) |
268 |
|
|
fi |
269 |
|
|
AC_SUBST(SPRNG_LIBDIR) |
270 |
|
|
AC_SUBST(SPRNG_LIB) |
271 |
|
|
AC_SUBST(SPRNG_INC) |
272 |
|
|
AC_SUBST(HAVE_SPRNG) |
273 |
|
|
]) |
274 |
|
|
|
275 |
|
|
dnl |
276 |
|
|
dnl CHECK_MKL |
277 |
|
|
dnl |
278 |
|
|
AC_DEFUN([CHECK_MKL], |
279 |
|
|
[AC_MSG_CHECKING(if MKL is wanted) |
280 |
|
|
AC_ARG_WITH(mkl, |
281 |
|
|
[ --with-mkl Do we want MKL [will check /usr/local/intel/mkl61 /opt/intel/mkl61]], |
282 |
|
|
[ AC_MSG_RESULT(yes) |
283 |
|
|
for dir in $withval /usr/local/intel/mkl61 /opt/intel/mkl61; do |
284 |
|
|
mkldir="$dir" |
285 |
|
|
if test -f "$dir/include/mkl.h"; then |
286 |
|
|
found_mkl="yes"; |
287 |
|
|
break; |
288 |
|
|
fi |
289 |
|
|
done |
290 |
|
|
if test x_$found_mkl != x_yes; then |
291 |
|
|
AC_MSG_ERROR(Cannot find MKL includes) |
292 |
|
|
else |
293 |
|
|
printf "MKL includes found in $mkldir/include\n"; |
294 |
|
|
fi |
295 |
|
|
|
296 |
|
|
AC_LANG_SAVE() |
297 |
|
|
AC_LANG([C]) |
298 |
|
|
ac_save_CPPFLAGS=$CPPFLAGS |
299 |
|
|
CPPFLAGS="${CPPFLAGS} -I${mkldir}/include" |
300 |
|
|
ac_save_LDFLAGS=$LDFLAGS |
301 |
|
|
LDFLAGS="${LDFLAGS} -L${mkldir}/lib/32 -lmkl -lvml -lguide" |
302 |
|
|
AC_CHECK_HEADER(mkl.h, [ |
303 |
|
|
AC_CHECK_LIB(mkl, |
304 |
|
|
vslNewStream, |
305 |
|
|
[MKL_LIBDIR="${mkldir}/lib/32", |
306 |
|
|
MKL_LIB="-lmkl -lvml -lguide", |
307 |
|
|
HAVE_MKL="yes"]) |
308 |
|
|
], [MKL_INC="-I${mkldir}/include"]) |
309 |
|
|
CPPFLAGS=$ac_save_CPPFLAGS |
310 |
|
|
LDFLAGS=$ac_save_LDFLAGS |
311 |
|
|
AC_LANG_RESTORE() |
312 |
|
|
|
313 |
|
|
if test x_$HAVE_MKL != x_yes; then |
314 |
|
|
AC_MSG_ERROR(Can't build with MKL) |
315 |
|
|
fi |
316 |
|
|
AC_SUBST(MKL_LIBDIR) |
317 |
|
|
AC_SUBST(MKL_LIB) |
318 |
|
|
AC_SUBST(MKL_INC) |
319 |
|
|
AC_SUBST(HAVE_MKL) |
320 |
|
|
], |
321 |
|
|
[ |
322 |
|
|
AC_MSG_RESULT(no) |
323 |
|
|
]) |
324 |
|
|
]) |
325 |
|
|
dnl |
326 |
|
|
|
327 |
|
|
|
328 |
|
|
AC_DEFUN(ACX_CHECK_CC_FLAGS, |
329 |
|
|
[ |
330 |
|
|
AC_REQUIRE([AC_PROG_CC]) |
331 |
|
|
AC_CACHE_CHECK(whether ${CC-cc} accepts $1, ac_$2, |
332 |
|
|
[echo 'void f(){}' > conftest.c |
333 |
|
|
if test -z "`${CC-cc} $1 -c conftest.c 2>&1`"; then |
334 |
|
|
ac_$2=yes |
335 |
|
|
else |
336 |
|
|
ac_$2=no |
337 |
|
|
fi |
338 |
|
|
rm -f conftest* |
339 |
|
|
]) |
340 |
|
|
if test "$ac_$2" = yes; then |
341 |
|
|
: |
342 |
|
|
$3 |
343 |
|
|
else |
344 |
|
|
: |
345 |
|
|
$4 |
346 |
|
|
fi |
347 |
|
|
]) |
348 |
|
|
|
349 |
|
|
AC_DEFUN(ACX_CHECK_CXX_FLAGS, |
350 |
|
|
[ |
351 |
|
|
AC_REQUIRE([AC_PROG_CXX]) |
352 |
|
|
AC_CACHE_CHECK(whether ${CXX-c++} accepts $1, ac_$2, |
353 |
|
|
[echo 'void f(){}' > conftest.cpp |
354 |
|
|
if test -z "`${CXX-c++} $1 -c conftest.cpp 2>&1`"; then |
355 |
|
|
ac_$2=yes |
356 |
|
|
else |
357 |
|
|
ac_$2=no |
358 |
|
|
fi |
359 |
|
|
rm -f conftest* |
360 |
|
|
]) |
361 |
|
|
if test "$ac_$2" = yes; then |
362 |
|
|
: |
363 |
|
|
$3 |
364 |
|
|
else |
365 |
|
|
: |
366 |
|
|
$4 |
367 |
|
|
fi |
368 |
|
|
]) |
369 |
|
|
|
370 |
|
|
dnl ------------------------------------------------------------------------- |
371 |
|
|
dnl ACX_CHECK_F90_FLAGS() |
372 |
|
|
dnl |
373 |
|
|
dnl Check for optimizer flags the Fortran compiler can use. |
374 |
|
|
dnl |
375 |
|
|
AC_DEFUN(ACX_CHECK_F90_FLAGS, |
376 |
|
|
[ |
377 |
|
|
AC_CACHE_CHECK(whether ${F90-f90} accepts $1, ac_$2, |
378 |
|
|
[ |
379 |
|
|
AC_LANG_SAVE |
380 |
|
|
AC_LANG([Fortran 90]) |
381 |
|
|
echo 'program main' > conftest.$ac_ext |
382 |
|
|
echo 'end program main' >> conftest.$ac_ext |
383 |
|
|
ac_compile='${F90-f90} -c $1 $F90FLAGS conftest.$ac_ext 1>&AC_FD_CC' |
384 |
|
|
if AC_TRY_EVAL(ac_compile); then |
385 |
|
|
ac_$2=yes |
386 |
|
|
else |
387 |
|
|
ac_$2=no |
388 |
|
|
fi |
389 |
|
|
rm -f conftest* |
390 |
|
|
AC_LANG_RESTORE() |
391 |
|
|
]) |
392 |
|
|
if test "$ac_$2" = yes; then |
393 |
|
|
: |
394 |
|
|
$3 |
395 |
|
|
else |
396 |
|
|
: |
397 |
|
|
$4 |
398 |
|
|
fi |
399 |
|
|
]) |
400 |
|
|
|
401 |
|
|
AC_DEFUN(ACX_PROG_GCC_VERSION, |
402 |
|
|
[ |
403 |
|
|
AC_REQUIRE([AC_PROG_CC]) |
404 |
|
|
AC_CACHE_CHECK(whether we are using gcc $1.$2 or later, ac_cv_prog_gcc_$1_$2, |
405 |
|
|
[ |
406 |
|
|
dnl The semicolon after "yes" below is to pacify NeXT's syntax-checking cpp. |
407 |
|
|
cat > conftest.c <<EOF |
408 |
|
|
#ifdef __GNUC__ && !defined (__INTEL_COMPILER) |
409 |
|
|
# if (__GNUC__ > $1) || (__GNUC__ == $1 && __GNUC_MINOR__ >= $2) |
410 |
|
|
yes; |
411 |
|
|
# endif |
412 |
|
|
#endif |
413 |
|
|
EOF |
414 |
|
|
if AC_TRY_COMMAND(${CC-cc} -E conftest.c) | egrep yes >/dev/null 2>&1; then |
415 |
|
|
ac_cv_prog_gcc_$1_$2=yes |
416 |
|
|
else |
417 |
|
|
ac_cv_prog_gcc_$1_$2=no |
418 |
|
|
fi |
419 |
|
|
]) |
420 |
|
|
if test "$ac_cv_prog_gcc_$1_$2" = yes; then |
421 |
|
|
: |
422 |
|
|
$3 |
423 |
|
|
else |
424 |
|
|
: |
425 |
|
|
$4 |
426 |
|
|
fi |
427 |
|
|
]) |
428 |
|
|
|
429 |
|
|
AC_DEFUN(ACX_PROG_GXX_VERSION, |
430 |
|
|
[ |
431 |
|
|
AC_REQUIRE([AC_PROG_CXX]) |
432 |
|
|
AC_CACHE_CHECK(whether we are using g++ $1.$2 or later, ac_cv_prog_gxx_$1_$2, |
433 |
|
|
[ |
434 |
|
|
dnl The semicolon after "yes" below is to pacify NeXT's syntax-checking cpp. |
435 |
|
|
cat > conftest.cpp <<EOF |
436 |
|
|
#ifdef __GNUC__ && !defined (__INTEL_COMPILER) |
437 |
|
|
# if (__GNUC__ > $1) || (__GNUC__ == $1 && __GNUC_MINOR__ >= $2) |
438 |
|
|
yes; |
439 |
|
|
# endif |
440 |
|
|
#endif |
441 |
|
|
EOF |
442 |
|
|
if AC_TRY_COMMAND(${CXX-c++} -E conftest.cpp) | egrep yes >/dev/null 2>&1; then |
443 |
|
|
ac_cv_prog_gxx_$1_$2=yes |
444 |
|
|
else |
445 |
|
|
ac_cv_prog_gxx_$1_$2=no |
446 |
|
|
fi |
447 |
|
|
]) |
448 |
|
|
if test "$ac_cv_prog_gxx_$1_$2" = yes; then |
449 |
|
|
: |
450 |
|
|
$3 |
451 |
|
|
else |
452 |
|
|
: |
453 |
|
|
$4 |
454 |
|
|
fi |
455 |
|
|
]) |
456 |
|
|
|
457 |
|
|
AC_DEFUN(ACX_PROG_REALLY_GCC, |
458 |
|
|
[ |
459 |
|
|
AC_REQUIRE([AC_PROG_CC]) |
460 |
|
|
AC_CACHE_CHECK(whether we are *really* using GNU cc, ac_cv_prog_really_gcc, |
461 |
|
|
[ |
462 |
|
|
dnl The semicolon after "yes" below is to pacify NeXT's syntax-checking cpp. |
463 |
|
|
cat > conftest.c <<EOF |
464 |
|
|
#ifdef __GNUC__ |
465 |
|
|
#ifndef __INTEL_COMPILER |
466 |
|
|
yes; |
467 |
|
|
#endif |
468 |
|
|
#endif |
469 |
|
|
EOF |
470 |
|
|
if AC_TRY_COMMAND(${CC-cc} -E conftest.c) | egrep yes >/dev/null 2>&1; then |
471 |
|
|
ac_cv_prog_really_gcc=yes |
472 |
|
|
else |
473 |
|
|
ac_cv_prog_really_gcc=no |
474 |
|
|
fi |
475 |
|
|
]) |
476 |
|
|
if test "$ac_cv_prog_really_gcc" = yes; then |
477 |
|
|
: |
478 |
|
|
$1 |
479 |
|
|
else |
480 |
|
|
: |
481 |
|
|
$2 |
482 |
|
|
fi |
483 |
|
|
]) |
484 |
|
|
|
485 |
|
|
AC_DEFUN(ACX_PROG_REALLY_GXX, |
486 |
|
|
[ |
487 |
|
|
AC_REQUIRE([AC_PROG_CXX]) |
488 |
|
|
AC_CACHE_CHECK(whether we are *really* using GNU c++, ac_cv_prog_really_gxx, |
489 |
|
|
[ |
490 |
|
|
dnl The semicolon after "yes" below is to pacify NeXT's syntax-checking cpp. |
491 |
|
|
cat > conftest.cpp <<EOF |
492 |
|
|
#ifdef __GNUC__ |
493 |
|
|
#ifndef __INTEL_COMPILER |
494 |
|
|
yes; |
495 |
|
|
#endif |
496 |
|
|
#endif |
497 |
|
|
EOF |
498 |
|
|
if AC_TRY_COMMAND(${CXX-c++} -E conftest.cpp) | egrep yes >/dev/null 2>&1; then |
499 |
|
|
ac_cv_prog_really_gxx=yes |
500 |
|
|
else |
501 |
|
|
ac_cv_prog_really_gxx=no |
502 |
|
|
fi |
503 |
|
|
]) |
504 |
|
|
if test "$ac_cv_prog_really_gxx" = yes; then |
505 |
|
|
: |
506 |
|
|
$1 |
507 |
|
|
else |
508 |
|
|
: |
509 |
|
|
$2 |
510 |
|
|
fi |
511 |
|
|
]) |
512 |
|
|
|
513 |
|
|
|
514 |
|
|
AC_DEFUN(ACX_PROG_CC_MAXOPT, |
515 |
|
|
[ |
516 |
|
|
AC_REQUIRE([AC_PROG_CC]) |
517 |
|
|
AC_REQUIRE([AC_CANONICAL_HOST]) |
518 |
|
|
|
519 |
|
|
ACX_PROG_REALLY_GCC |
520 |
|
|
|
521 |
|
|
# Try to determine "good" native compiler flags if none specified on command |
522 |
|
|
# line |
523 |
|
|
if test "$ac_test_CFLAGS" != "set"; then |
524 |
|
|
CFLAGS="" |
525 |
|
|
case "${host_cpu}-${host_os}" in |
526 |
|
|
|
527 |
|
|
*linux*) if test "$CC" = icc; then |
528 |
|
|
CFLAGS="-O" |
529 |
|
|
fi;; |
530 |
|
|
sparc-solaris2*) if test "$CC" = cc; then |
531 |
|
|
CFLAGS="-native -fast -xO5 -dalign" |
532 |
|
|
fi;; |
533 |
|
|
|
534 |
|
|
alpha*-osf*) if test "$CC" = cc; then |
535 |
|
|
CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host -arch host -std1" |
536 |
|
|
fi;; |
537 |
|
|
|
538 |
|
|
hppa*-hpux*) if test "$CC" = cc; then |
539 |
|
|
CFLAGS="-Ae +O3 +Oall" |
540 |
|
|
fi;; |
541 |
|
|
|
542 |
|
|
rs6000*-aix*) if test "$CC" = cc -o "$CC" = xlc; then |
543 |
|
|
CFLAGS="-O3 -qtune=auto -qansialias -w" |
544 |
|
|
fi;; |
545 |
|
|
powerpc*-aix*) |
546 |
|
|
if test "$CC" = cc -o "$CC" = xlc; then |
547 |
|
|
CFLAGS="-O3 -qtune=auto -qansialias -w" |
548 |
|
|
echo "*******************************************************" |
549 |
|
|
echo "* You have AIX on an unknown powerpc system. It is *" |
550 |
|
|
echo "* recommended that you use *" |
551 |
|
|
echo "* *" |
552 |
|
|
echo "* CFLAGS=-O3 -qarch=ppc -qtune=xxx -qansialias -w *" |
553 |
|
|
echo "* ^^^ *" |
554 |
|
|
echo "* where xxx is 601, 603, 604, or whatever kind of *" |
555 |
|
|
echo "* PowerPC CPU you have. For more info, man cc. *" |
556 |
|
|
echo "*******************************************************" |
557 |
|
|
fi;; |
558 |
|
|
*darwin*) |
559 |
|
|
if test "$CC" = xlc -o "$CC" = cc; then |
560 |
chuckv |
1579 |
CFLAGS="-qthreaded -O -qtune=auto -qarch=auto -qunroll=auto -qaltivec" |
561 |
gezelter |
1490 |
fi;; |
562 |
|
|
esac |
563 |
|
|
|
564 |
|
|
# use default flags for gcc on all systems |
565 |
|
|
if test $ac_cv_prog_really_gcc = yes; then |
566 |
|
|
CFLAGS="-O6 -fomit-frame-pointer -Wall -W -Wcast-qual -Wpointer-arith -Wcast-align -pedantic" |
567 |
|
|
fi |
568 |
|
|
|
569 |
|
|
# test for gcc-specific flags: |
570 |
|
|
if test $ac_cv_prog_really_gcc = yes; then |
571 |
|
|
# -malign-double for x86 systems |
572 |
|
|
ACX_CHECK_CC_FLAGS(-malign-double,align_double, CFLAGS="$CFLAGS -malign-double") |
573 |
|
|
# -fstrict-aliasing for gcc-2.95+ |
574 |
|
|
ACX_CHECK_CC_FLAGS(-fstrict-aliasing,fstrict_aliasing, CFLAGS="$CFLAGS -fstrict-aliasing") |
575 |
|
|
fi |
576 |
|
|
|
577 |
|
|
CPU_FLAGS="" |
578 |
|
|
if test $ac_cv_prog_really_gcc = yes; then |
579 |
|
|
dnl try to guess correct CPU flags, at least for linux |
580 |
|
|
case "${host_cpu}" in |
581 |
|
|
i586*) ACX_CHECK_CC_FLAGS(-mcpu=pentium,cpu_pentium, |
582 |
|
|
[CPU_FLAGS=-mcpu=pentium], |
583 |
|
|
[ACX_CHECK_CC_FLAGS(-mpentium,pentium, |
584 |
|
|
[CPU_FLAGS=-mpentium])]) |
585 |
|
|
;; |
586 |
|
|
i686*) ACX_CHECK_CC_FLAGS(-mcpu=pentiumpro,cpu_pentiumpro, |
587 |
|
|
[CPU_FLAGS=-mcpu=pentiumpro], |
588 |
|
|
[ACX_CHECK_CC_FLAGS(-mpentiumpro,pentiumpro, |
589 |
|
|
[CPU_FLAGS=-mpentiumpro])]) |
590 |
|
|
;; |
591 |
|
|
powerpc*) |
592 |
|
|
cputype=`(grep cpu /proc/cpuinfo | head -1 | cut -d: -f2 | sed 's/ //g') 2> /dev/null` |
593 |
|
|
is60x=`echo $cputype | egrep "^60[0-9]e?$"` |
594 |
|
|
if test -n "$is60x"; then |
595 |
|
|
ACX_CHECK_CC_FLAGS(-mcpu=$cputype,m_cpu_60x, |
596 |
|
|
CPU_FLAGS=-mcpu=$cputype) |
597 |
|
|
elif test "$cputype" = 750; then |
598 |
|
|
ACX_PROG_GCC_VERSION(2,95, |
599 |
|
|
ACX_CHECK_CC_FLAGS(-mcpu=750,m_cpu_750, |
600 |
|
|
CPU_FLAGS=-mcpu=750)) |
601 |
|
|
fi |
602 |
|
|
if test -z "$CPU_FLAGS"; then |
603 |
|
|
ACX_CHECK_CC_FLAGS(-mcpu=powerpc,m_cpu_powerpc, |
604 |
|
|
CPU_FLAGS=-mcpu=powerpc) |
605 |
|
|
fi |
606 |
|
|
if test -z "$CPU_FLAGS"; then |
607 |
|
|
ACX_CHECK_CC_FLAGS(-mpowerpc,m_powerpc, |
608 |
|
|
CPU_FLAGS=-mpowerpc) |
609 |
|
|
fi |
610 |
|
|
esac |
611 |
|
|
fi |
612 |
|
|
|
613 |
|
|
if test -n "$CPU_FLAGS"; then |
614 |
|
|
CFLAGS="$CFLAGS $CPU_FLAGS" |
615 |
|
|
fi |
616 |
|
|
|
617 |
|
|
if test -z "$CFLAGS"; then |
618 |
|
|
echo "" |
619 |
|
|
echo "********************************************************" |
620 |
|
|
echo "* WARNING: Don't know the best CFLAGS for this system *" |
621 |
|
|
echo "* Use make CFLAGS=..., or edit the top level Makefile *" |
622 |
|
|
echo "* (otherwise, a default of CFLAGS=-O3 will be used) *" |
623 |
|
|
echo "********************************************************" |
624 |
|
|
echo "" |
625 |
|
|
CFLAGS="-O3" |
626 |
|
|
fi |
627 |
|
|
|
628 |
|
|
ACX_CHECK_CC_FLAGS(${CFLAGS}, guessed_cflags, , [ |
629 |
|
|
echo "" |
630 |
|
|
echo "********************************************************" |
631 |
|
|
echo "* WARNING: The guessed CFLAGS don't seem to work with *" |
632 |
|
|
echo "* your compiler. *" |
633 |
|
|
echo "* Use make CFLAGS=..., or edit the top level Makefile *" |
634 |
|
|
echo "********************************************************" |
635 |
|
|
echo "" |
636 |
|
|
CFLAGS="" |
637 |
|
|
]) |
638 |
|
|
|
639 |
|
|
fi |
640 |
|
|
]) |
641 |
|
|
|
642 |
|
|
AC_DEFUN(ACX_PROG_CXX_MAXOPT, |
643 |
|
|
[ |
644 |
|
|
AC_REQUIRE([AC_PROG_CXX]) |
645 |
|
|
AC_REQUIRE([AC_CANONICAL_HOST]) |
646 |
|
|
|
647 |
|
|
ACX_PROG_REALLY_GXX |
648 |
|
|
|
649 |
|
|
# Try to determine "good" native compiler flags if none specified on command |
650 |
|
|
# line |
651 |
|
|
if test "$ac_test_CXXFLAGS" != "set"; then |
652 |
|
|
CXXFLAGS="" |
653 |
|
|
case "${host_cpu}-${host_os}" in |
654 |
|
|
|
655 |
|
|
*linux*) if test "$CXX" = icc -o "$CXX" = icpc; then |
656 |
|
|
CXXFLAGS="-O" |
657 |
|
|
fi;; |
658 |
|
|
sparc-solaris2*) if test "$CXX" = CC; then |
659 |
|
|
CXXFLAGS="-native -fast -xO5 -dalign" |
660 |
|
|
fi;; |
661 |
|
|
rs6000*-aix*) if test "$CXX" = xlC; then |
662 |
|
|
CXXFLAGS="-O3 -qarch=pwrx -qtune=pwrx -qansialias -w" |
663 |
|
|
fi;; |
664 |
|
|
powerpc*-aix*) |
665 |
|
|
if test "$CXX" = xlC; then |
666 |
|
|
CXXFLAGS="-O3 -qarch=ppc -qansialias -w" |
667 |
|
|
echo "*******************************************************" |
668 |
|
|
echo "* You have AIX on an unknown powerpc system. It is *" |
669 |
|
|
echo "* recommended that you use *" |
670 |
|
|
echo "* *" |
671 |
|
|
echo "* CXXFLAGS=-O3 -qarch=ppc -qtune=xxx -qansialias -w *" |
672 |
|
|
echo "* ^^^ *" |
673 |
|
|
echo "* where xxx is 601, 603, 604, or whatever kind of *" |
674 |
|
|
echo "* PowerPC CPU you have. For more info, man cc. *" |
675 |
|
|
echo "*******************************************************" |
676 |
|
|
fi;; |
677 |
|
|
*darwin*) |
678 |
gezelter |
2022 |
if test "$CXX" = xlc++ -o "$CXX" = xlC ; then |
679 |
chuckv |
1579 |
CXXFLAGS="-qthreaded -O -qtune=auto -qarch=auto -qunroll=auto -qaltivec" |
680 |
gezelter |
1490 |
fi;; |
681 |
|
|
esac |
682 |
|
|
|
683 |
|
|
# use default flags for gcc on all systems |
684 |
|
|
if test $ac_cv_prog_really_gxx = yes; then |
685 |
|
|
CXXFLAGS="-O6 -fomit-frame-pointer -Wall -W -Wcast-qual -Wpointer-arith -Wcast-align -pedantic" |
686 |
|
|
fi |
687 |
|
|
|
688 |
|
|
# test for gcc-specific flags: |
689 |
|
|
if test $ac_cv_prog_really_gxx = yes; then |
690 |
|
|
# -malign-double for x86 systems |
691 |
|
|
ACX_CHECK_CXX_FLAGS(-malign-double,align_double, CXXFLAGS="$CXXFLAGS -malign-double") |
692 |
|
|
# -fstrict-aliasing for gcc-2.95+ |
693 |
|
|
ACX_CHECK_CXX_FLAGS(-fstrict-aliasing,fstrict_aliasing, CXXFLAGS="$CXXFLAGS -fstrict-aliasing") |
694 |
|
|
fi |
695 |
|
|
|
696 |
|
|
CPU_FLAGS="" |
697 |
|
|
if test $ac_cv_prog_really_gxx = yes; then |
698 |
|
|
dnl try to guess correct CPU flags, at least for linux |
699 |
|
|
case "${host_cpu}" in |
700 |
|
|
i586*) ACX_CHECK_CXX_FLAGS(-mcpu=pentium,cpu_pentium, |
701 |
|
|
[CPU_FLAGS=-mcpu=pentium], |
702 |
|
|
[ACX_CHECK_CXX_FLAGS(-mpentium,pentium, |
703 |
|
|
[CPU_FLAGS=-mpentium])]) |
704 |
|
|
;; |
705 |
|
|
i686*) ACX_CHECK_CXX_FLAGS(-mcpu=pentiumpro,cpu_pentiumpro, |
706 |
|
|
[CPU_FLAGS=-mcpu=pentiumpro], |
707 |
|
|
[ACX_CHECK_CXX_FLAGS(-mpentiumpro,pentiumpro, |
708 |
|
|
[CPU_FLAGS=-mpentiumpro])]) |
709 |
|
|
;; |
710 |
|
|
powerpc*) |
711 |
|
|
cputype=`(grep cpu /proc/cpuinfo | head -1 | cut -d: -f2 | sed 's/ //g') 2> /dev/null` |
712 |
|
|
is60x=`echo $cputype | egrep "^60[0-9]e?$"` |
713 |
|
|
if test -n "$is60x"; then |
714 |
|
|
ACX_CHECK_CXX_FLAGS(-mcpu=$cputype,m_cpu_60x, |
715 |
|
|
CPU_FLAGS=-mcpu=$cputype) |
716 |
|
|
elif test "$cputype" = 750; then |
717 |
|
|
ACX_PROG_GXX_VERSION(2,95, |
718 |
|
|
ACX_CHECK_CXX_FLAGS(-mcpu=750,m_cpu_750, |
719 |
|
|
CPU_FLAGS=-mcpu=750)) |
720 |
|
|
fi |
721 |
|
|
if test -z "$CPU_FLAGS"; then |
722 |
|
|
ACX_CHECK_CXX_FLAGS(-mcpu=powerpc,m_cpu_powerpc, |
723 |
|
|
CPU_FLAGS=-mcpu=powerpc) |
724 |
|
|
fi |
725 |
|
|
if test -z "$CPU_FLAGS"; then |
726 |
|
|
ACX_CHECK_CXX_FLAGS(-mpowerpc,m_powerpc, |
727 |
|
|
CPU_FLAGS=-mpowerpc) |
728 |
|
|
fi |
729 |
|
|
esac |
730 |
|
|
fi |
731 |
|
|
|
732 |
|
|
if test -n "$CPU_FLAGS"; then |
733 |
|
|
CXXFLAGS="$CXXFLAGS $CPU_FLAGS" |
734 |
|
|
fi |
735 |
|
|
|
736 |
|
|
if test -z "$CXXFLAGS"; then |
737 |
|
|
echo "" |
738 |
|
|
echo "**********************************************************" |
739 |
|
|
echo "* WARNING: Don't know the best CXXFLAGS for this system *" |
740 |
|
|
echo "* Use make CXXFLAGS=..., or edit the top level Makefile *" |
741 |
|
|
echo "* (otherwise, a default of CXXFLAGS=-O3 will be used) *" |
742 |
|
|
echo "**********************************************************" |
743 |
|
|
echo "" |
744 |
|
|
CXXFLAGS="-O3" |
745 |
|
|
fi |
746 |
|
|
|
747 |
|
|
ACX_CHECK_CXX_FLAGS(${CXXFLAGS}, guessed_cxxflags, , [ |
748 |
|
|
echo "" |
749 |
|
|
echo "**********************************************************" |
750 |
|
|
echo "* WARNING: The guessed CXXFLAGS don't seem to work with *" |
751 |
|
|
echo "* your compiler. *" |
752 |
|
|
echo "* Use make CXXFLAGS=..., or edit the top level Makefile *" |
753 |
|
|
echo "**********************************************************" |
754 |
|
|
echo "" |
755 |
|
|
CXXFLAGS="" |
756 |
|
|
]) |
757 |
|
|
|
758 |
|
|
fi |
759 |
|
|
]) |
760 |
|
|
|
761 |
|
|
AC_DEFUN(ACX_PROG_F90_MAXOPT, |
762 |
|
|
[ |
763 |
|
|
AC_REQUIRE([AC_PROG_F90]) |
764 |
|
|
AC_REQUIRE([AC_CANONICAL_HOST]) |
765 |
|
|
|
766 |
|
|
# Try to determine "good" native compiler flags if none specified on command |
767 |
|
|
# line |
768 |
|
|
|
769 |
|
|
if test x"$F90FLAGS" = x ; then |
770 |
|
|
F90FLAGS="" |
771 |
|
|
case "${host_cpu}-${host_os}" in |
772 |
|
|
|
773 |
|
|
*linux*) if test "$F90" = ifc -o "$F90" = ifort; then |
774 |
|
|
F90FLAGS="-O" |
775 |
|
|
fi;; |
776 |
|
|
rs6000*-aix*) if test "$F90" = xlf90 -o "$F90" = f90; then |
777 |
|
|
F90FLAGS="-O3 -qarch=pwrx -qtune=pwrx -qansialias -w" |
778 |
|
|
fi;; |
779 |
|
|
powerpc*-aix*) |
780 |
|
|
if test "$F90" = f90 -o "$F90" = xlf90; then |
781 |
|
|
F90FLAGS="-O3 -qarch=ppc -qansialias -w" |
782 |
|
|
echo "*******************************************************" |
783 |
|
|
echo "* You have AIX on an unknown powerpc system. It is *" |
784 |
|
|
echo "* recommended that you use *" |
785 |
|
|
echo "* *" |
786 |
|
|
echo "* F90FLAGS=-O3 -qarch=ppc -qtune=xxx -qansialias -w *" |
787 |
|
|
echo "* ^^^ *" |
788 |
|
|
echo "* where xxx is 601, 603, 604, or whatever kind of *" |
789 |
|
|
echo "* PowerPC CPU you have. For more info, man xlf. *" |
790 |
|
|
echo "*******************************************************" |
791 |
|
|
fi;; |
792 |
|
|
*darwin*) |
793 |
|
|
if test "$F90" = f90 -o "$F90" = xlf90 -o "$F90" = xlf95; then |
794 |
chuckv |
1579 |
F90FLAGS="-qthreaded -O -qtune=auto -qarch=auto -qunroll=auto" |
795 |
gezelter |
1490 |
fi;; |
796 |
|
|
esac |
797 |
|
|
|
798 |
|
|
if test -n "$CPU_FLAGS"; then |
799 |
|
|
F90FLAGS="$F90FLAGS $CPU_FLAGS" |
800 |
|
|
fi |
801 |
|
|
|
802 |
|
|
if test -z "$F90FLAGS"; then |
803 |
|
|
echo "" |
804 |
|
|
echo "**********************************************************" |
805 |
|
|
echo "* WARNING: Don't know the best F90FLAGS for this system *" |
806 |
|
|
echo "* Use make F90FLAGS=..., or edit the top level Makefile *" |
807 |
|
|
echo "* (otherwise, a default of F90FLAGS=-O3 will be used) *" |
808 |
|
|
echo "**********************************************************" |
809 |
|
|
echo "" |
810 |
|
|
F90FLAGS="-O3" |
811 |
|
|
fi |
812 |
|
|
|
813 |
|
|
ACX_CHECK_F90_FLAGS(${F90FLAGS}, guessed_f90flags, , [ |
814 |
|
|
echo "" |
815 |
|
|
echo "**********************************************************" |
816 |
|
|
echo "* WARNING: The guessed F90FLAGS don't seem to work with *" |
817 |
|
|
echo "* your compiler. *" |
818 |
|
|
echo "* Use make F90FLAGS=..., or edit the top level Makefile *" |
819 |
|
|
echo "**********************************************************" |
820 |
|
|
echo "" |
821 |
|
|
F90FLAGS="" |
822 |
|
|
]) |
823 |
|
|
|
824 |
|
|
fi |
825 |
|
|
]) |
826 |
|
|
|
827 |
|
|
AC_DEFUN(ACX_PROG_F90_PREPFLAG, |
828 |
|
|
[ |
829 |
|
|
AC_REQUIRE([AC_PROG_F90]) |
830 |
|
|
AC_REQUIRE([AC_CANONICAL_HOST]) |
831 |
|
|
|
832 |
|
|
# Try to determine native compiler flags that allow us to use F90 suffix |
833 |
|
|
# for preprocessed f90 source. |
834 |
|
|
|
835 |
|
|
if test "$ac_test_PREPFLAG" != "set"; then |
836 |
|
|
PREPFLAG="" |
837 |
|
|
case "${host_cpu}-${host_os}" in |
838 |
|
|
|
839 |
|
|
*linux*) if test "$F90" = ifc -o "$F90" = ifort; then |
840 |
|
|
PREPFLAG="-fpp1 " |
841 |
|
|
fi;; |
842 |
|
|
*aix*) if test "$F90" = xlf90 -o "$F90" = f90; then |
843 |
|
|
PREPFLAG="-qsuffix=cpp=F90 " |
844 |
|
|
fi;; |
845 |
|
|
*darwin*) |
846 |
|
|
if test "$F90" = f90 -o "$F90" = xlf90; then |
847 |
|
|
PREPFLAG="-qsuffix=cpp=F90 " |
848 |
|
|
fi;; |
849 |
|
|
esac |
850 |
|
|
|
851 |
|
|
if test -z "$PREPFLAG"; then |
852 |
|
|
AC_MSG_WARN("Using empty PREPFLAG") |
853 |
|
|
PREPFLAG="" |
854 |
|
|
fi |
855 |
|
|
|
856 |
|
|
AC_MSG_CHECKING(to make sure F90 preprocessor flag works) |
857 |
|
|
AC_LANG_SAVE() |
858 |
|
|
AC_LANG([Fortran 90]) |
859 |
|
|
ac_save_ext=$ac_ext |
860 |
|
|
ac_ext=F90 |
861 |
|
|
ac_save_F90FLAGS=$F90FLAGS |
862 |
|
|
|
863 |
|
|
AS_IF([test "$PREPFLAG"], [F90FLAGS="${F90FLAGS} ${PREPFLAG}-DTEST"]) |
864 |
|
|
_AC_COMPILE_IFELSE([ |
865 |
|
|
AC_LANG_PROGRAM([ |
866 |
|
|
integer :: i |
867 |
|
|
i = 1 |
868 |
|
|
])], [prepflagworks=1], [prepflagworks=0]) |
869 |
|
|
|
870 |
|
|
F90FLAGS=$ac_save_F90FLAGS |
871 |
|
|
ac_ext=$ac_save_ext |
872 |
|
|
AC_LANG_RESTORE() |
873 |
|
|
|
874 |
|
|
if test "$prepflagworks" = 1; then |
875 |
|
|
AC_MSG_RESULT(yes) |
876 |
|
|
AC_SUBST(PREPFLAG) |
877 |
|
|
else |
878 |
|
|
AC_MSG_RESULT(no) |
879 |
|
|
AC_MSG_ERROR([Can't figure out working Fortran90 preprocessor flag]) |
880 |
|
|
fi |
881 |
|
|
fi |
882 |
|
|
]) |
883 |
|
|
|
884 |
|
|
|
885 |
|
|
AC_DEFUN(ACX_PROG_F90_PREPDEFFLAG, |
886 |
|
|
[ |
887 |
|
|
AC_REQUIRE([AC_PROG_F90]) |
888 |
|
|
AC_REQUIRE([AC_CANONICAL_HOST]) |
889 |
|
|
|
890 |
|
|
# Try to determine native compiler flags that allow us to use F90 suffix |
891 |
|
|
# for preprocessed f90 source with -D type defines |
892 |
|
|
|
893 |
|
|
if test "$ac_test_PREPDEFFLAG" != "set"; then |
894 |
|
|
PREPDEFFLAG="" |
895 |
|
|
case "${host_cpu}-${host_os}" in |
896 |
|
|
|
897 |
|
|
*linux*) if test "$F90" = ifc -o "$F90" = ifort; then |
898 |
|
|
PREPDEFFLAG=" " |
899 |
|
|
fi;; |
900 |
|
|
*aix*) if test "$F90" = xlf90 -o "$F90" = f90; then |
901 |
|
|
PREPDEFFLAG="-WF," |
902 |
|
|
fi;; |
903 |
|
|
*darwin*) |
904 |
|
|
if test "$F90" = f90 -o "$F90" = xlf90; then |
905 |
|
|
PREPDEFFLAG="-WF," |
906 |
|
|
fi;; |
907 |
|
|
esac |
908 |
|
|
|
909 |
|
|
if test -z "$PREPDEFFLAG"; then |
910 |
|
|
AC_MSG_WARN("Using empty PREPDEFFLAG") |
911 |
|
|
PREPDEFFLAG=" " |
912 |
|
|
fi |
913 |
|
|
|
914 |
|
|
AC_MSG_CHECKING(to make sure F90 preprocessor define flag works) |
915 |
|
|
AC_LANG_SAVE() |
916 |
|
|
AC_LANG([Fortran 90]) |
917 |
|
|
ac_save_ext=$ac_ext |
918 |
|
|
ac_ext=F90 |
919 |
|
|
ac_save_F90FLAGS=$F90FLAGS |
920 |
|
|
|
921 |
|
|
AS_IF([test "$PREPDEFFLAG"], [F90FLAGS="${F90FLAGS} ${PREPFLAG} ${PREPDEFFLAG}-DTEST"]) |
922 |
|
|
_AC_COMPILE_IFELSE([ |
923 |
|
|
AC_LANG_PROGRAM([ |
924 |
|
|
integer :: i |
925 |
|
|
#ifdef TEST |
926 |
|
|
i = 1 |
927 |
|
|
#else |
928 |
|
|
choke me |
929 |
|
|
#endif |
930 |
|
|
])], [prepdefflagworks=1], [prepdefflagworks=0]) |
931 |
|
|
|
932 |
|
|
F90FLAGS=$ac_save_F90FLAGS |
933 |
|
|
ac_ext=$ac_save_ext |
934 |
|
|
AC_LANG_RESTORE() |
935 |
|
|
|
936 |
|
|
|
937 |
|
|
if test "$prepdefflagworks" = 1; then |
938 |
|
|
AC_MSG_RESULT(yes) |
939 |
|
|
AC_SUBST(PREPDEFFLAG) |
940 |
|
|
else |
941 |
|
|
AC_MSG_RESULT(no) |
942 |
|
|
AC_MSG_ERROR([Can't figure out working Fortran90 preprocessor define flag]) |
943 |
|
|
fi |
944 |
|
|
fi |
945 |
|
|
]) |
946 |
|
|
|
947 |
|
|
dnl check for the required MPI library |
948 |
|
|
AC_DEFUN([ACX_MPI], [ |
949 |
|
|
|
950 |
|
|
# Set variables... |
951 |
|
|
MPI_LIB_DIR="$MPI/lib" |
952 |
|
|
MPI_INC_DIR="$MPI/include" |
953 |
|
|
AC_SUBST([MPI_LIB_DIR]) |
954 |
|
|
AC_SUBST([MPI_INC_DIR]) |
955 |
|
|
|
956 |
|
|
AC_MSG_CHECKING([for mpi.h]) |
957 |
|
|
have_mpi_h=0 |
958 |
gezelter |
2265 |
rm -f conftest* |
959 |
gezelter |
1490 |
echo '#include <mpi.h>' > conftest.cc |
960 |
gezelter |
2265 |
if ${CXX} -I${MPI_INC_DIR} -c conftest.cc 2>&1 ; then |
961 |
gezelter |
1490 |
AC_MSG_RESULT(yes) |
962 |
|
|
have_mpi_h=1 |
963 |
|
|
else |
964 |
gezelter |
2265 |
if test -s conftest.out ; then |
965 |
|
|
cat conftest.out >> config.log |
966 |
|
|
fi |
967 |
gezelter |
1490 |
AC_MSG_RESULT(no! Check MPI include paths) |
968 |
|
|
USE_MPI="no" |
969 |
|
|
fi |
970 |
|
|
rm -f conftest* |
971 |
|
|
if test "$have_mpi_h" = 1; then |
972 |
|
|
AC_DEFINE(HAVE_MPI_H, 1, [have mpi.h]) |
973 |
|
|
fi |
974 |
|
|
|
975 |
|
|
AC_MSG_CHECKING([whether mpif.h is usable]) |
976 |
|
|
have_mpif_h=0 |
977 |
|
|
rm -f conftest* |
978 |
|
|
cat >conftest.f90 <<EOF |
979 |
|
|
program main |
980 |
|
|
include 'mpif.h' |
981 |
|
|
end |
982 |
|
|
EOF |
983 |
|
|
if $F90 -I$MPI_INC_DIR -c conftest.f90 > conftest.out 2>&1 ; then |
984 |
|
|
AC_MSG_RESULT(yes) |
985 |
|
|
MPI_F90_INC="$MPI_INC_DIR" |
986 |
|
|
have_mpif_h=1 |
987 |
|
|
else |
988 |
|
|
if test -s conftest.out ; then |
989 |
|
|
cat conftest.out >> config.log |
990 |
|
|
fi |
991 |
|
|
AC_MSG_RESULT([no! Check MPI include paths]) |
992 |
|
|
USE_MPI="no" |
993 |
|
|
fi |
994 |
|
|
rm -f conftest* |
995 |
|
|
AC_SUBST(MPI_F90_INC) |
996 |
|
|
if test "$have_mpif_h" = 1; then |
997 |
|
|
AC_DEFINE(HAVE_MPIF_H, 1, [have mpif.h]) |
998 |
|
|
fi |
999 |
|
|
|
1000 |
|
|
AC_LANG_PUSH(C) |
1001 |
|
|
ac_save_LDFLAGS=$LDFLAGS |
1002 |
|
|
LDFLAGS="${LDFLAGS} -L${MPI_LIB_DIR} " |
1003 |
|
|
|
1004 |
|
|
if test x = x"$MPI_LIB"; then |
1005 |
|
|
AC_CHECK_LIB(mpich, MPI_Init, [MPI_LIB="-lmpich"]) |
1006 |
|
|
fi |
1007 |
|
|
if test x = x"$MPI_LIB"; then |
1008 |
|
|
AC_CHECK_LIB(mpi, MPI_Init, [MPI_LIB="-lmpi"]) |
1009 |
|
|
fi |
1010 |
|
|
$as_unset ac_cv_lib_mpi_MPI_Init |
1011 |
|
|
if test x = x"$MPI_LIB"; then |
1012 |
|
|
AC_CHECK_LIB(mpi, MPI_Init, [MPI_LIB="-lmpi -llam"], [], |
1013 |
|
|
"-llam") |
1014 |
|
|
fi |
1015 |
chuckv |
1619 |
$as_unset ac_cv_lib_mpich_MPI_Init |
1016 |
|
|
if test x = x"$MPI_LIB"; then |
1017 |
|
|
AC_CHECK_LIB(mpich, MPI_Init, [MPI_LIB="-lmpich -lpmpich"], [], |
1018 |
|
|
"-lpmpich") |
1019 |
|
|
fi |
1020 |
gezelter |
1490 |
|
1021 |
|
|
$as_unset ac_cv_lib_mpi_MPI_Init |
1022 |
|
|
if test x = x"$MPI_LIB"; then |
1023 |
|
|
AC_CHECK_LIB(mpi, MPI_Init, [MPI_LIB="-lmpi -llam -lpthread"],[ |
1024 |
|
|
AC_MSG_ERROR([Didn't find liblam, libmpi, or libmpich; check path for MPI package first...]) |
1025 |
|
|
USE_MPI="no" |
1026 |
|
|
], |
1027 |
|
|
[-llam -lpthread]) |
1028 |
|
|
fi |
1029 |
|
|
|
1030 |
|
|
AC_SUBST(MPI_LIB) |
1031 |
|
|
|
1032 |
|
|
AC_MSG_CHECKING([for MPI Fortran library]) |
1033 |
|
|
MPI_F90_LIB="" |
1034 |
|
|
if test -f "$MPI_LIB_DIR/libfmpich.a" ; then |
1035 |
|
|
MPI_F90_LIB="-lfmpich" |
1036 |
|
|
elif test -f "$MPI_LIB_DIR/liblamf77mpi.a" ; then |
1037 |
|
|
MPI_F90_LIB="-llamf77mpi" |
1038 |
|
|
else |
1039 |
|
|
dnl nothing special found, we'll assume that the C |
1040 |
|
|
dnl library is all we need |
1041 |
|
|
MPI_F90_LIB=" " |
1042 |
|
|
fi |
1043 |
|
|
AC_MSG_RESULT([found $MPI_F90_LIB]) |
1044 |
|
|
AC_SUBST(MPI_F90_LIB) |
1045 |
|
|
])dnl ACX_MPI |
1046 |
|
|
|
1047 |
|
|
|
1048 |
|
|
dnl check for the required SPRNG library |
1049 |
|
|
AC_DEFUN([ACX_SPRNG], [ |
1050 |
|
|
|
1051 |
|
|
# Set variables... |
1052 |
|
|
SPRNG_LIB_DIR="$SPRNG/lib" |
1053 |
|
|
SPRNG_INC_DIR="$SPRNG/include" |
1054 |
|
|
AC_SUBST([SPRNG_LIB_DIR]) |
1055 |
|
|
AC_SUBST([SPRNG_INC_DIR]) |
1056 |
|
|
|
1057 |
|
|
AC_MSG_CHECKING([for sprng.h]) |
1058 |
|
|
have_sprng_h=0 |
1059 |
|
|
echo '#include <sprng.h>' > conftest.cc |
1060 |
|
|
if test -z "`${CXX} -I${SPRNG_INC_DIR} -c conftest.cc 2>&1`"; then |
1061 |
|
|
AC_MSG_RESULT(yes) |
1062 |
|
|
have_sprng_h=1 |
1063 |
|
|
else |
1064 |
|
|
AC_MSG_RESULT([no! Check SPRNG include path!]) |
1065 |
|
|
USE_SPRNG="no" |
1066 |
|
|
fi |
1067 |
|
|
rm -f conftest* |
1068 |
|
|
if test "$have_sprng_h" = 1; then |
1069 |
|
|
AC_DEFINE(HAVE_SPRNG_H, 1, [have sprng.h]) |
1070 |
|
|
fi |
1071 |
|
|
|
1072 |
|
|
AC_LANG_PUSH(C) |
1073 |
|
|
ac_save_LDFLAGS=$LDFLAGS |
1074 |
|
|
LDFLAGS="${LDFLAGS} -L${SPRNG_LIB_DIR} " |
1075 |
|
|
|
1076 |
|
|
AC_CHECK_LIB(sprng, init_rng, [SPRNG_LIB="-lsprng"], [ |
1077 |
|
|
AC_MSG_ERROR([Didn't find libsprng; check path for SPRNG package first...]) |
1078 |
|
|
USE_SPRNG="no" |
1079 |
|
|
]) |
1080 |
|
|
|
1081 |
|
|
if test "$USE_SPRNG" = "no"; then |
1082 |
|
|
AC_MSG_ERROR(No working SPRNG library found) |
1083 |
|
|
fi |
1084 |
|
|
AC_SUBST(SPRNG_LIB) |
1085 |
|
|
])dnl ACX_SPRNG |
1086 |
|
|
|
1087 |
|
|
AC_DEFUN([adl_FUNC_GETOPT_LONG], |
1088 |
|
|
[AC_PREREQ(2.49)dnl |
1089 |
|
|
# clean out junk possibly left behind by a previous configuration |
1090 |
gezelter |
1947 |
rm -f src/getopt.h |
1091 |
gezelter |
1490 |
# Check for getopt_long support |
1092 |
|
|
AC_CHECK_HEADERS([getopt.h]) |
1093 |
|
|
AC_CHECK_FUNCS([getopt_long],, |
1094 |
|
|
[# FreeBSD has a gnugetopt library for this |
1095 |
|
|
AC_CHECK_LIB([gnugetopt],[getopt_long],[AC_DEFINE([HAVE_GETOPT_LONG])], |
1096 |
|
|
[# use the GNU replacement |
1097 |
|
|
AC_LIBOBJ(getopt) |
1098 |
|
|
AC_LIBOBJ(getopt1) |
1099 |
gezelter |
1947 |
AC_CONFIG_LINKS([src/getopt.h:src/utils/gnugetopt.h])])])]) |
1100 |
gezelter |
1516 |
|
1101 |
|
|
|
1102 |
|
|
AC_DEFUN([ACX_CONFIG_HOME], [ |
1103 |
|
|
myDir=${0%/*} |
1104 |
|
|
if [ "$myDir" = "$0" ]; then |
1105 |
|
|
# Ran from local directory |
1106 |
|
|
myDir=$PWD |
1107 |
|
|
fi |
1108 |
|
|
# Resolve symlinks. |
1109 |
|
|
myProgram="$0" |
1110 |
|
|
while [ -L "$myProgram" ]; do |
1111 |
|
|
ls=`/bin/ls -ld "$myProgram"` |
1112 |
|
|
link=`/usr/bin/expr "$ls" : '.*-> \(.*\)$'` |
1113 |
|
|
if /usr/bin/expr "$link" : '.*/.*' > /dev/null; then |
1114 |
|
|
myProgram="$link" |
1115 |
|
|
else |
1116 |
|
|
myProgram="`AS_DIRNAME([$myProgram])`/$link" |
1117 |
|
|
fi |
1118 |
|
|
done |
1119 |
|
|
myDir=`AS_DIRNAME([$myProgram])` |
1120 |
|
|
fi |
1121 |
|
|
CONFIG_HOME=$myDir |
1122 |
|
|
]) |
1123 |
gezelter |
1540 |
|
1124 |
|
|
AC_DEFUN(BB_ENABLE_DOXYGEN, |
1125 |
|
|
[ |
1126 |
|
|
AC_ARG_ENABLE(doxygen, [ --enable-doxygen enable documentation generation with doxygen (auto)]) |
1127 |
|
|
AC_ARG_ENABLE(dot, [ --enable-dot use 'dot' to generate graphs in doxygen (auto)]) |
1128 |
|
|
AC_ARG_ENABLE(html-docs, [ --enable-html-docs enable HTML generation with doxygen (yes)], [], [ enable_html_docs=yes]) |
1129 |
|
|
AC_ARG_ENABLE(latex-docs, [ --enable-latex-docs enable LaTeX documentation generation with doxygen (no)], [], [ enable_latex_docs=no]) |
1130 |
|
|
if test "x$enable_doxygen" = xno; then |
1131 |
|
|
enable_doc=no |
1132 |
|
|
else |
1133 |
|
|
AC_PATH_PROG(DOXYGEN, doxygen, , $PATH) |
1134 |
|
|
if test "x$DOXYGEN" = x; then |
1135 |
|
|
if test "x$enable_doxygen" = xyes; then |
1136 |
|
|
AC_MSG_ERROR([could not find doxygen]) |
1137 |
|
|
fi |
1138 |
|
|
enable_doc=no |
1139 |
|
|
else |
1140 |
|
|
enable_doc=yes |
1141 |
|
|
AC_PATH_PROG(DOT, dot, , $PATH) |
1142 |
|
|
fi |
1143 |
|
|
fi |
1144 |
|
|
|
1145 |
|
|
if test "x$enable_doc" = xyes; then |
1146 |
|
|
DOC=1 |
1147 |
|
|
else |
1148 |
|
|
DOC=0 |
1149 |
|
|
fi |
1150 |
|
|
AC_SUBST(DOC) |
1151 |
|
|
|
1152 |
|
|
if test x$DOT = x; then |
1153 |
|
|
if test "x$enable_dot" = xyes; then |
1154 |
|
|
AC_MSG_ERROR([could not find dot]) |
1155 |
|
|
fi |
1156 |
|
|
enable_dot=no |
1157 |
|
|
else |
1158 |
|
|
enable_dot=yes |
1159 |
|
|
fi |
1160 |
|
|
AC_SUBST(enable_dot) |
1161 |
|
|
AC_SUBST(enable_html_docs) |
1162 |
|
|
AC_SUBST(enable_latex_docs) |
1163 |
|
|
]) |
1164 |
gezelter |
2199 |
# |
1165 |
|
|
# |
1166 |
|
|
# |
1167 |
|
|
AC_DEFUN([AX_SYS_PERLSHARPBANG],[dnl |
1168 |
gezelter |
1540 |
|
1169 |
gezelter |
2199 |
AC_PATH_PROG(PERLINTERP,perl,perl) |
1170 |
|
|
ac_cv_path_perlinterp="$PERLINTERP" |
1171 |
|
|
_sHpB='#!' |
1172 |
|
|
|
1173 |
|
|
AC_ARG_WITH(perl-shebang, |
1174 |
|
|
AC_HELP_STRING([--with-perl-shebang], |
1175 |
|
|
[override what perl thinks is the way for the kernel to start it (seldom needed)]dnl |
1176 |
|
|
), |
1177 |
|
|
[opt_perl_shebang="$withval"]dnl |
1178 |
|
|
,dnl |
1179 |
|
|
[opt_perl_shebang="not_set"]dnl |
1180 |
|
|
)dnl |
1181 |
|
|
|
1182 |
|
|
AC_CACHE_CHECK([whether explicit instead of detected sharpbang is to be used], |
1183 |
|
|
ax_cv_opt_perl_shebang, |
1184 |
|
|
[ case "$opt_perl_shebang" in |
1185 |
|
|
not_set ) ax_cv_opt_perl_shebang='' |
1186 |
|
|
;; |
1187 |
|
|
* ) |
1188 |
|
|
ax_cv_opt_perl_shebang=`echo "$opt_perl_shebang" | sed -e's|^#!\s*\(.*\)$|\1|'` |
1189 |
|
|
esac |
1190 |
|
|
]dnl |
1191 |
|
|
)dnl |
1192 |
|
|
|
1193 |
|
|
if test "A$ax_cv_opt_perl_shebang" != "A" |
1194 |
|
|
then |
1195 |
|
|
ac_cv_sys_kernshrpbang_perl="$ax_cv_opt_perl_shebang" |
1196 |
|
|
PERL_SHEBANG="$ac_cv_sys_kernshrpbang_perl" |
1197 |
|
|
AC_SUBST(PERL_SHEBANG)dnl |
1198 |
|
|
AC_MSG_NOTICE([OK - PERL_SHEBANG is $_sHpB$PERL_SHEBANG.]) |
1199 |
|
|
|
1200 |
|
|
# Automatic detection of sharpbang formula starts here |
1201 |
|
|
else dnl |
1202 |
|
|
|
1203 |
|
|
_somian_shbangperl=`$PERLINTERP -V:startperl` |
1204 |
|
|
negclass="[[^']]"; dnl |
1205 |
|
|
# must leave this comment: m4 will remove the outer brackets for us, heheh |
1206 |
|
|
AC_CACHE_CHECK([for kernel sharpbang invocation to start perl], |
1207 |
|
|
ac_cv_sys_kernshrpbang_perl, |
1208 |
|
|
[_somian_kspb_perl=`echo "$_somian_shbangperl" | sed -ne"s|.*='\($negclass*\)';$|\1|p"` |
1209 |
|
|
if test "x$_somian_kspb_perl" == x |
1210 |
|
|
then _somian_ksbp_warn_empty='durnit' |
1211 |
|
|
else |
1212 |
|
|
case "A$_somian_kspb_perl" in |
1213 |
|
|
A#!*perl* ) |
1214 |
|
|
ac_cv_sys_kernshrpbang_perl=`echo "$_somian_kspb_perl" | sed -e's|#!\(.*\)$|\1|'` |
1215 |
|
|
;; |
1216 |
|
|
A* ) _somian_ksbp_warn_defau='trouble' |
1217 |
|
|
ac_cv_sys_kernshrpbang_perl="$PERLINTERP" |
1218 |
|
|
esac |
1219 |
|
|
fi |
1220 |
|
|
])dnl Done with testing sharpbang |
1221 |
|
|
|
1222 |
|
|
# The above prints Checking ... result message to user. |
1223 |
|
|
PERL_SHEBANG="$ac_cv_sys_kernshrpbang_perl" |
1224 |
|
|
AC_SUBST(PERL_SHEBANG) |
1225 |
|
|
if test A${_somian_ksbp_warn_empty+set} == Aset |
1226 |
|
|
then AC_MSG_WARN([dnl |
1227 |
|
|
In last check, doing $PERLINTERP -V:startperl yielded empty result! That should not happen.]) |
1228 |
|
|
fi |
1229 |
|
|
# Inform user after printing result value |
1230 |
|
|
if test A${_somian_ksbp_warn_defau+set} == Aset |
1231 |
|
|
then AC_MSG_NOTICE([Maybe Not good -]) |
1232 |
|
|
AC_MSG_WARN([dnl |
1233 |
|
|
In last check perl's Config query did not work so we bunted: $_sHpB$PERLINTERP]) |
1234 |
|
|
else AC_MSG_NOTICE([OK Good result - ]) |
1235 |
|
|
AC_MSG_NOTICE([dnl |
1236 |
|
|
In last check we got a proper-looking answer from perl's Config: $_somian_shbangperl]) |
1237 |
|
|
dnl Done with user info messages |
1238 |
|
|
fi |
1239 |
|
|
dnl Outer loop checked for user override term here |
1240 |
|
|
fi dnl |
1241 |
|
|
|
1242 |
|
|
])dnl EOMACRO DEF |