ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/ac-tools/aclocal.m4
Revision: 2190
Committed: Wed Apr 13 22:30:22 2005 UTC (19 years, 2 months ago) by gezelter
File size: 32724 byte(s)
Log Message:
added CGAL checks

File Contents

# Content
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 echo '#include <mpi.h>' > conftest.cc
959 if test -z "`${CXX} -I${MPI_INC_DIR} -c conftest.cc 2>&1`"; then
960 AC_MSG_RESULT(yes)
961 have_mpi_h=1
962 else
963 AC_MSG_RESULT(no! Check MPI include paths)
964 USE_MPI="no"
965 fi
966 rm -f conftest*
967 if test "$have_mpi_h" = 1; then
968 AC_DEFINE(HAVE_MPI_H, 1, [have mpi.h])
969 fi
970
971 AC_MSG_CHECKING([whether mpif.h is usable])
972 have_mpif_h=0
973 rm -f conftest*
974 cat >conftest.f90 <<EOF
975 program main
976 include 'mpif.h'
977 end
978 EOF
979 if $F90 -I$MPI_INC_DIR -c conftest.f90 > conftest.out 2>&1 ; then
980 AC_MSG_RESULT(yes)
981 MPI_F90_INC="$MPI_INC_DIR"
982 have_mpif_h=1
983 else
984 if test -s conftest.out ; then
985 cat conftest.out >> config.log
986 fi
987 AC_MSG_RESULT([no! Check MPI include paths])
988 USE_MPI="no"
989 fi
990 rm -f conftest*
991 AC_SUBST(MPI_F90_INC)
992 if test "$have_mpif_h" = 1; then
993 AC_DEFINE(HAVE_MPIF_H, 1, [have mpif.h])
994 fi
995
996 AC_LANG_PUSH(C)
997 ac_save_LDFLAGS=$LDFLAGS
998 LDFLAGS="${LDFLAGS} -L${MPI_LIB_DIR} "
999
1000 if test x = x"$MPI_LIB"; then
1001 AC_CHECK_LIB(mpich, MPI_Init, [MPI_LIB="-lmpich"])
1002 fi
1003 if test x = x"$MPI_LIB"; then
1004 AC_CHECK_LIB(mpi, MPI_Init, [MPI_LIB="-lmpi"])
1005 fi
1006 $as_unset ac_cv_lib_mpi_MPI_Init
1007 if test x = x"$MPI_LIB"; then
1008 AC_CHECK_LIB(mpi, MPI_Init, [MPI_LIB="-lmpi -llam"], [],
1009 "-llam")
1010 fi
1011 $as_unset ac_cv_lib_mpich_MPI_Init
1012 if test x = x"$MPI_LIB"; then
1013 AC_CHECK_LIB(mpich, MPI_Init, [MPI_LIB="-lmpich -lpmpich"], [],
1014 "-lpmpich")
1015 fi
1016
1017 $as_unset ac_cv_lib_mpi_MPI_Init
1018 if test x = x"$MPI_LIB"; then
1019 AC_CHECK_LIB(mpi, MPI_Init, [MPI_LIB="-lmpi -llam -lpthread"],[
1020 AC_MSG_ERROR([Didn't find liblam, libmpi, or libmpich; check path for MPI package first...])
1021 USE_MPI="no"
1022 ],
1023 [-llam -lpthread])
1024 fi
1025
1026 AC_SUBST(MPI_LIB)
1027
1028 AC_MSG_CHECKING([for MPI Fortran library])
1029 MPI_F90_LIB=""
1030 if test -f "$MPI_LIB_DIR/libfmpich.a" ; then
1031 MPI_F90_LIB="-lfmpich"
1032 elif test -f "$MPI_LIB_DIR/liblamf77mpi.a" ; then
1033 MPI_F90_LIB="-llamf77mpi"
1034 else
1035 dnl nothing special found, we'll assume that the C
1036 dnl library is all we need
1037 MPI_F90_LIB=" "
1038 fi
1039 AC_MSG_RESULT([found $MPI_F90_LIB])
1040 AC_SUBST(MPI_F90_LIB)
1041 ])dnl ACX_MPI
1042
1043
1044 dnl check for the required SPRNG library
1045 AC_DEFUN([ACX_SPRNG], [
1046
1047 # Set variables...
1048 SPRNG_LIB_DIR="$SPRNG/lib"
1049 SPRNG_INC_DIR="$SPRNG/include"
1050 AC_SUBST([SPRNG_LIB_DIR])
1051 AC_SUBST([SPRNG_INC_DIR])
1052
1053 AC_MSG_CHECKING([for sprng.h])
1054 have_sprng_h=0
1055 echo '#include <sprng.h>' > conftest.cc
1056 if test -z "`${CXX} -I${SPRNG_INC_DIR} -c conftest.cc 2>&1`"; then
1057 AC_MSG_RESULT(yes)
1058 have_sprng_h=1
1059 else
1060 AC_MSG_RESULT([no! Check SPRNG include path!])
1061 USE_SPRNG="no"
1062 fi
1063 rm -f conftest*
1064 if test "$have_sprng_h" = 1; then
1065 AC_DEFINE(HAVE_SPRNG_H, 1, [have sprng.h])
1066 fi
1067
1068 AC_LANG_PUSH(C)
1069 ac_save_LDFLAGS=$LDFLAGS
1070 LDFLAGS="${LDFLAGS} -L${SPRNG_LIB_DIR} "
1071
1072 AC_CHECK_LIB(sprng, init_rng, [SPRNG_LIB="-lsprng"], [
1073 AC_MSG_ERROR([Didn't find libsprng; check path for SPRNG package first...])
1074 USE_SPRNG="no"
1075 ])
1076
1077 if test "$USE_SPRNG" = "no"; then
1078 AC_MSG_ERROR(No working SPRNG library found)
1079 fi
1080 AC_SUBST(SPRNG_LIB)
1081 ])dnl ACX_SPRNG
1082
1083 AC_DEFUN([adl_FUNC_GETOPT_LONG],
1084 [AC_PREREQ(2.49)dnl
1085 # clean out junk possibly left behind by a previous configuration
1086 rm -f src/getopt.h
1087 # Check for getopt_long support
1088 AC_CHECK_HEADERS([getopt.h])
1089 AC_CHECK_FUNCS([getopt_long],,
1090 [# FreeBSD has a gnugetopt library for this
1091 AC_CHECK_LIB([gnugetopt],[getopt_long],[AC_DEFINE([HAVE_GETOPT_LONG])],
1092 [# use the GNU replacement
1093 AC_LIBOBJ(getopt)
1094 AC_LIBOBJ(getopt1)
1095 AC_CONFIG_LINKS([src/getopt.h:src/utils/gnugetopt.h])])])])
1096
1097
1098 AC_DEFUN([ACX_CONFIG_HOME], [
1099 myDir=${0%/*}
1100 if [ "$myDir" = "$0" ]; then
1101 # Ran from local directory
1102 myDir=$PWD
1103 fi
1104 # Resolve symlinks.
1105 myProgram="$0"
1106 while [ -L "$myProgram" ]; do
1107 ls=`/bin/ls -ld "$myProgram"`
1108 link=`/usr/bin/expr "$ls" : '.*-> \(.*\)$'`
1109 if /usr/bin/expr "$link" : '.*/.*' > /dev/null; then
1110 myProgram="$link"
1111 else
1112 myProgram="`AS_DIRNAME([$myProgram])`/$link"
1113 fi
1114 done
1115 myDir=`AS_DIRNAME([$myProgram])`
1116 fi
1117 CONFIG_HOME=$myDir
1118 ])
1119
1120 AC_DEFUN(BB_ENABLE_DOXYGEN,
1121 [
1122 AC_ARG_ENABLE(doxygen, [ --enable-doxygen enable documentation generation with doxygen (auto)])
1123 AC_ARG_ENABLE(dot, [ --enable-dot use 'dot' to generate graphs in doxygen (auto)])
1124 AC_ARG_ENABLE(html-docs, [ --enable-html-docs enable HTML generation with doxygen (yes)], [], [ enable_html_docs=yes])
1125 AC_ARG_ENABLE(latex-docs, [ --enable-latex-docs enable LaTeX documentation generation with doxygen (no)], [], [ enable_latex_docs=no])
1126 if test "x$enable_doxygen" = xno; then
1127 enable_doc=no
1128 else
1129 AC_PATH_PROG(DOXYGEN, doxygen, , $PATH)
1130 if test "x$DOXYGEN" = x; then
1131 if test "x$enable_doxygen" = xyes; then
1132 AC_MSG_ERROR([could not find doxygen])
1133 fi
1134 enable_doc=no
1135 else
1136 enable_doc=yes
1137 AC_PATH_PROG(DOT, dot, , $PATH)
1138 fi
1139 fi
1140
1141 if test "x$enable_doc" = xyes; then
1142 DOC=1
1143 else
1144 DOC=0
1145 fi
1146 AC_SUBST(DOC)
1147
1148 if test x$DOT = x; then
1149 if test "x$enable_dot" = xyes; then
1150 AC_MSG_ERROR([could not find dot])
1151 fi
1152 enable_dot=no
1153 else
1154 enable_dot=yes
1155 fi
1156 AC_SUBST(enable_dot)
1157 AC_SUBST(enable_html_docs)
1158 AC_SUBST(enable_latex_docs)
1159 ])
1160