1define([sc_mmm_version],[2.3.1]) 2define([sc_buildid],[]) 3define([sc_so_version],[8:0:1]) 4 5dnl Process this file with autoconf to produce a configure script. 6define([AC_CACHE_LOAD], )dnl for debugging configure.in 7define([AC_CACHE_SAVE], )dnl for debugging configure.in 8AC_INIT(src/lib/util/ref/ref.h) 9AC_PREREQ(2.55) 10AC_CONFIG_HEADER(src/lib/scconfig.h) 11AC_CONFIG_AUX_DIR(bin) 12 13AC_CANONICAL_SYSTEM 14 15AC_DEFINE_UNQUOTED(HOST_ARCH, "$host") 16AC_DEFINE_UNQUOTED(TARGET_ARCH, "$target") 17 18define([default_prefix_dash],ifelse(sc_buildid, ,[],[-])) 19define([default_prefix],builtin(format,"/usr/local/mpqc/%s%s%s", 20 sc_mmm_version,default_prefix_dash,sc_buildid)) 21 22SC_MMM_VERSION=sc_mmm_version 23 24SC_SO_VERSION=sc_so_version 25AC_SUBST(SC_SO_VERSION) 26 27changequote(<<, >>)dnl 28SC_MAJOR_VERSION=`echo $SC_MMM_VERSION|sed 's/\([0-9]*\)\.[0-9]*\.[0-9]*/\1/'` 29SC_MINOR_VERSION=`echo $SC_MMM_VERSION|sed 's/[0-9]*\.\([0-9]*\)\.[0-9]*/\1/'` 30SC_MICRO_VERSION=`echo $SC_MMM_VERSION|sed 's/[0-9]*\.[0-9]*\.\([0-9]*\)/\1/'` 31changequote([, ])dnl 32AC_DEFINE_UNQUOTED(SC_MAJOR_VERSION,$SC_MAJOR_VERSION) 33AC_DEFINE_UNQUOTED(SC_MINOR_VERSION,$SC_MINOR_VERSION) 34AC_DEFINE_UNQUOTED(SC_MICRO_VERSION,$SC_MICRO_VERSION) 35 36EXCLUDED_DIRS= 37 38dnl --------- Features --------- 39 40AC_ARG_ENABLE(debug, 41[ --enable-debug Compile with debugging options], 42[ 43case $enableval in 44 yes) 45 DEBUG=yes 46 ;; 47 no) 48 DEBUG=no 49 ;; 50 opt) 51 DEBUG=opt 52 ;; 53 *) 54 AC_MSG_ERROR([Invalid value for --enable-debug ($enableval)]) 55 ;; 56esac 57],[ 58 DEBUG=no 59] 60) 61 62AC_ARG_ENABLE(strict-arch, 63[ --enable-strict-arch Code might only work on target cpu type], 64[ 65case $enableval in 66 yes) 67 STRICT_ARCH=yes 68 ;; 69 no) 70 STRICT_ARCH=no 71 ;; 72 *) 73 AC_MSG_ERROR([Invalid value for --enable-strict-arch ($enableval)]) 74 ;; 75esac 76],[ 77 STRICT_ARCH=no 78] 79) 80 81enableproduction=no 82AC_ARG_ENABLE(production, 83[ --enable-production Prepare for a production install.], 84[ 85case $enableval in 86 yes) 87 enableproduction=yes 88 ;; 89 no) 90 ;; 91 *) 92 AC_MSG_ERROR([Invalid value for --enable-production ($enableval)]) 93 ;; 94esac 95]) 96 97AC_ARG_ENABLE(sysv-ipc, 98[ --disable-sysv-ipc Disable use of SysV IPC.], 99[ 100case $enableval in 101 yes) 102 SYSVIPC=yes 103 ;; 104 no) 105 SYSVIPC=no 106 ;; 107 *) 108 AC_MSG_ERROR([Invalid value for --enable-sysv-ipc ($enableval)]) 109 ;; 110esac 111],[ 112 SYSVIPC=yes 113] 114) 115 116AC_ARG_ENABLE(parallel, 117[ --disable-parallel Compile for serial execution.], 118[ 119case $enableval in 120 yes) 121 PARALLEL=yes 122 ;; 123 no) 124 PARALLEL=no 125 ;; 126 *) 127 AC_MSG_ERROR([Invalid value for --enable-parallel ($enableval)]) 128 ;; 129esac 130],[ 131 PARALLEL=yes 132] 133) 134 135AC_ARG_ENABLE(always-use-mpi, 136[ --enable-always-use-mpi Causes MPI_Init to always be called from main], 137[ 138case $enableval in 139 yes) 140 ALWAYS_USE_MPI=yes 141 ;; 142 no) 143 ALWAYS_USE_MPI=no 144 ;; 145 *) 146 AC_MSG_ERROR([Invalid value for --enable-always-use-mpi ($enableval)]) 147 ;; 148esac 149],[ 150 ALWAYS_USE_MPI=no 151] 152) 153 154DEFAULT_PARALLEL=none 155AC_ARG_WITH(default-parallel, 156[ --with-default-parallel Default parallism model: none, mpi, armcimpi or mtmpi], 157DEFAULT_PARALLEL=$withval 158) 159if test $DEFAULT_PARALLEL = mpi; then 160 AC_DEFINE(DEFAULT_MPI) 161elif test $DEFAULT_PARALLEL = mtmpi; then 162 AC_DEFINE(DEFAULT_MPI) 163 AC_DEFINE(DEFAULT_MTMPI) 164elif test $DEFAULT_PARALLEL = armcimpi; then 165 AC_DEFINE(DEFAULT_MPI) 166 AC_DEFINE(DEFAULT_ARMCI) 167fi 168 169SC_MPI_THREAD_LEVEL=MPI_THREAD_MULTIPLE 170AC_ARG_WITH(mpi-thread, 171[ --with-mpi-thread Thread level for MPI (multiple,serialized,funneled,single)], 172[ 173 case $withval in 174 multiple) 175 SC_MPI_THREAD_LEVEL=MPI_THREAD_MULTIPLE 176 ;; 177 serialized) 178 SC_MPI_THREAD_LEVEL=MPI_THREAD_SERIALIZED 179 ;; 180 funneled) 181 SC_MPI_THREAD_LEVEL=MPI_THREAD_FUNNELED 182 ;; 183 single) 184 SC_MPI_THREAD_LEVEL=MPI_THREAD_SINGLE 185 ;; 186 *) 187 AC_MSG_ERROR([Invalid value for --with-mpi-thread ($withval)]) 188 ;; 189 esac 190] 191) 192AC_DEFINE_UNQUOTED(SC_MPI_THREAD_LEVEL,$SC_MPI_THREAD_LEVEL) 193 194AC_ARG_ENABLE(long-long, 195[ --disable-long-long Disable use of long long.], 196[ 197case $enableval in 198 yes) 199 LONGLONG=yes 200 ;; 201 no) 202 LONGLONG=no 203 ;; 204 *) 205 AC_MSG_ERROR([Invalid value for --enable-long-long ($enableval)]) 206 ;; 207esac 208],[ 209 LONGLONG=yes 210] 211) 212 213AC_ARG_ENABLE(threads, 214[ --enable-threads Compile allowing use of threads, if possible.], 215[ 216case $enableval in 217 yes) 218 THREADS=yes 219 ;; 220 no) 221 THREADS=no 222 ;; 223 *) 224 AC_MSG_ERROR([Invalid value for --enable-threads ($enableval)]) 225 ;; 226esac 227],[ 228 THREADS=yes 229] 230) 231 232AC_ARG_ENABLE(ref-debug, 233[ --enable-ref-debug Check for reference count overwrites/overflows/etc], 234[ 235case $enableval in 236 yes) 237 ;; 238 no) 239 AC_DEFINE(REF_OPTIMIZE) 240 ;; 241 *) 242 AC_MSG_ERROR([Invalid value for --enable-ref-debug ($enableval)]) 243 ;; 244esac 245],[ 246 if test $DEBUG = no -o $DEBUG = opt; then 247 AC_DEFINE(REF_OPTIMIZE) 248 fi 249] 250) 251 252AC_ARG_ENABLE(cross-compile, 253[ --enable-cross-compile Rather than checking, assume cross compilation.], 254[ 255case $enableval in 256 yes) 257 cross_compiling=yes 258 ;; 259 no) 260 ;; 261 *) 262 AC_MSG_ERROR([Invalid value for --enable-cross-compile ($enableval)]) 263 ;; 264esac 265]) 266 267DOXYGEN_MAN=YES 268AC_ARG_ENABLE(doxygen-man, 269[ --disable-doxygen-man Disable doxygen man pages.], 270[ 271case $enableval in 272 yes) 273 ;; 274 no) 275 DOXYGEN_MAN=NO 276 ;; 277 *) 278 AC_MSG_ERROR([Invalid value for --(dis|en)able-doxygen-man ($enableval)]) 279 ;; 280esac 281] 282) 283AC_SUBST(DOXYGEN_MAN) 284 285AC_ARG_ENABLE(sourceforge, 286[ --enable-sourceforge Enable SourceForge web page generation], 287[ 288case $enableval in 289 yes) 290 FOOTER_HTML=sf_footer.html 291 ;; 292 no) 293 FOOTER_HTML=footer.html 294 ;; 295 *) 296 AC_MSG_ERROR([Invalid value for --enable-sourceforge ($enableval)]) 297 ;; 298esac 299],[ 300 FOOTER_HTML=footer.html 301] 302) 303AC_SUBST(FOOTER_HTML) 304 305AC_ARG_ENABLE(components, 306[ --enable-components Enable CCA components], 307[ 308case $enableval in 309 yes) 310 components=yes 311 ;; 312 no) 313 components=no 314 ;; 315 *) 316 AC_MSG_ERROR([Invalid value for --enable-components ($enableval)]) 317 ;; 318esac 319],[ 320 components=no 321] 322) 323ENABLECCA=$components 324AC_SUBST(ENABLECCA) 325 326BUILDID="sc_buildid" 327AC_ARG_WITH(build-id, 328[ --with-build-id Gives an identifier for the build.], 329BUILDID=$withval 330) 331AC_SUBST(BUILDID) 332AC_DEFINE_UNQUOTED(SC_BUILDID,"$BUILDID") 333 334DEFAULT_SC_MEMORY=32000000 335AC_ARG_WITH(default-memory, 336[ --with-default-memory Gives the default memory allocation.], 337DEFAULT_SC_MEMORY=$withval 338) 339AC_DEFINE_UNQUOTED(DEFAULT_SC_MEMORY,$DEFAULT_SC_MEMORY) 340 341if test "$BUILDID"; then 342 SC_VERSION="$SC_MMM_VERSION-$BUILDID" 343else 344 SC_VERSION="$SC_MMM_VERSION" 345fi 346 347AC_DEFINE_UNQUOTED(SC_VERSION, "$SC_VERSION") 348AC_SUBST(SC_VERSION) 349 350ac_default_prefix="/usr/local/mpqc/$SC_VERSION" 351 352AC_ARG_WITH(cc, 353[ --with-cc Gives the name of the C compiler to use.], 354CC=$withval 355) 356 357AC_ARG_WITH(cxx, 358[ --with-cxx Gives the name of the C++ compiler to use.], 359CXX=$withval 360) 361 362AC_ARG_WITH(f77, 363[ --with-f77 Gives the name of the FORTRAN 77 compiler to use.], 364F77=$withval 365) 366 367AC_ARG_WITH(cxx-optflags, 368[ --with-cxx-optflags Optimization flags to use with the C++ compiler.], 369GIVEN_CXXOPTIONS_OPT=$withval 370) 371 372AC_ARG_WITH(cc-optflags, 373[ --with-cc-optflags Optimization flags to use with the C compiler.], 374GIVEN_COPTIONS_OPT=$withval 375) 376 377DOT=yes 378AC_ARG_WITH(dot, 379[ --with-dot Gives the path to the dot graph generator.], 380DOT=$withval 381) 382 383AC_ARG_WITH(ranlib, 384[ --with-ranlib Gives the name of the ranlib program.], 385RANLIB=$withval 386) 387 388AC_ARG_WITH(ar, 389[ --with-ar Names the archive creator.], 390AR=$withval 391) 392 393ARFLAGS=r 394AC_ARG_WITH(ar-flags, 395[ --with-ar-flags Flags for the the archive creator.], 396ARFLAGS=$withval 397) 398AC_SUBST(ARFLAGS) 399 400AC_ARG_WITH(ld, 401[ --with-ld Names the object linker.], 402LD=$withval 403) 404 405changequote(<<, >>)dnl 406LAUNCH="%MPQC% [-o %OUTPUT%] %INPUT%" 407changequote([, ])dnl 408AC_ARG_WITH(launch, 409[ --with-launch The mpqcrun script launch string.], 410LAUNCH=$withval 411) 412AC_SUBST(LAUNCH) 413 414changequote(<<, >>)dnl 415CCALAUNCH="%CCAFE% --ccafe-rc %INPUT% --ccafe-remap-stdio --ccafe-outputdir %OUTPUT%"; 416changequote([, ])dnl 417AC_ARG_WITH(cca-launch, 418[ --with-cca-launch The ccarun script launch string.], 419CCALAUNCH=$withval 420) 421AC_SUBST(CCALAUNCH) 422 423if test $prefix = $ac_default_prefix -o $prefix = NONE; then 424 scdatadir=$datadir 425else 426 scdatadir=$datadir/mpqc/$SC_VERSION 427fi 428AC_ARG_WITH(sc-datadir, 429[ --with-sc-datadir Specifies arch-independent install subdir.], 430scdatadir=$withval 431) 432AC_SUBST(scdatadir) 433 434AC_ARG_WITH(include, 435[ --with-include Specifies include directories (-Idir1 -Idir2).], 436EXTRAINCLUDE=$withval 437CPPFLAGS=$withval 438echo Using extra include directories: $withval 439) 440 441template_instantiation=none 442AC_ARG_WITH(template, 443[ --with-template Specifies template instantation model.], 444template_instantiation=$withval 445echo Using extra include directories: $withval 446) 447 448scincludedir=$includedir 449AC_ARG_WITH(sc-includedir, 450[ --with-sc-includedir Specifies include file install subdir.], 451scincludedir=$withval 452) 453AC_SUBST(scincludedir) 454 455AC_ARG_WITH(libs, 456[ --with-libs Specifies libraries (-llib1 -llib2).], 457LIBS=$withval 458echo Using extra libraries: $withval 459) 460 461XTRA_FLIBS= 462AC_ARG_WITH(extra-flibs, 463[ --with-extra-flibs Specifies libs needing a F77 runtime (-llib1 -llib2).], 464XTRA_FLIBS=$withval 465echo Using extra FORTRAN libraries: $withval 466) 467 468have_flibs=no 469AC_ARG_WITH(flibs, 470[ --with-flibs Specifies the F77 runtime (by default, will guess).], 471FLIBS=$withval 472have_flibs=yes 473echo Using FORTRAN runtime libraries: $withval 474) 475 476LDFLAGS= 477LIBDIRS= 478AC_ARG_WITH(libdirs, 479[ --with-libdirs Specifies library directories (-Ldir1 -Ldir2).], 480LIBDIRS=$withval 481LDFLAGS=$withval 482echo Using extra library directories: $withval 483) 484 485AC_ARG_WITH(cca-chem-config, 486[ --with-cca-chem-config Specifies full pathname of cca-chem-config script.], 487[ 488 CCA_CHEM_CONFIG=$withval 489 echo Using cca-chem-config: $withval 490],[ 491 if test "$components" == "yes"; then 492 AC_PATH_PROG(CCA_CHEM_CONFIG,cca-chem-config,"not-found") 493 fi 494] 495) 496 497dnl --------- Want absolute path for srcdir, not relative. --------- 498 499if test X$ac_srcdir_defaulted = Xyes; then 500 case $srcdir in 501 .|..|./*|../*) 502 srcdir=`(cd $srcdir; pwd)` 503 #srcdir=`(cd $srcdir; echo $PWD)` 504 ;; 505 esac 506fi 507 508dnl --------- Get the path to the compile dir. --------- 509 510compiledir=`pwd` 511AC_SUBST(compiledir) 512 513dnl --------- Need actual paths for substitution outside of a makefile. --------- 514 515if test $exec_prefix = "NONE"; then 516 if test $prefix = "NONE"; then 517 scbindir=$ac_default_prefix/bin; 518 sclibdir=$ac_default_prefix/lib; 519 else 520 scbindir=$prefix/bin; 521 sclibdir=$prefix/lib; 522 fi 523else 524 scbindir=$exec_prefix/bin 525 sclibdir=$exec_prefix/lib 526fi 527AC_SUBST(scbindir) 528AC_SUBST(sclibdir) 529 530dnl --------- Checks for programs. --------- 531AC_PROG_LN_S 532AC_PROG_INSTALL 533AC_PROG_RANLIB 534AC_PROG_CC 535dnl ac_prog_cxx's order isn't what i need 536AC_CHECK_PROGS(CXX, g++ c++ gcc CC cxx xlC_r, gcc) 537dnl sees if CXX is a GNU compiler 538AC_PROG_CXX 539if test ! "$F77" = no ; then 540 AC_PROG_F77 541 if test "X$have_flibs" = Xno; then 542 AC_F77_LIBRARY_LDFLAGS 543 fi 544fi 545FLIBS="$XTRA_FLIBS $FLIBS" 546AC_PROG_CPP 547AC_PROG_CXXCPP 548AC_CHECK_PROG(AR,ar,ar) 549AC_CHECK_PROG(PERL,perl,perl) 550AC_CHECK_PROG(WISH,wish,/usr/bin/wish) 551 552dnl The lack of certain tools is a show stopper 553 554changequote(<<, >>)dnl 555 556if [ X$PERL = X ]; then 557 echo "Could not find the program perl. It can be obtained at" 558 echo "ftp://prep.ai.mit.edu/pub/gnu" 559 exit 1 560fi 561 562changequote([, ])dnl 563 564dnl --------- Check for the graph generator used by doxygen 565 566DOT_PATH="" 567if test X$DOT = Xno; then 568 HAVE_DOT=NO 569elif test X$DOT = Xyes; then 570 AC_CHECK_PROG(HAVE_DOT,dot,YES,NO) 571else 572 HAVE_DOT=YES 573 DOT_PATH=$DOT 574fi 575AC_SUBST(DOT_PATH) 576AC_SUBST(HAVE_DOT) 577 578dnl -------- Checks for cross compiling. ---------- 579 580# obsolete starting at autoconf 2.12 581#if test X$cross_compiling != Xyes; then 582#AC_C_CROSS 583#fi 584 585#if test X$cross_compiling = Xyes -a X$target = X$host; then 586# AC_MSG_ERROR([Cross compiling, but target is host (use --host).]) 587#fi 588 589dnl -------- Checks for compiler/linker options. ---------- 590 591# options needed only for optimization 592COPTIONS_OPT=-O 593# options needed only for debugging 594COPTIONS_DBG=-g 595# options that are always needed 596COPTIONS_MISC= 597 598# options needed only for optimization 599CXXOPTIONS_OPT=-O 600# options needed only for debugging 601CXXOPTIONS_DBG=-g 602# options that are always needed 603CXXOPTIONS_MISC= 604 605OBJSUF=o 606LIBSUF=a 607 608dnl -- check how dependency information is built -- 609 610# The GNU compilers work with: 611CCDEPENDSUF=none 612CXXDEPENDSUF=none 613CCDEPENDFLAGS=-M 614CXXDEPENDFLAGS=-M 615 616/bin/rm -f depcheck.u depcheck.c depcheck.o 617 618# Check for an IBM visual age C compiler 619echo "#include <stdio.h>" > depcheck.c 620$CC $CPPFLAGS $CFLAGS -M depcheck.c > /dev/null 2>&1 621if test -f depcheck.u; then 622 CCDEPENDSUF=u 623fi 624/bin/rm -f depcheck.u depcheck.c depcheck.o 625 626# Check for an IBM visual age C++ compiler 627echo "#include <iostream>" > depcheck.cc 628$CXX $CPPFLAGS $CXXFLAGS -M -E depcheck.cc > /dev/null 2>&1 629if test -f depcheck.u; then 630 CXXDEPENDSUF=u 631 CXXDEPENDFLAGS="-M -E" 632fi 633/bin/rm -f depcheck.u depcheck.c depcheck.o 634 635dnl -- special misc options -- 636 637AC_MSG_CHECKING([for miscellaneous flags]) 638case $target in 639 *-cray-unicos*) 640 if test ! X$GXX = Xyes; then 641 CXXOPTIONS_MISC="$CXXOPTIONS_MISC -h new_for_init" 642 fi 643 AC_MSG_RESULT(cray) 644 ;; 645 *) 646 AC_MSG_RESULT(none) 647 ;; 648esac 649 650dnl -- special optimization options -- 651 652AC_MSG_CHECKING([for special optimization options]) 653case $target in 654 rs6000-ibm-aix3.2.* | rs6000-ibm-aix4.* | powerpc-ibm-aix4.* | powerpc-ibm-aix5.*) 655 if test X$GCC != Xyes; then 656 COPTIONS_OPT="-O -qnolm" 657 fi 658 if test X$GXX != Xyes; then 659 CXXOPTIONS_OPT="-O -qnolm -qrtti" 660 fi 661 AC_MSG_RESULT("rs6000 or powerpc") 662 ;; 663 alphaev6-*) 664 if test X$GCC = Xyes; then 665 COPTIONS_OPT="-O3 -mcpu=ev6" 666 else 667 COPTIONS_OPT="-O5 -arch ev6" 668 fi 669 if test X$GXX = Xyes; then 670 CXXOPTIONS_OPT="-O3 -mcpu=ev6" 671 else 672 CXXOPTIONS_OPT="-O5 -arch ev6" 673 fi 674 AC_MSG_RESULT("alphaev6") 675 ;; 676 alphaev56-*) 677 if test X$GCC = Xyes; then 678 COPTIONS_OPT="-O3 -mcpu=ev56" 679 else 680 COPTIONS_OPT="-O5 -arch ev56" 681 fi 682 if test X$GXX = Xyes; then 683 CXXOPTIONS_OPT="-O3 -mcpu=ev56" 684 else 685 CXXOPTIONS_OPT="-O5 -arch ev56" 686 fi 687 AC_MSG_RESULT("alphaev56") 688 ;; 689 mips*-sgi-irix5*) 690 if test X$GCC != Xyes; then 691 COPTIONS_OPT="-O -Olimit 2000" 692 fi 693 AC_MSG_RESULT("mips*-sgi-irix5") 694 ;; 695changequote(<<, >>)dnl 696 mips*-sgi-irix6.[01]*) 697changequote([, ])dnl 698 if test X$GCC != Xyes; then 699 COPTIONS_OPT="-O2 -TENV:use_fp \ 700 -OPT:const_copy_limit=20000:fold_arith_limit=20000:global_limit=20000" 701 fi 702 if test X$GXX != Xyes; then 703 CXXOPTIONS_OPT="-O2 -TENV:use_fp \ 704 -OPT:const_copy_limit=20000:fold_arith_limit=20000:global_limit=20000" 705 fi 706 AC_MSG_RESULT("mips*-sgi-irix6.0 or mips*-sgi-irix6.1") 707 ;; 708 mips*-sgi-irix*) 709 if test X$GCC != Xyes; then 710 COPTIONS_OPT="-O2 -OPT:Olimit=0" 711 fi 712 if test X$GXX != Xyes; then 713 CXXOPTIONS_OPT="-O2 -OPT:Olimit=0" 714 fi 715 AC_MSG_RESULT("mips*-sgi-irix") 716 ;; 717changequote(<<, >>)dnl 718 i[56]86-*) 719changequote([, ])dnl 720 if test X$GCC = Xyes; then 721 COPTIONS_OPT="-O2" 722 fi 723 if test X$GXX = Xyes; then 724 CXXOPTIONS_OPT="-O2" 725 fi 726 AC_MSG_RESULT("i586 or i686") 727 ;; 728 i860-intel-*) 729 if test X$GCC != Xyes; then 730 COPTIONS_OPT="-O3 -Knoieee" 731 fi 732 AC_MSG_RESULT("i860") 733 ;; 734 *) 735 AC_MSG_RESULT("none") 736 ;; 737esac 738 739dnl -- special architecture options -- 740 741case $target_cpu in 742 i786) 743 opt_target_cpu=pentium4 744 ;; 745 *) 746 opt_target_cpu=$target_cpu 747 ;; 748esac 749 750if test X$GXX == Xyes; then 751 AC_MSG_CHECKING([for C++ cpu tuning flag]) 752 AC_LANG_SAVE 753 AC_LANG_CPLUSPLUS 754 CXXFLAGS_SAV=$CXXFLAGS 755 CXXFLAGS="-mtune=$opt_target_cpu $CXXFLAGS_SAV" 756 AC_COMPILE_IFELSE([int main(){}],cxx_tuneflag="-mtune",cxx_tuneflag="-mcpu") 757 CXXFLAGS=$CXXFLAGS_SAV 758 AC_LANG_RESTORE 759 AC_MSG_RESULT($cxx_tuneflag) 760fi 761 762if test X$GCC == Xyes; then 763 AC_MSG_CHECKING([for C cpu tuning flag]) 764 CFLAGS_SAV=$CFLAGS 765 CFLAGS="-mtune=$opt_target_cpu $CFLAGS_SAV" 766 AC_COMPILE_IFELSE([int main(){}],cc_tuneflag="-mtune",cc_tuneflag="-mcpu") 767 CFLAGS=$CFLAGS_SAV 768 AC_MSG_RESULT($cc_tuneflag) 769fi 770 771AC_MSG_CHECKING([for special architecture options]) 772case $target in 773 *-solaris2*) 774 if test X$GCC != Xyes; then 775 CCDEPENDFLAGS="-xM" 776 fi 777 if test X$GXX != Xyes; then 778 CXXDEPENDFLAGS="-xM" 779 fi 780 ;; 781 rs6000-ibm-aix* | powerpc-ibm-aix*) 782 if test X$GCC != Xyes; then 783 LDFLAGS="$LDFLAGS -bmaxdata:0x70000000" 784 fi 785 AC_MSG_RESULT(rs6000 or powerpc) 786 ;; 787 i686-intel-cougar*) 788 COPTIONS_MISC="$COPTIONS_MISC -mcougar" 789 CXXOPTIONS_MISC="$CXXOPTIONS_MISC -mcougar" 790 EXTRADEFINES="-D_REENTRANT $EXTRADEFINES" 791 if test X$cross_compiling = Xyes; then 792 AR=tflop-ar 793 fi 794 AC_MSG_RESULT(teraflop cougar) 795 ;; 796changequote(<<, >>)dnl 797 i[4567]86-* | pentium-* | pentium4-* | pentiumpro-* | k6-* | athlon-*) 798changequote([, ])dnl 799 800 if test X$STRICT_ARCH = Xyes; then 801 cxx_cpu_arch_option="-march=$opt_target_cpu" 802 cc_cpu_arch_option="-march=$opt_target_cpu" 803 else 804 cxx_cpu_arch_option="$cxx_tuneflag=$opt_target_cpu" 805 cc_cpu_arch_option="$cc_tuneflag=$opt_target_cpu" 806 fi 807 if test X$GCC = Xyes; then 808 COPTIONS_OPT="$COPTIONS_OPT $cc_cpu_arch_option" 809 fi 810 if test X$GXX = Xyes; then 811 CXXOPTIONS_OPT="$CXXOPTIONS_OPT $cxx_cpu_arch_option" 812 fi 813 AC_MSG_RESULT(IA-32: $cpu_arch_option) 814 ;; 815 i860-intel-puma*) 816 if test X$GCC = Xyes; then 817 COPTIONS_MISC="$COPTIONS_MISC -mpuma" 818 else 819 COPTIONS_MISC="$COPTIONS_MISC -D__PUMAGON__" 820 COPTIONS_MISC="$COPTIONS_MISC -L$PARAGON_XDEV/paragon/lib-coff/puma" 821 COPTIONS_MISC="$COPTIONS_MISC -YS,$PARAGON_XDEV/paragon/lib-coff/puma" 822 COPTIONS_MISC="$COPTIONS_MISC -lpuma -lm -lkmath" 823 COPTIONS_MISC="$COPTIONS_MISC $PARAGON_XDEV/paragon/lib-coff/puma/libstubs.o" 824 fi 825 if test X$GXX = Xyes; then 826 CXXOPTIONS_MISC="$CXXOPTIONS_MISC -mpuma" 827 fi 828 if test X$cross_compiling = Xyes; then 829 AR=ar860 830 fi 831 AC_MSG_RESULT(paragon puma) 832 ;; 833 i860-intel-sunmos*) 834 if test X$GCC = Xyes; then 835 COPTIONS_MISC="$COPTIONS_MISC -msunmos" 836 else 837 COPTIONS_MISC="$COPTIONS_MISC -DSUNMOS -D__PUMAGON__" 838 COPTIONS_MISC="$COPTIONS_MISC -L$PARAGON_XDEV/paragon/lib-coff/sunmos" 839 COPTIONS_MISC="$COPTIONS_MISC -Wl,-d0x4000000,-k" 840 COPTIONS_MISC="$COPTIONS_MISC -YS,$PARAGON_XDEV/paragon/lib-coff/sunmos" 841 COPTIONS_MISC="$COPTIONS_MISC -lm -lsunmos -lm" 842 fi 843 if test X$GXX = Xyes; then 844 CXXOPTIONS_MISC="$CXXOPTIONS_MISC -msunmos" 845 fi 846 if test X$cross_compiling = Xyes; then 847 AR=ar860 848 fi 849 AC_MSG_RESULT(paragon sunmos) 850 ;; 851 i860-intel-osf*) 852 if test X$GCC = Xyes; then 853 COPTIONS_MISC="$COPTIONS_MISC -mnx" 854 fi 855 if test X$GXX = Xyes; then 856 CXXOPTIONS_MISC="$CXXOPTIONS_MISC -mnx" 857 fi 858 if test X$cross_compiling = Xyes; then 859 AR=ar860 860 fi 861 AC_MSG_RESULT(paragon osf) 862 ;; 863 *) 864 AC_MSG_RESULT("none") 865 ;; 866esac 867 868dnl -- check for overriden optimization options -- 869 870if test -n "$GIVEN_COPTIONS_OPT"; then 871 COPTIONS_OPT=$GIVEN_COPTIONS_OPT 872 AC_MSG_NOTICE("overriding C optimization flags with $COPTIONS_OPT") 873fi 874 875if test -n "$GIVEN_CXXOPTIONS_OPT"; then 876 CXXOPTIONS_OPT=$GIVEN_CXXOPTIONS_OPT 877 AC_MSG_NOTICE("overriding C++ optimization flags with $CXXOPTIONS_OPT") 878fi 879 880dnl ----------- check for C++ typename --------------- 881dnl This is done before template flags are set to avoid 882dnl undefined symbol problems. 883 884AC_LANG_SAVE 885AC_LANG_CPLUSPLUS 886AC_MSG_CHECKING("for C++ typename keyword") 887AC_TRY_LINK([ 888 class X { public: typedef int t; X(){} }; 889 template <class T> void f(T i) {typename T::t x;} 890],[ 891 X g; 892 f(g); 893],[ 894AC_DEFINE(HAVE_TYPENAME) 895AC_MSG_RESULT("yes") 896], 897AC_MSG_RESULT("no") 898); 899AC_LANG_RESTORE 900 901dnl ----------- check for C++ restrict extension --------------- 902 903AC_LANG_SAVE 904AC_LANG_CPLUSPLUS 905AC_TRY_LINK(,[double *restrict x=0;],AC_DEFINE(CXX_RESTRICT)) 906AC_LANG_RESTORE 907 908dnl ---------- Checks for C++ header files. ----------- 909 910AC_LANG_SAVE 911AC_LANG_CPLUSPLUS 912AC_CHECK_HEADERS(iostream sstream) 913AC_LANG_RESTORE 914 915AC_MSG_CHECKING(iostream name) 916if test x$ac_cv_header_iostream = xyes; then 917 iostream=iostream 918else 919 iostream=iostream.h 920fi 921AC_MSG_RESULT($iostream) 922 923dnl ----------- check for namespace std --------------- 924 925AC_LANG_SAVE 926AC_LANG_CPLUSPLUS 927AC_MSG_CHECKING("for namespace std") 928AC_TRY_LINK([ 929#include <$iostream> 930using namespace std; 931],[ 932 ostream &o = cout; 933 o << endl; 934],[ 935AC_DEFINE(USING_NAMESPACE_STD) 936NAMESPACE_STD=std:: 937AC_MSG_RESULT("yes") 938], 939NAMESPACE_STD= 940AC_MSG_RESULT("no") 941); 942AC_LANG_RESTORE 943 944dnl ----------- check for GNU libc++-v3 prerelease bug --------------- 945 946if test X$GXX = Xyes; then 947AC_LANG_SAVE 948AC_LANG_CPLUSPLUS 949AC_MSG_CHECKING("for GNU libc++-v3 prerelease bug") 950AC_TRY_LINK([ 951#include <stdio.h> 952#include <$iostream> 953],[ 954],[ 955AC_MSG_RESULT("no") 956], 957EXTRADEFINES="$EXTRADEFINES -D_ISOC99_SOURCE=1" 958AC_MSG_RESULT("yes") 959); 960AC_LANG_RESTORE 961fi 962 963dnl -- other options -- 964 965if test $DEBUG = yes; then 966 CFLAGS="$COPTIONS_DBG $COPTIONS_MISC" 967 CXXFLAGS="$CXXOPTIONS_DBG $CXXOPTIONS_MISC" 968 LDFLAGS="$LDFLAGS -g" 969elif test $DEBUG = opt; then 970 CFLAGS="$COPTIONS_DBG $COPTIONS_OPT $COPTIONS_MISC" 971 CXXFLAGS="$CXXOPTIONS_DBG $CXXOPTIONS_OPT $CXXOPTIONS_MISC" 972 LDFLAGS="$LDFLAGS -g" 973else 974 CFLAGS="$COPTIONS_OPT $COPTIONS_MISC" 975 CXXFLAGS="$CXXOPTIONS_OPT $CXXOPTIONS_MISC" 976fi 977 978AC_SUBST(EXTRAINCLUDE) 979 980AC_SUBST(CFLAGS) 981AC_SUBST(CXXFLAGS) 982 983AC_SUBST(LDFLAGS) 984AC_SUBST(LIBDIRS) 985 986AC_SUBST(OBJSUF) 987AC_SUBST(LIBSUF) 988AC_SUBST(CCDEPENDSUF) 989AC_SUBST(CXXDEPENDSUF) 990AC_SUBST(CCDEPENDFLAGS) 991AC_SUBST(CXXDEPENDFLAGS) 992 993dnl -------- Checks for architecture specific features. -------- 994dnl (Doesn't work for cross compilation.) 995dnl AC_CHECK_SIZEOF(void*) 996 997dnl This version works on more machines without the need to run 998dnl a test program. 999AC_DEFUN([SC_C_BIGENDIAN], 1000[AC_CHECK_HEADERS(fp.h endian.h machine/endian.h sys/endian.h sys/machine.h) 1001AC_CACHE_CHECK(whether byte ordering is bigendian, sc_cv_c_bigendian, 1002[sc_cv_c_bigendian=unknown 1003# See if sys/param.h defines the BYTE_ORDER macro. 1004AC_TRY_COMPILE([#include "confdefs.h" 1005#ifdef HAVE_FP_H 1006#include <fp.h> 1007#endif 1008#ifdef HAVE_ENDIAN_H 1009#include <endian.h> 1010#endif 1011#ifdef HAVE_MACHINE_ENDIAN_H 1012#include <machine/endian.h> 1013#endif 1014#ifdef HAVE_SYS_ENDIAN_H 1015#include <sys/endian.h> 1016#endif 1017#ifdef HAVE_SYS_MACHINE_H 1018#include <sys/machine.h> 1019#endif 1020#include <sys/types.h> 1021#include <sys/param.h>], [ 1022#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN 1023 bogus endian macros 1024#endif], [# It does; now see whether it defined to BIG_ENDIAN or not. 1025AC_TRY_COMPILE([#include "confdefs.h" 1026#ifdef HAVE_FP_H 1027#include <fp.h> 1028#endif 1029#ifdef HAVE_MP_H 1030#include <mp.h> 1031#endif 1032#ifdef HAVE_ENDIAN_H 1033#include <endian.h> 1034#endif 1035#ifdef HAVE_MACHINE_ENDIAN_H 1036#include <machine/endian.h> 1037#endif 1038#ifdef HAVE_SYS_ENDIAN_H 1039#include <sys/endian.h> 1040#endif 1041#ifdef HAVE_SYS_MACHINE_H 1042#include <sys/machine.h> 1043#endif 1044#include <sys/types.h> 1045#include <sys/param.h>], [ 1046#if BYTE_ORDER != BIG_ENDIAN 1047 not big endian 1048#endif], sc_cv_c_bigendian=yes, sc_cv_c_bigendian=no)]) 1049if test $sc_cv_c_bigendian = unknown; then 1050AC_TRY_RUN([main () { 1051 /* Are we little or big endian? From Harbison&Steele. */ 1052 union 1053 { 1054 long l; 1055 char c[sizeof (long)]; 1056 } u; 1057 u.l = 1; 1058 exit (u.c[sizeof (long) - 1] == 1); 1059}], sc_cv_c_bigendian=no, sc_cv_c_bigendian=yes, 1060AC_MSG_ERROR([Could not determine endianness and cross compiling]) 1061) 1062fi]) 1063if test $sc_cv_c_bigendian = yes; then 1064 AC_DEFINE(WORDS_BIGENDIAN) 1065fi 1066]) 1067 1068SC_C_BIGENDIAN 1069 1070dnl --------- Checks for libraries. --------- 1071dnl -- libpthread should be linked in last. 1072dnl -- Check on pthread_join since pthread_create, but not pthread_join, 1073dnl -- seems to be in libc on IRIX and we must generate a -lpthread in LIBS. 1074if test "(" X$PARALLEL = Xyes -a X$THREADS != Xno ")" -o X$THREADS = Xyes; then 1075 1076AC_MSG_CHECKING([pthreads]) 1077dnl see if posix threads are automatically linked ... 1078AC_LANG_SAVE 1079AC_LANG_CPLUSPLUS 1080LIBSSAV="$LIBS" 1081AC_TRY_LINK([#include <pthread.h>],[pthread_join(0,0);],[ 1082HAVE_PTHREAD=yes],[ 1083HAVE_PTHREAD=no]) 1084AC_LANG_RESTORE 1085 1086dnl see if posix threads are in -lpthread 1087if test $HAVE_PTHREAD = no; then 1088AC_LANG_SAVE 1089AC_LANG_CPLUSPLUS 1090LIBSSAV="$LIBS" 1091LIBS="$LIBS -lpthread" 1092AC_TRY_LINK([#include <pthread.h>],[pthread_join(0,0);],[ 1093HAVE_PTHREAD=yes],[ 1094HAVE_PTHREAD=no 1095LIBS="$LIBSSAV"]) 1096AC_LANG_RESTORE 1097fi 1098 1099dnl see if posix threads are in -lpthreads 1100if test $HAVE_PTHREAD = no; then 1101AC_LANG_SAVE 1102AC_LANG_CPLUSPLUS 1103LIBSSAV="$LIBS" 1104LIBS="$LIBS -lpthreads" 1105AC_TRY_LINK([#include <pthread.h>],[pthread_join(0,0);],[ 1106HAVE_PTHREAD=yes],[ 1107HAVE_PTHREAD=no 1108LIBS="$LIBSSAV"]) 1109AC_LANG_RESTORE 1110fi 1111 1112AC_MSG_RESULT($HAVE_PTHREAD) 1113fi 1114if test X$HAVE_PTHREAD = Xyes; then 1115 AC_DEFINE(HAVE_PTHREAD) 1116 EXTRADEFINES="-D_REENTRANT $EXTRADEFINES" 1117 AC_CHECK_FUNC(pthread_attr_getstacksize) 1118 AC_CHECK_FUNC(pthread_attr_setstacksize) 1119 AC_CHECK_FUNC(pthread_attr_setscope) 1120 AC_CHECK_FUNC(pthread_attr_getscope) 1121 AC_CHECK_FUNC(pthread_attr_setinheritsched) 1122 AC_CHECK_FUNC(pthread_attr_getinheritsched) 1123 AC_CHECK_FUNC(pthread_attr_setschedpolicy) 1124 AC_CHECK_FUNC(pthread_attr_getschedpolicy) 1125 AC_CHECK_FUNC(pthread_attr_setschedparam) 1126 AC_CHECK_FUNC(pthread_attr_getschedparam) 1127 AC_CHECK_FUNC(sched_get_priority_max) 1128 AC_CHECK_FUNC(sched_get_priority_min) 1129fi 1130 1131AC_CHECK_LIB(dl,main) 1132dnl commented out for Cray X1 (-lsun falsely detected) 1133dnl AC_CHECK_LIB(sun,main) 1134AC_CHECK_LIB(m,main) 1135AC_CHECK_LIB(fl,main) 1136AC_CHECK_HEADER(perf.h,[ 1137 AC_CHECK_LIB(perf,perf_set_config,[ 1138 HAVE_PERF=yes 1139 LIBS="-lperf $LIBS" 1140 AC_DEFINE(HAVE_PERF) 1141 ]) 1142 ] 1143) 1144 1145AC_CHECK_HEADER(execinfo.h,HAVE_EXECINFO_H_INC=1) 1146AC_CHECK_FUNC(backtrace, HAVE_BACKTRACE_FUNC=1) 1147AC_CHECK_FUNC(backtrace_symbols_fd, HAVE_BACKTRACE_SYMBOLS_FD_FUNC=1) 1148if test -n "$HAVE_EXECINFO_H_INC" -a -n "$HAVE_BACKTRACE_FUNC" -a -n "$HAVE_BACKTRACE_SYMBOLS_FD_FUNC"; then 1149 AC_DEFINE(HAVE_BACKTRACE) 1150fi 1151 1152if test X$PARALLEL = Xyes; then 1153 1154 dnl ----- check for the mpi library 1155 AC_LANG_SAVE 1156 AC_LANG_CPLUSPLUS 1157 dnl Must use try_link since check_header runs cpp which doesn't 1158 dnl always find mpi.h (if mpicc and no -I is used for example) 1159 AC_MSG_CHECKING(for mpi.h) 1160 AC_TRY_LINK([#include <mpi.h>],[],have_mpi_h=yes,have_mpi_h=no) 1161 AC_MSG_RESULT($have_mpi_h) 1162 if test "$have_mpi_h" = yes; then 1163 AC_CHECK_FUNC(MPI_Init,HAVE_MPI=yes,HAVE_MPI=no) 1164 if test "$HAVE_MPI" = no; then 1165 AC_CHECK_LIB(mpi,MPI_Init,[HAVE_MPI=yes;LIBS="-lmpi $LIBS"]) 1166 fi 1167 if test "$HAVE_MPI" = no; then 1168 AC_CHECK_LIB(mpich,MPI_Init,[HAVE_MPI=yes;LIBS="-lmpich $LIBS"]) 1169 fi 1170 fi 1171 if test X$HAVE_MPI = Xyes; then 1172 AC_DEFINE(HAVE_MPI) 1173 AC_CHECK_FUNC(MPI_File_open, 1174 [HAVE_MPIIO=yes;AC_DEFINE(HAVE_MPIIO)]) 1175 AC_CHECK_FUNC(MPI_Init_thread, 1176 [AC_DEFINE(HAVE_MPI_INIT_THREAD)]) 1177 HAVE_MPIPP=no; 1178 AC_CHECK_LIB(mpi++,MPI_Abort,[HAVE_MPIPP=yes;LIBS="-lmpi++ $LIBS"]) 1179 if test X$HAVE_MPIPP = Xno; then 1180 AC_CHECK_LIB(pmpich++,MPI_Abort,[HAVE_MPIPP=yes;LIBS="-lpmpich++ $LIBS"]) 1181 fi 1182 AC_DEFINE(HAVE_MPIPP) 1183 fi 1184 AC_LANG_RESTORE 1185fi 1186 1187if test X$HAVE_MPI != Xyes -a $ALWAYS_USE_MPI = yes; then 1188 AC_MSG_ERROR([--enable-always-use-mpi is set but MPI is not available]) 1189elif test $ALWAYS_USE_MPI = yes; then 1190 AC_DEFINE(ALWAYS_USE_MPI) 1191fi 1192 1193 dnl ------ check for the armci library 1194 AC_LANG_SAVE 1195 AC_LANG_CPLUSPLUS 1196 AC_CHECK_HEADER(armci.h,[ 1197 AC_CHECK_FUNC(ARMCI_Init,HAVE_ARMCI=yes,[ 1198 AC_CHECK_LIB(armci,ARMCI_Init,[HAVE_ARMCI=yes;LIBS="-larmci $LIBS"]) 1199 ]) 1200 ]) 1201 AC_LANG_RESTORE 1202 1203 if test X$HAVE_ARMCI = Xyes; then 1204 AC_DEFINE(HAVE_ARMCI) 1205 fi 1206 1207if test $DEFAULT_PARALLEL = mtmpi -a X$HAVE_MPI != Xyes; then 1208 AC_MSG_ERROR([--with-default-parallel=mtmpi but MPI not available]) 1209fi 1210if test $DEFAULT_PARALLEL = armcimpi -a X$HAVE_MPI != Xyes; then 1211 AC_MSG_ERROR([--with-default-parallel=armcimpi but MPI not available]) 1212fi 1213if test $DEFAULT_PARALLEL = armcimpi -a X$HAVE_ARMCI != Xyes; then 1214 AC_MSG_ERROR([--with-default-parallel=armcimpi but ARMCI not available]) 1215fi 1216 1217AC_SUBST(HAVE_PERF) 1218AC_SUBST(HAVE_MPI) 1219AC_SUBST(ALWAYS_USE_MPI) 1220AC_SUBST(HAVE_ARMCI) 1221AC_SUBST(HAVE_MPIIO) 1222AC_SUBST(HAVE_PTHREAD) 1223AC_SUBST(EXTRADEFINES) 1224 1225dnl ---------- Checks for header files. ----------- 1226 1227AC_HEADER_STDC 1228AC_CHECK_HEADERS(fcntl.h limits.h sys/ioctl.h sys/time.h unistd.h pwd.h) 1229AC_CHECK_HEADERS(sys/times.h sys/resource.h time.h machine/fpu.h asm/fpu.h) 1230AC_CHECK_HEADERS(termios.h sys/stat.h sys/types.h dlfcn.h stdint.h) 1231 1232dnl -- Checks for typedefs, structures, and compiler characteristics. -- 1233AC_C_CONST 1234AC_TYPE_SIZE_T 1235AC_STRUCT_TM 1236 1237dnl --------- Checks for library functions. --------- 1238AC_TYPE_SIGNAL 1239AC_FUNC_VPRINTF 1240AC_CHECK_FUNCS(strerror sigfillset signal system getpwuid geteuid) 1241AC_CHECK_FUNCS(gethostname time ctime) 1242AC_CHECK_FUNCS(setrlimit setenv) 1243 1244dnl --------- Check for an isnan and make sure it can be used 1245dnl with iostream (it can't on OS X) 1246AC_LANG_SAVE 1247AC_LANG_CPLUSPLUS 1248AC_MSG_CHECKING(isnan and iostream) 1249AC_LINK_IFELSE([ 1250 #include <iostream> 1251 #include <math.h> 1252 int main(int,char**) { isnan(1.0); return 0; } 1253 ], 1254 AC_DEFINE(HAVE_ISNAN) 1255 AC_MSG_RESULT(yes), 1256 AC_MSG_RESULT(no) 1257) 1258AC_LANG_RESTORE 1259 1260dnl --------- Check for the glibc extensions to C99 fenv.h. --------- 1261 1262AC_CHECK_HEADERS(fenv.h) 1263AC_CHECK_FUNCS(feenableexcept fedisableexcept) 1264 1265dnl --------- Checks for a C++ linkable fchdir. --------- 1266AC_LANG_SAVE 1267AC_LANG_CPLUSPLUS 1268AC_MSG_CHECKING([fchdir]) 1269AC_TRY_COMPILE([#include <unistd.h>],[ 1270fchdir(0); 1271],[HAVE_FCHDIR=yes 1272AC_DEFINE(HAVE_FCHDIR) 1273AC_MSG_RESULT(yes)],[ 1274AC_MSG_RESULT(no) 1275HAVE_FCHDIR=no 1276]) 1277AC_LANG_RESTORE 1278AC_SUBST(HAVE_FCHDIR) 1279 1280dnl --------- Check for ios::fmtflags. --------- 1281 1282AC_LANG_SAVE 1283AC_LANG_CPLUSPLUS 1284AC_MSG_CHECKING([ios::fmtflags]) 1285AC_TRY_COMPILE([#include <$iostream>],[ 1286$NAMESPACE_STD ios::fmtflags flags; 1287],[HAVE_IOS_FMTFLAGS=yes 1288AC_DEFINE(HAVE_IOS_FMTFLAGS) 1289AC_MSG_RESULT(yes)],[ 1290AC_MSG_RESULT(no) 1291HAVE_IOS_FMTFLAGS=no 1292]) 1293AC_LANG_RESTORE 1294AC_SUBST(HAVE_IOS_FMTFLAGS) 1295 1296dnl --------- check for long long --------- 1297 1298if test X"$LONGLONG" = Xyes; then 1299AC_LANG_SAVE 1300AC_LANG_CPLUSPLUS 1301AC_MSG_CHECKING(long long) 1302AC_TRY_COMPILE([],[ 1303long long i; 1304],[AC_DEFINE(HAVE_LONG_LONG) 1305AC_MSG_RESULT(yes)],[ 1306AC_MSG_RESULT(no) 1307]) 1308AC_LANG_RESTORE 1309fi 1310 1311dnl --------- Check for sgetn. --------- 1312 1313AC_LANG_SAVE 1314AC_LANG_CPLUSPLUS 1315AC_MSG_CHECKING([sgetn]) 1316AC_TRY_COMPILE([#include <$iostream>],[ 1317char *c=0; 1318$NAMESPACE_STD streambuf *s=0; s->sgetn(c,0); 1319],[HAVE_SGETN=yes 1320AC_DEFINE(HAVE_SGETN) 1321AC_MSG_RESULT(yes)],[ 1322AC_MSG_RESULT(no) 1323HAVE_SGETN=no 1324]) 1325AC_LANG_RESTORE 1326AC_SUBST(HAVE_SGETN) 1327 1328dnl --------- Check for pubseekoff. --------- 1329 1330AC_LANG_SAVE 1331AC_LANG_CPLUSPLUS 1332AC_MSG_CHECKING([pubseekoff]) 1333AC_TRY_COMPILE([#include <$iostream>],[ 1334$NAMESPACE_STD cout.rdbuf()->pubseekoff(0,$NAMESPACE_STD ios::beg, 1335 $NAMESPACE_STD ios::out); 1336],[HAVE_PUBSEEKOFF=yes 1337AC_DEFINE(HAVE_PUBSEEKOFF) 1338AC_MSG_RESULT(yes)],[ 1339AC_MSG_RESULT(no) 1340HAVE_PUBSEEKOFF=no 1341]) 1342AC_LANG_RESTORE 1343AC_SUBST(HAVE_PUBSEEKOFF) 1344 1345dnl --------- Check for seekoff. --------- 1346 1347AC_LANG_SAVE 1348AC_LANG_CPLUSPLUS 1349AC_MSG_CHECKING([seekoff]) 1350AC_TRY_COMPILE([#include <$iostream>],[ 1351$NAMESPACE_STD cout.rdbuf()->seekoff(0,$NAMESPACE_STD ios::beg, 1352 $NAMESPACE_STD ios::out); 1353],[HAVE_SEEKOFF=yes 1354AC_DEFINE(HAVE_SEEKOFF) 1355AC_MSG_RESULT(yes)],[ 1356AC_MSG_RESULT(no) 1357HAVE_SEEKOFF=no 1358]) 1359AC_LANG_RESTORE 1360AC_SUBST(HAVE_SEEKOFF) 1361 1362dnl --------- Check for signal handler argument lists. --------- 1363 1364AC_LANG_SAVE 1365AC_LANG_CPLUSPLUS 1366AC_MSG_CHECKING([signal handler needs ellipsis]) 1367AC_TRY_LINK([ 1368#include <signal.h> 1369extern "C" { 1370 typedef void (*signal_handler)(...); 1371 void handler(int); 1372} 1373void handler(int) {} 1374],[ 1375 signal(SIGINT, (signal_handler)handler); 1376], 1377AC_DEFINE(SIGHASELLIP) AC_MSG_RESULT(yes), 1378AC_MSG_RESULT(no)) 1379AC_LANG_RESTORE 1380 1381dnl --------- Checks for rand functions --------- 1382 1383AC_LANG_SAVE 1384AC_LANG_CPLUSPLUS 1385AC_CHECK_FUNCS(drand48) 1386AC_LANG_RESTORE 1387 1388dnl --------- Checks for SYSV IPC. --------- 1389 1390if test "X$SYSVIPC" = Xyes; then 1391 AC_CHECK_FUNCS(shmget semget) 1392 AC_CHECK_HEADERS(sys/ipc.h sys/sem.h sys/shm.h) 1393 AC_MSG_CHECKING([for SYSV IPC]) 1394 if test X$ac_cv_func_shmget = Xyes -a \ 1395 X$ac_cv_func_semget = Xyes -a \ 1396 X$ac_cv_header_sys_ipc_h = Xyes -a \ 1397 X$ac_cv_header_sys_sem_h = Xyes -a \ 1398 X$ac_cv_header_sys_shm_h = Xyes; then 1399 HAVE_SYSV_IPC=yes 1400 AC_DEFINE(HAVE_SYSV_IPC) 1401 else 1402 HAVE_SYSV_IPC=no 1403 fi 1404 AC_MSG_RESULT($HAVE_SYSV_IPC) 1405 AC_SUBST(HAVE_SYSV_IPC) 1406else 1407 HAVE_SYSV_IPC=no 1408 AC_SUBST(HAVE_SYSV_IPC) 1409fi 1410 1411AC_LANG_SAVE 1412AC_LANG_CPLUSPLUS 1413AC_MSG_CHECKING([if semctl requires semun]) 1414AC_TRY_LINK([ 1415#include <sys/types.h> 1416#include <sys/ipc.h> 1417#include <sys/sem.h> 1418],[ 1419 int val = 0; 1420 semctl(0,0,0,val); 1421],[ 1422case $target in 1423 *-sgi-irix*) 1424 AC_DEFINE(SEMCTL_REQUIRES_SEMUN) AC_MSG_RESULT(sgi-irix -- yes) 1425 ;; 1426 *) 1427 AC_MSG_RESULT(no) 1428 ;; 1429esac 1430], 1431AC_DEFINE(SEMCTL_REQUIRES_SEMUN) AC_MSG_RESULT(yes)) 1432AC_LANG_RESTORE 1433 1434dnl ----------- See if Fortran works -------------- 1435 1436AC_MSG_CHECKING(if fortran compiler works) 1437if test -n "$F77" -a "$F77" != no ; then 1438 /bin/rm -f ffunc.f flink.c 1439 echo " program main" > ffunc.f 1440 echo " end" >> ffunc.f 1441 if $F77 -o ffunc ffunc.f 1>&5 2>&5; then 1442 AC_MSG_RESULT(yes) 1443 else 1444 AC_MSG_RESULT(no) 1445 AC_MSG_FAILURE(fortran compiler does not work) 1446 fi 1447 /bin/rm -f ffunc ffunc.f 1448fi 1449 1450dnl ----------- Fortran symbol names -------------- 1451 1452AC_MSG_CHECKING(fortran symbols) 1453if test -n "$F77" -a "$F77" != no ; then 1454 /bin/rm -f ffunc.f flink.c 1455 echo " subroutine ffunc()" > ffunc.f 1456 echo " return" >> ffunc.f 1457 echo " end" >> ffunc.f 1458 $F77 -c ffunc.f 1>/dev/null 2>/dev/null 1459 echo "main(){ FF(); return 0; }" > flink.c 1460 if $CC -o flink -DFF=ffunc flink.c ffunc.o $LDFLAGS $LIBS 1>/dev/null 2>/dev/null; then 1461 AC_MSG_RESULT(same as C) 1462 F77_SYMBOLS=symbol 1463 elif $CC -o flink -DFF=ffunc_ flink.c ffunc.o $LDFLAGS $LIBS 1>/dev/null 2>/dev/null; then 1464 AC_MSG_RESULT(lowercase with underscore) 1465 F77_SYMBOLS=symbol_ 1466 elif $CC -o flink -DFF=FFUNC flink.c ffunc.o $LDFLAGS $LIBS 1>/dev/null 2>/dev/null; then 1467 AC_MSG_RESULT(uppercase) 1468 F77_SYMBOLS=SYMBOL 1469 elif $CC -o flink -DFF=FFUNC_ flink.c ffunc.o $LDFLAGS $LIBS 1>/dev/null 2>/dev/null; then 1470 AC_MSG_RESULT(uppercase with underscore) 1471 F77_SYMBOLS=SYMBOL_ 1472 else 1473 AC_MSG_RESULT(giving up) 1474 AC_MSG_ERROR(could not determine F77 symbol names) 1475 fi 1476 /bin/rm -f ffunc.f ffunc.o flink flink.c flink.o ffunc 1477else 1478 F77_SYMBOLS=symbol_ 1479 AC_MSG_RESULT(guessing lowercase with underscore) 1480fi 1481AC_SUBST(F77_SYMBOLS) 1482 1483dnl ----------- check for FORTRAN libraries -------------- 1484 1485AC_LANG_SAVE 1486AC_LANG_CPLUSPLUS 1487LIBSSAV="$LIBS" 1488LIBS="$LIBSSAV $FLIBS" 1489 1490LIBBLAS="" 1491F77_DGEMM=`$PERL $srcdir/bin/mkf77sym.pl.in -method $F77_SYMBOLS DAXPY` 1492AC_CHECK_FUNC($F77_DGEMM,HAVE_BLAS=yes,[ 1493 AC_CHECK_LIB(essl,$F77_DGEMM,[HAVE_BLAS=yes;LIBBLAS="-lessl"], 1494 AC_CHECK_LIB(blas,$F77_DGEMM,[HAVE_BLAS=yes;LIBBLAS="-lblas"]) 1495 )] 1496) 1497if test X$HAVE_BLAS != Xyes; then 1498 LIBSSAV2="$LIBS" 1499 LIBS="-latlas $LIBS" 1500 AC_CHECK_LIB(f77blas,$F77_DGEMM,[HAVE_BLAS=yes;LIBBLAS="-lf77blas -latlas"], 1501 LIBS="$LIBSSAV2") 1502fi 1503AC_SUBST(HAVE_BLAS) 1504if test X$HAVE_BLAS != Xyes; then 1505 echo "WARNING: Could not link to the BLAS library. It can be obtained at" 1506 echo "http://www.netlib.org/blas. Use --with-libdirs and/or --with-libs" 1507 echo "to specify the name of the library." 1508 AC_MSG_ERROR([BLAS is required to complete the build]) 1509fi 1510 1511LIBS="$LIBSSAV $LIBBLAS $FLIBS" 1512 1513LIBLAPACK="" 1514F77_DGESVD=`$PERL $srcdir/bin/mkf77sym.pl.in -method $F77_SYMBOLS DGESVD` 1515AC_CHECK_FUNC($F77_DGESVD,HAVE_LAPACK=yes,[ 1516 AC_CHECK_LIB(lapack,$F77_DGESVD,[HAVE_LAPACK=yes;LIBLAPACK="-llapack"] 1517 )] 1518) 1519AC_SUBST(HAVE_LAPACK) 1520if test X$HAVE_LAPACK != Xyes; then 1521 echo "Could not link to the LAPACK library. It can be obtained at" 1522 echo "http://www.netlib.org/lapack. Use --with-libdirs and/or --with-libs" 1523 echo "to specify the name of the library." 1524 AC_MSG_ERROR([LAPACK is required to complete the build]) 1525fi 1526 1527FLIBS="$LIBLAPACK $LIBBLAS $FLIBS" 1528AC_LANG_RESTORE 1529 1530dnl ----------- check for Scalable BLAS library -------------- 1531 1532LIBSSAV="$LIBS" 1533LIBS="$LIBS $FLIBS" 1534HAVE_SCALABLE_BLAS=no 1535AC_CHECK_FUNC(sB_init, 1536 HAVE_SCALABLE_BLAS=yes,[ 1537 AC_CHECK_LIB(sB_BLAS,sB_init,[ 1538 HAVE_SCALABLE_BLAS=yes 1539 LIBSSAV="-lsB_BLAS $LIBSSAV" 1540 ])] 1541) 1542LIBS="$LIBSSAV" 1543if test $HAVE_SCALABLE_BLAS = yes; then 1544 AC_DEFINE(HAVE_SCALABLE_BLAS) 1545fi 1546 1547dnl ----------- NIAMA library checks -------------- 1548 1549AC_LANG_SAVE 1550AC_LANG_CPLUSPLUS 1551AC_CHECK_PROG(NIAMACFG,niama-config,niama-config) 1552if test X$NIAMACFG != X; then 1553 LIBSSAV="$LIBS" 1554 CPPSAV="$CPPFLAGS" 1555 NIAMALIBS="`niama-config --libs` `niama-config --corbalibs`" 1556 CPPFLAGS="$CPPFLAGS `niama-config --cppflags`" 1557 LIBS="$NIAMALIBS $LIBS" 1558AC_TRY_LINK([ 1559#include <niama.h> 1560],[ 1561 exit(0); 1562],[ 1563 AC_DEFINE(HAVE_NIAMA) 1564],[ 1565 LIBS="$LIBSSAV" 1566 CPPFLAGS="$CPPSAV" 1567] 1568) 1569fi 1570AC_LANG_RESTORE 1571 1572dnl ----------- libint library checks -------------- 1573 1574AC_LANG_SAVE 1575AC_LANG_CPLUSPLUS 1576AC_CHECK_HEADERS(libint/libint.h, 1577 AC_CHECK_LIB(int,init_libint_base, 1578 HAVE_LIBINT=yes 1579 AC_DEFINE(HAVE_LIBINT) 1580 AC_SUBST(HAVE_LIBINT) 1581 LIBS="-lint $LIBS" 1582 ) 1583 ) 1584AC_LANG_RESTORE 1585 1586dnl ----------- libr12 library checks -------------- 1587 1588AC_LANG_SAVE 1589AC_LANG_CPLUSPLUS 1590AC_CHECK_HEADERS(libr12/libr12.h, 1591 AC_CHECK_LIB(r12,init_libr12_base, 1592 HAVE_LIBR12=yes 1593 AC_DEFINE(HAVE_LIBR12) 1594 AC_SUBST(HAVE_LIBR12) 1595 LIBS="-lr12 $LIBS" 1596 ) 1597 ) 1598AC_LANG_RESTORE 1599 1600dnl ----------- libderiv library checks -------------- 1601 1602AC_LANG_SAVE 1603AC_LANG_CPLUSPLUS 1604AC_CHECK_HEADERS(libderiv/libderiv.h, 1605 AC_CHECK_LIB(deriv,init_libderiv_base, 1606 HAVE_LIBDERIV=yes 1607 AC_DEFINE(HAVE_LIBDERIV) 1608 AC_SUBST(HAVE_LIBDERIV) 1609 LIBS="-lderiv $LIBS" 1610 ) 1611 ) 1612AC_LANG_RESTORE 1613 1614dnl ----------- make sure we have everything for cints and mbptr12 ---------- 1615 1616if test ! X$HAVE_LIBR12 = Xyes -o ! X$HAVE_LIBINT = Xyes; then 1617 EXCLUDED_DIRS="-x SRC_LIB_CHEMISTRY_QC_CINTS -x SRC_LIB_CHEMISTRY_QC_MBPTR12 $EXCLUDED_DIRS" 1618fi 1619 1620dnl --------- Template instantiation. --------- 1621 1622if test $template_instantiation = auto; then 1623AC_MSG_CHECKING(choosing template instantiation method) 1624 if test X$GXX = Xyes; then 1625 AC_MSG_RESULT("gcc (none)") 1626 else 1627 case $target in 1628 *-sgi-irix6.0*) 1629 AC_MSG_RESULT("*-sgi-irix6.0* (none)") 1630 ;; 1631 *-sgi-irix*) 1632 template_instantiation=ptused 1633 AC_MSG_RESULT("*-sgi-irix* (ptused)") 1634 ;; 1635 *-cray-unicos*) 1636 template_instantiation=craysimp 1637 AC_MSG_RESULT("*-cray-unicos* (craysimp)") 1638 ;; 1639 *-dec-osf*) 1640 template_instantiation=repodir 1641 AC_MSG_RESULT("*-dec-osf* (repodir)") 1642 ;; 1643 alpha*) 1644 template_instantiation=repodir 1645 AC_MSG_RESULT("alpha* non-GNU C++ (repodir)") 1646 ;; 1647 *-solaris*) 1648 template_instantiation=sunexpl 1649 AC_MSG_RESULT("*-solaris* (sunexpl)") 1650 ;; 1651 *) 1652 AC_MSG_RESULT("generic non GNU (none)") 1653 ;; 1654 esac 1655 fi 1656fi 1657 1658if test $template_instantiation = auto; then 1659 template_instantiation=none 1660fi 1661 1662AC_MSG_CHECKING(template instantiation flags) 1663TMPLINST=no 1664TMPLREPO= 1665TMPLINLIB=no 1666case $template_instantiation in 1667 repodir) 1668 TMPLREPO=cxx_repository 1669 TMPLINLIB=yes 1670 ;; 1671 craysimp) 1672 CXXFLAGS="$CXXFLAGS -h simple_templates" 1673 ;; 1674 gnurepo) 1675 TMPLINST=yes 1676 CXXFLAGS="$CXXFLAGS -frepo" 1677 AC_MSG_RESULT(gnurepo) 1678 ;; 1679 gnuexpl) 1680 # automatic template instantiation causes problems with libstc++-v3 1681 CXXFLAGS="$CXXFLAGS -fno-implicit-templates" 1682 EXPLICIT_TEMPLATE_INSTANTIATION=yes 1683 AC_DEFINE(EXPLICIT_TEMPLATE_INSTANTIATION) 1684 ;; 1685 sunexpl) 1686 CXXFLAGS="$CXXFLAGS -instances=explicit" 1687 AC_DEFINE(EXPLICIT_TEMPLATE_INSTANTIATION) 1688 ;; 1689 ptused) 1690 CXXFLAGS="$CXXFLAGS -ptused" 1691 ;; 1692 none) 1693 AC_MSG_RESULT(none) 1694 ;; 1695 *) 1696 AC_MSG_RESULT($template_instantiation) 1697 AC_MSG_ERROR(unknown template instantiation method) 1698esac 1699 1700AC_SUBST(TMPLINST) 1701AC_SUBST(TMPLREPO) 1702AC_SUBST(TMPLINLIB) 1703 1704dnl --------- Checks that must be done last. --------- 1705 1706AC_MSG_CHECKING([for special flags that must be set last]) 1707case $target in 1708 i860-intel-puma*) 1709 LDFLAGS="$LDFLAGS -mpuma -mnoieee" 1710 AC_MSG_RESULT(paragon puma) 1711 ;; 1712 i686-intel-cougar*) 1713 LDFLAGS="$LDFLAGS -mcougar -mnoieee" 1714 AC_MSG_RESULT(teraflop cougar) 1715 ;; 1716 i860-intel-sunmos*) 1717 LDFLAGS="$LDFLAGS -msunmos -mnoieee" 1718 AC_MSG_RESULT(paragon sunmos) 1719 ;; 1720 i860-intel-osf*) 1721 LDFLAGS="$LDFLAGS -mnx -mnoieee" 1722 AC_MSG_RESULT(osf paragon) 1723 ;; 1724 *) 1725 AC_MSG_RESULT(none) 1726 ;; 1727esac 1728 1729dnl --------- Shared library configuration. --------- 1730 1731enablelibtool=yes 1732AC_ARG_ENABLE(libtool, 1733[ --disable-libtool Do not use libtool.], 1734[ 1735case $enableval in 1736 yes) 1737 ;; 1738 no) 1739 enablelibtool=no 1740 ;; 1741 *) 1742 AC_MSG_ERROR([Invalid value for --(dis|en)able-libtool ($enableval)]) 1743 ;; 1744esac 1745]) 1746 1747if test "$enablelibtool" = yes; then 1748 1749dnl by default make only static libraries 1750AC_DISABLE_SHARED 1751AC_PROG_LIBTOOL 1752 1753OBJSUF=lo 1754LIBSUF=la 1755 1756else 1757 1758enable_shared=no 1759 1760fi 1761 1762if test "$enable_shared" = "no"; then 1763 OBJSUF=o 1764 LIBSUF=a 1765fi 1766 1767ENABLESHARED=$enable_shared 1768AC_SUBST(ENABLESHARED) 1769 1770dnl --------- CCA component configuration --------- 1771 1772if test $components == "yes"; then 1773 1774 if test $HAVE_MPI == "yes" && 1775 test $HAVE_MPIPP == "no"; then 1776 AC_MSG_ERROR([libmpi++ needed for mpi cca components]) 1777 fi 1778 1779 if test -z $CCA_CHEM_CONFIG && ! test -x $CCA_CHEM_CONFIG; then 1780 AC_MSG_ERROR([cca-chem-config is required to build CCA component code]) 1781 fi 1782 1783 CCA_CHEM_INCLUDE=`$CCA_CHEM_CONFIG --includedir` 1784 CCA_CHEM_LIB=`$CCA_CHEM_CONFIG --libdir` 1785 CCA_CHEM_PREFIX=`$CCA_CHEM_CONFIG --prefix` 1786 CCA_CHEM_REPO=$CCA_CHEM_PREFIX/repo 1787 AC_SUBST(CCA_CHEM_INCLUDE) 1788 AC_SUBST(CCA_CHEM_LIB) 1789 AC_SUBST(CCA_CHEM_REPO) 1790 1791 CCAFE_CONFIG=`$CCA_CHEM_CONFIG --ccafe-config` 1792 ENABLE_PYTHON="no" # no need for python checks 1793 AC_CHECK_CCA() 1794 1795 LIBS="-L$CCAFE_LIB $LIBS" 1796 CCA_CHEM_INCLUDE=-I$CCA_CHEM_INCLUDE 1797 BABEL_INCLUDE=-I$BABEL_INCLUDE 1798 CCA_SPEC_BABEL_INCLUDE=-I$CCA_SPEC_BABEL_INCLUDE 1799 CCAFE_INCLUDE="-I$CCAFE_INCLUDE -I$CCAFE_INCLUDE/dc/babel/babel-cca/server" 1800 CPPFLAGS="$CPPFLAGS $BABEL_INCLUDE $CCA_SPEC_BABEL_INCLUDE $CCA_CHEM_INCLUDE $CCAFE_INCLUDE" 1801 1802 AC_CHECK_HEADER(sidl.h, 1803 AC_DEFINE(HAVE_SIDL_HEADERS), 1804 AC_MSG_ERROR([problem with babel headers]) ) 1805 AC_CHECK_HEADER(gov_cca_IOR.h, 1806 AC_DEFINE(HAVE_CCA_SPEC_BABEL_HEADERS), 1807 AC_MSG_ERROR([problem with cca-spec-babel headers]) ) 1808 AC_CHECK_HEADER(Chemistry_QC_Model_IOR.h, 1809 AC_DEFINE(HAVE_CCA_CHEM_HEADERS), 1810 AC_MSG_ERROR([problem with cca-chem-generic headers]) ) 1811 1812else 1813 EXCLUDED_DIRS="-x LIB_CCA -x SRC_LIB_CHEMISTRY_CCA -x SRC_LIB_CHEMISTRY_QC_INTCCA $EXCLUDED_DIRS" 1814fi 1815 1816dnl --------- Find the list of all sc libraries. --------- 1817 1818SCLIBS=`$PERL $srcdir/bin/listlibs.pl -I$srcdir/src/lib -DLIBSUF=$LIBSUF $srcdir/src/lib` 1819AC_SUBST(SCLIBS) 1820 1821dnl --------- Define the library directory macros. --------- 1822 1823if test "$enableproduction" = "no"; then 1824AC_DEFINE_DIR(SRC_SCLIBDIR, srcdir/lib) 1825fi 1826AC_DEFINE_DIR(INSTALLED_SCLIBDIR, prefix/lib) 1827AC_DEFINE_DIR(SCDATADIR, scdatadir) 1828 1829dnl --------- Create the stub Makefiles. --------- 1830 1831$PERL $srcdir/bin/objectdir.pl $EXCLUDED_DIRS $srcdir 1832 1833AC_OUTPUT(lib/LocalMakefile lib/cca/components.cca bin/sc-config bin/mkf77sym.pl src/bin/mpqc/mpqcrun src/bin/mpqc/ccarun src/bin/mpqc/validate/makeccain.pl doc/doxygen.cfg doc/doxygen.man1.cfg doc/doxygen.man3.cfg) 1834chmod +x bin/sc-config 1835chmod +x src/bin/mpqc/mpqcrun 1836chmod +x src/bin/mpqc/ccarun 1837chmod +x src/bin/mpqc/validate/makeccain.pl 1838