1 |
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 |
dnl |
5 |
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 |
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 |
CFLAGS="-qthreaded -O -qtune=auto -qarch=auto -qunroll=auto -qaltivec" |
561 |
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 |
if test "$CXX" = xlc++ -o "$CXX" = xlC ; then |
679 |
CXXFLAGS="-qthreaded -O -qtune=auto -qarch=auto -qunroll=auto -qaltivec" |
680 |
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 |
F90FLAGS="-qthreaded -O -qtune=auto -qarch=auto -qunroll=auto" |
795 |
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 |
rm -f conftest* |
959 |
echo '#include <mpi.h>' > conftest.cc |
960 |
if ${CXX} -I${MPI_INC_DIR} -c conftest.cc 2>&1 ; then |
961 |
AC_MSG_RESULT(yes) |
962 |
have_mpi_h=1 |
963 |
else |
964 |
if test -s conftest.out ; then |
965 |
cat conftest.out >> config.log |
966 |
fi |
967 |
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 |
$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 |
|
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 |
rm -f src/getopt.h |
1091 |
# 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 |
AC_CONFIG_LINKS([src/getopt.h:src/utils/gnugetopt.h])])])]) |
1100 |
|
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 |
|
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 |
# |
1165 |
# |
1166 |
# |
1167 |
AC_DEFUN([AX_SYS_PERLSHARPBANG],[dnl |
1168 |
|
1169 |
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 |