added couple missing fortran libraries
[charm.git] / src / libs / ck-libs / ampi / romio / configure.in
1 dnl This is an autoconf script. To rebuild the "configure" script 
2 dnl from this, execute the command "autoconf" in the directory containing 
3 dnl this script.  You must have autoconf version 1.4 or later, 
4 dnl but NOT version 2.0 or later
5 [#!/bin/sh
6 # Guess values for system-dependent variables and create Makefiles.
7 # Generated automatically using autoconf.
8 # Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
9
10 # This program is free software; you can redistribute it and/or modify
11 # it under the terms of the GNU General Public License as published by
12 # the Free Software Foundation; either version 2, or (at your option)
13 # any later version.
14
15 # This program is distributed in the hope that it will be useful,
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 # GNU General Public License for more details.
19
20 # You should have received a copy of the GNU General Public License
21 # along with this program; if not, write to the Free Software
22 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 #
24 progname="`echo $0 | sed 's:^\./\./:\./:'`"
25 print_error() {
26     echo "*# $*" 2>&1 ;
27     }
28 usage_msg="
29 Usage: ${progname} [-file_system=FILE_SYSTEM] [-arch=ARCH_TYPE] [-mpi=MPI_IMPL]
30                 [-mpiincdir=MPI_INCLUDE_DIR] [-mpilib=MPI_LIBRARY]
31                 [-mpibindir=MPI_BIN_DIR]
32                 [-cc=C_COMPILER] [-fc=FORTRAN_COMPILER] [-nof77] 
33                 [-cflags=CFLAGS] [-fflags=FFLAGS] [-f90=F90_COMPILER] [-debug] 
34                 [-make=MAKEPGM] [-mpiolib=MPIO_LIBRARY] [-ar_nolocal] 
35                 [-noranlib] [-ar=AR_COMMAND] [-prefix=INSTALL_DIR]  
36                 [-intsize=INTSIZE] [-ptrsize=PTRSIZE] [-longsize=LONGSIZE]
37                 [-longlongsize=LONGLONGSIZE] [-f90nag] [-disable-weak-symbols]
38
39 where
40    FILE_SYSTEM  = the file system(s) for which ROMIO is to be configured.
41                   Valid values are pfs, piofs, hfs, xfs, sfs, pvfs, ufs,
42                   and nfs (case-sensitive). They correspond to Intel's PFS, 
43                   IBM's PIOFS, HP/Convex's HFS, SGI's XFS, NEC's SFS, 
44                   Clemson University's PVFS (for Linux clusters), any Unix 
45                   file system, and NFS. 
46                   To configure for multiple file systems, use "+" as a 
47                   separator; e.g., ufs+nfs
48    ARCH_TYPE    = the type of machine for which ROMIO is to be configured.
49                   Not needed on most machines, because ROMIO can usually
50                   find the arch_type on its own. Needed if you are 
51                   cross-compiling for a different architecture.
52                   Valid values are sun4, solaris, solaris86, rs6000,
53                   paragon, hpux, sppux, IRIX, IRIX32, IRIXN32, IRIX64, SX4, 
54                   alpha, freebsd, LINUX, and LINUX_ALPHA.  (case-sensitive)
55    MPI_IMPL     = the MPI implementation with which ROMIO will be used
56                   Valid values are mpich, sgi, hp. (case-sensitive)
57                   Valid implementations are MPICH 1.1.1 or higher,
58                   SGI's MPI 3.1 or higher, HP MPI 1.3 or higher, LAM, 
59                   and Cray MPI.
60    MPI_INCLUDE_DIR = the full path of the directory where mpi.h is located.
61                   Not needed if the directory is in the compiler's 
62                   default include path
63    MPI_LIBRARY  = name of the file containing the MPI library (full path).
64                   Not needed if the library is in the compiler's default
65                   list of libraries
66    MPI_BIN_DIR  = the full path of the directory that contains the MPI
67                   versions of the compilers, such as mpicc and mpif77.
68                   Use only if the ROMIO configure cannot find the
69                   necessary commands
70    C_COMPILER   = the C compiler to use. If not specified, ROMIO uses a 
71                   default compiler depending on the machine.
72    FORTRAN_COMPILER = the Fortran compiler to use. If not specified, ROMIO 
73                   uses a default compiler depending on the machine.
74    CFLAGS       = flags to give to the C compiler
75    FFLAGS       = flags to give to the Fortran compiler
76    F90_COMPILER = the Fortran 90 compiler to use. If not specified, 
77                   ROMIO uses f90.
78    MPIO_LIBRARY = name of the MPI-IO library to be built (full path).
79                   Default is "this_directory"/lib/ARCH_TYPE/libmpio.a.
80    MAKEPGM      = name of the make program to use
81    AR_COMMAND   = an alternate archiver (ar) command to use.
82    INSTALL_DIR  = directory where ROMIO is to be installed
83    INTSIZE      = size of int in bytes.
84    PTRSIZE      = size of pointers in bytes.
85    LONGSIZE     = size of long in bytes.
86    LONGLONGSIZE = size of long long in bytes.
87  
88 The options '-mpiincdir' and '-mpilib' may be needed if the MPI include file
89 and MPI library are not in the compiler's default path.
90
91 The option '-nof77' prevents the compilation of routines that require a
92 Fortran compiler.  If you select this option, you cannot use the
93 Fortran interface of MPI-IO.
94
95 The option '-f90nag' allows you to use the NAG Fortran 90 compiler 
96 instead of Fortran 77.
97
98 The option '-make' may be used to select an alternate make program. ROMIO
99 uses "make" by default.
100
101 If '-debug' is used, ROMIO will be configured with the '-g' compiler option
102 for debugging.
103
104 The option '-ar_nolocal' prevents the library archive command from
105 attempting to use the local directory for temporary space.  This option
106 should be used when (a) there isn't much space (less than 10 MB)
107 available in the partition where ROMIO resides and (b) there is enough
108 space in /tmp (or wherever ar places temporary files by default).
109
110 The option '-noranlib' causes the 'ranlib' step (needed on some systems
111 to build an object library) to be skipped.  This is particularly useful
112 on systems where 'ranlib' is optional (allowed but not needed; because it
113 is allowed, configure chooses to use it just in case) but can fail (some
114 'ranlib's are implemented as scripts using 'ar'; if they don't use the
115 local directory, they can fail (destroying the library in the process) if
116 the temporary directory (usually '/tmp') does not have enough space.
117
118 The option -disable-weak-symbols disables the use of weak symbols, even if 
119 available, for building the profiling interface.
120 "
121 #
122 echo " "
123 echo "Configuring ROMIO Version 1.2.3"
124 echo " "
125 CONFIGURE_ARGS="$*"
126 if test -n "$CONFIGURE_ARGS" ; then
127     echo "Configuring with args $CONFIGURE_ARGS"
128 fi
129 #
130 # rm -f include/*.h
131 #
132 NOF77=0
133 ARCH=""
134 arch_IRIX=""
135 MPI=""
136 MPI_INCLUDE_DIR=""
137 ROMIO_INCLUDE=""
138 MPI_LIB=""
139 LIBNAME=""
140 TEST_LIBNAME=""
141 FILE_SYSTEM=""
142 PREFIX=""
143 DEBUG=no
144 MIPS=0
145 BITS=0
146 FROM_MPICH=0
147 CFLAGS=${CFLAGS:-""}
148 LL="\%lld"
149 AR_LOCAL=l
150 HAVE_MPI_INFO=""
151 BUILD_MPI_INFO=""
152 MPI_FINFO1=""
153 MPI_FINFO2=""
154 MPI_FINFO3=""
155 MPI_FINFO4=""
156 MPI_FARRAY1=""
157 MPI_FARRAY2=""
158 MPI_FARRAY3=""
159 MPI_FARRAY4=""
160 MPI_FARRAY5=""
161 MPI_FARRAY6=""
162 MPI_FARRAY7=""
163 DEFS=""
164 ROMIO_LFLAGS=""
165 ROMIO_LIBLIST=""
166 ROMIO_TCFLAGS=""
167 ROMIO_TCPPFLAGS=""
168 ROMIO_TFFLAGS=""
169 NOPROFILE=0
170 MPIRUN=""
171 FORTRAN_TEST=""
172 MAKE=${MAKE:-"make"}
173 # foll. needed for f77 test programs
174 F77GETARG="call getarg(i,str)"
175 F77IARGC="iargc()"
176 FTESTDEFINE=""
177 FORTRAN_MPI_OFFSET=""
178 MPIOF_H_INCLUDED=0
179 MPI_OFFSET_KIND1="!"
180 MPI_OFFSET_KIND2="!"
181 F90=""
182 TEST_CC=""
183 TEST_F77=""
184 TRY_WEAK_SYMBOLS=1
185 #
186 known_filesystems="nfs ufs pfs piofs pvfs testfs xfs hfs sfs"
187 known_mpi_impls="mpich_mpi sgi_mpi hp_mpi cray_mpi lam_mpi"
188 #
189 # Defaults
190 enable_aio=notgiven
191 #
192 for arg
193 do
194 case $arg in
195   -arch=* | --arch=*)
196      ARCH=`echo $arg|sed 's/-*arch=//'`
197      eval "arch_`echo $ARCH`=1"
198      ;;
199
200   -with-file-system=* | --with-file-system=* )
201      FILE_SYSTEM=`echo $arg|sed 's/-*with-file-system=//' | sed -e 's/\+/ /g'`
202      for x in $FILE_SYSTEM
203      do
204         eval "file_system_`echo $x`=1"
205      done
206      ;;
207   -file_system=* | --file_system=* )
208      # DEPRECATED FORMAT
209      FILE_SYSTEM=`echo $arg|sed 's/-*file_system=//' | sed -e 's/\+/ /g'`
210      for x in $FILE_SYSTEM
211      do
212         eval "file_system_`echo $x`=1"
213      done
214      ;;
215
216   --enable-aio | -enable-aio)
217   enable_aio=yes
218   ;;
219   --disable-aio | -disable-aio)
220   enable_aio=no
221   ;;
222   -with-mpi=* | --with-mpi=*)
223      MPI=`echo $arg|sed 's/-*with-mpi=//'`
224      eval "mpi_`echo $MPI`=1"
225      ;;
226   -mpi=* | --mpi=*)
227      # DEPRECATED FORMAT
228      MPI=`echo $arg|sed 's/-*mpi=//'`
229      eval "mpi_`echo $MPI`=1"
230      ;;
231     # OTHER ARGS ARE DEPRECATED AND SHOULD BE PROVIDED THROUGH ENV VARIABLES
232   -mpiincdir=* | --mpiincdir=*)  
233      MPI_INCLUDE_DIR=`echo $arg|sed 's/-*mpiincdir=//'`
234      ;;
235   -mpibindir=* | --mpibindir=*)  
236      MPI_BIN_DIR=`echo $arg|sed 's/-*mpibindir=//'`
237      ;;
238   -mpilib=* | --mpilib=*)  
239      MPI_LIB=`echo $arg|sed 's/-*mpilib=//'`
240      ;;
241   -mpiolib=* | --mpiolib=*)  
242      LIBNAME=`echo $arg|sed 's/-*mpiolib=//'`
243      ;;
244
245      # THE FOLLOWING SHOULD BE PROVIDED THROUGH ENV VARIABLES
246   -cc=* | --cc=*)
247      CC=`echo $arg|sed 's/-*cc=//'`
248      ;;
249   -fc=* | --fc=*)
250      FC=`echo $arg|sed 's/-*fc=//'`
251      ;;
252   -f90=* | --f90=*)
253      F90=`echo A$arg|sed 's/A-*f90=//'`
254      ;;
255   -f90nag | --f90nag)
256      FC=f90
257      F77GETARG="call f90_unix_MP_getarg(i,str)"
258      F77IARGC="f90_unix_MP_iargc()"
259      ;;
260   -cflags=* | --cflags=*)
261      package="`echo $arg|sed 's/-*cflags=//'`"
262      USER_CFLAGS="$package"
263      CFLAGS="$package $CFLAGS"
264      ;;
265   -fflags=* | --fflags=*)
266      package="`echo $arg|sed 's/-*fflags=//'`"
267      FFLAGS="$FFLAGS $package"
268      ;;
269   -make=* | --make=*)
270      package=`echo $arg|sed 's/-*make=//'`
271      MAKE="$package"
272      ;;
273    # END OF VALUES THAT SHOULD BE PROVIDED THROUGH ENV VARIABLES
274
275      -nof77 | --nof77 | -disable-f77 | --disable-f77 )
276      echo "Fortran interface will not be built"
277      NOF77=1
278      ;;
279
280   -debug | --debug | --enable-g | -enable-g)
281      echo "Configuring for a debugging version"
282      DEBUG=yes
283      ;;
284   -ar_nolocal | --ar_nolocal)
285      AR_LOCAL=''
286      ;;
287   -noranlib | --noranlib)
288      RANLIB=':'
289      ;;
290
291   -prefix=* | --prefix=*)
292      PREFIX=`echo $arg|sed 's/-*prefix=//'`
293      # Use new variable name for prefix
294      prefix=$PREFIX
295      ;;
296
297   -from_mpich | --from_mpich)
298      FROM_MPICH=1
299      ;;
300
301    -ar=* | --ar=*)
302      package=`echo $arg|sed 's/-*ar=//'`
303      AR="$package"
304      ;;
305
306      # THESE SHOULD USE CROSS_SIZE_XXX
307   -intsize=* | --intsize=*)
308      package=`echo $arg|sed 's/-*intsize=//'`
309      intsize="$package"
310      ;;
311   -ptrsize=* | --ptrsize=*)
312      package=`echo $arg|sed 's/-*ptrsize=//'`
313      pointersize="$package"
314      ;;
315   -longsize=* | --longsize=*)
316      package=`echo $arg|sed 's/-*longsize=//'`
317      longsize="$package"
318      ;;
319   -longlongsize=* | --longlongsize=*)
320      package=`echo $arg|sed 's/-*longlongsize=//'`
321      longlongsize="$package"
322      ;;
323    # END OF VARIABLE SIZES
324
325   -noprofile | --noprofile | --disable-profile | -disable-profile )
326      echo "profiling interface will not be built"
327      NOPROFILE=1
328      ;;
329
330   -echo | --enable-echo | -enable-echo )
331      set -x
332      ;;
333   -disable-weak-symbols|--disable-weak-symbols)
334      TRY_WEAK_SYMBOLS=0
335      ;;
336   -enable-* | --enable-* | -disable-* | --disable-* )
337      # ignore
338   ;;
339   -with-* | --with-* | -without-* | --without-* )
340      # ignore
341   ;;
342   -h | -help | --h | --help | -u | --u)
343     (echo "${usage_msg}") >& 2
344     exit 1 ;;
345   *)
346   if test -n "$arg" ; then
347      echo "Error: Invalid configure option $arg"
348      exit 1;
349   fi
350   ;;
351 esac
352 done
353 ]
354 #
355 rm -f config.log
356 AC_PREPARE()
357 #
358 dnl
359 dnl Place the definitions into a configuration file, rather than sedding
360 dnl them into Makefiles.  If you wish to force the definitions into
361 dnl the Makefiles, comment out this line (with dnl!).  You will also need to
362 dnl remove the dnl from CFLAGS="$CFLAGS $DEFS" near the end of the file and
363 dnl comment out the line that follows it (CFLAGS="$CFLAGS -DHAVE_ROMIOCONF_H").
364 dnl
365 AC_CONFIG_HEADER(adio/include/romioconf.h)
366 #
367 PAC_FIXUP_SRCDIR
368 # Get top_srcdir
369 if test -z "$top_srcdir" ; then
370     top_srcdir=$srcdir
371 fi
372 #
373 PAC_MAKE_VPATH
374 #
375 # Check that an arch was set
376 # If it wasn't set, try to guess using "util/tarch"
377 #
378 if test -z "$ARCH" -a -x $srcdir/util/tarch ; then
379     AC_MSG_CHECKING(for architecture)
380     ARCH=`$srcdir/util/tarch | sed s/-/_/g`
381     if test -z "$ARCH" ; then
382        AC_MSG_RESULT(Unknown!)
383        print_error "Error: Couldn't guess target architecture, you must"
384        print_error "       set an architecture type with -arch=<value>"
385        exit 1
386     fi
387     eval "arch_$ARCH=1"
388     AC_MSG_RESULT($ARCH)
389 fi
390 #
391 # check for valid architecture.  Use __ so that _ALPHA_ does not match
392 # LINUX_ALPHA_
393 #### WE SHOULD REMOVE THIS SOON
394 grep __"$ARCH"_ $srcdir/.config_params > /dev/null 2>&1
395 if test $? != 0 ; then
396    echo "Unknown architecture $arch... proceeding anyway"
397 fi
398 #
399 #
400 #
401 # Find the home directory if not specified
402 if test "X$srcdir" != "X." -a -s $srcdir/mpi-io/Makefile.in ; then 
403     ROMIO_HOME_TRIAL=$srcdir
404 else
405     PAC_GETWD(ROMIO_HOME_TRIAL,mpi-io/Makefile.in)
406 fi
407 echo "ROMIO home directory is $ROMIO_HOME_TRIAL"
408 ROMIO_HOME=$ROMIO_HOME_TRIAL
409 #
410 # Create the "autoconf" style directory names...
411 #
412 if test -z "$prefix" ; then prefix=$PREFIX ; fi
413 if test -z "$prefix" ; then
414     prefix=$ROMIO_HOME
415 fi
416 AC_SUBST(prefix)
417 if test -z "$exec_prefix" ; then exec_prefix='${prefix}' ; fi
418 # exec_prefix is the prefix for directories containing machine-specific
419 # files such as libraries and executables.  For the USER
420 AC_SUBST(exec_prefix)
421 includedir="${prefix}/include"
422 AC_SUBST(includedir)
423 # bindir is for executable programs for the USER
424 if test -z "$bindir" ; then bindir='${exec_prefix}/bin' ; fi
425 AC_SUBST(bindir)
426 # sbindir is for executable programs for the ADMINISTRATOR
427 if test -z "$sbindir" ; then sbindir='${exec_prefix}/sbin' ; fi
428 AC_SUBST(sbindir)
429 # libdir is for libraries for the USER
430 if test -z "$libdir" ; then libdir='${exec_prefix}/lib' ; fi
431 AC_SUBST(libdir)
432 # mandir is the root for the man pages
433 if test -z "$mandir" ; then mandir='${prefix}/man' ; fi
434 AC_SUBST(mandir)
435 if test -z "$docdir" ; then docdir='${prefix}/doc' ; fi
436 AC_SUBST(docdir)
437 if test -z "$htmldir" ; then htmldir='${prefix}/www' ; fi
438 AC_SUBST(htmldir) 
439 #
440 # check for valid file system
441 if test -n "$FILE_SYSTEM" ; then
442    for x in $FILE_SYSTEM
443    do
444       found=no
445       for y in $known_filesystems ; do 
446           if test $x = $y ; then
447               found=yes
448               break
449           fi
450       done
451       if test "$found" = "no" ; then
452          echo "Unknown file system $x... proceeding anyway"
453       fi
454    done
455 fi
456 #
457 # check for valid MPI implementation
458 if test -n "$MPI" ; then
459    found=no
460    for mpi in $known_mpi_impls ; do
461       if test "${MPI}_mpi" = "$mpi" ; then
462           found=yes
463           break
464       fi
465    done
466    if test $found = no ; then
467       echo "Unknown MPI implementation $MPI... proceeding anyway"
468    fi
469 fi
470 #
471 # check for valid MPI include directory if specified
472 if test $FROM_MPICH = 0 ; then
473    if test -n "$MPI_INCLUDE_DIR"; then
474       if test ! -f "$MPI_INCLUDE_DIR/mpi.h" ; then
475          echo "Error: Include file $MPI_INCLUDE_DIR/mpi.h not found"
476          exit 1
477       fi
478    else
479 #     assume that mpi.h is in the default path
480 #     set MPI_INCLUDE_DIR to ".", so that it translates to -I. in the
481 #     compile command. Some compilers complain if it's only -I
482       MPI_INCLUDE_DIR=.
483    fi
484 fi
485 #
486 # check for valid MPI library if specified
487 if test $FROM_MPICH = 0 ; then
488    if test -n "$MPI_LIB" ; then
489       if test ! -f "$MPI_LIB" ; then
490          echo "Error: MPI library $MPI_LIB not found"
491          exit 1
492       fi
493    fi
494 fi
495 #
496 #
497 AR="${AR:-ar} cr$AR_LOCAL"
498 if test -z "$RANLIB" ; then
499     AC_PROG_RANLIB
500 fi
501 MAKE=${MAKE:-make}
502 #
503 # USER_CFLAGS and USER_FFLAGS are used only in test/Makefile.in
504 if test $DEBUG = "yes"; then
505     USER_CFLAGS="$CFLAGS -g"
506     USER_FFLAGS="$FFLAGS -g"
507 else
508     USER_CFLAGS="$CFLAGS -O"
509     USER_FFLAGS="$FFLAGS -O"
510 fi
511 #
512 if test -n "$arch_sun4" ; then 
513     CC=${CC:-gcc}
514     F77=${FC:-f77}
515     if test $DEBUG = "yes"; then
516         if test "$CC" = "gcc"; then
517            dnl CFLAGS="$CFLAGS -g -O -Wall -Wstrict-prototypes -Wmissing-prototypes -DAIO_SUN"
518            CFLAGS="$CFLAGS -g -O -Wall -Wstrict-prototypes -Wmissing-prototypes"
519         else
520            dnl CFLAGS="$CFLAGS -g -DAIO_SUN"
521            CFLAGS="$CFLAGS -g"
522         fi
523     else 
524         dnl CFLAGS="$CFLAGS -O -DAIO_SUN"
525         CFLAGS="$CFLAGS -O"
526     fi
527     if test "$enable_aio" = "no" ; then
528         AC_DEFINE(NO_AIO)
529     else
530         AC_DEFINE(AIO_SUN)
531     fi
532     if test -z "$MPI" ; then
533         MPI=mpich
534         mpi_mpich=1
535     fi
536     if test -z "$FILE_SYSTEM" ; then
537         file_system_ufs=1
538         file_system_nfs=1
539         FILE_SYSTEM="ufs nfs"
540         echo "configuring for file systems ufs and nfs"
541     fi
542 fi
543 #
544 if test -n "$arch_solaris" || test -n "$arch_solaris86" ; then
545     CC=${CC:-cc}
546     F77=${FC:-f77}
547     if test $DEBUG = "yes"; then
548         if test "$CC" = "gcc" ; then
549             dnl CFLAGS="$CFLAGS -g -O -Wall -Wstrict-prototypes -Wmissing-prototypes -DAIO_SUN"
550             CFLAGS="$CFLAGS -g -O -Wall -Wstrict-prototypes -Wmissing-prototypes"
551         else 
552             dnl CFLAGS="$CFLAGS -g -v -DAIO_SUN"
553             CFLAGS="$CFLAGS -g -v"
554         fi
555     else 
556         dnl CFLAGS="$CFLAGS -O -DAIO_SUN"
557         CFLAGS="$CFLAGS -O"
558     fi
559     if test "$enable_aio" = "no" ; then
560         AC_DEFINE(NO_AIO)
561     else
562         AC_DEFINE(AIO_SUN)
563     fi
564     if test -z "$MPI" ; then
565         MPI=mpich
566         mpi_mpich=1
567     fi
568     if test -z "$FILE_SYSTEM" ; then
569         file_system_ufs=1
570         file_system_nfs=1
571         FILE_SYSTEM="ufs nfs"
572         echo "configuring for file systems ufs and nfs"
573     fi
574     dnl CFLAGS="$CFLAGS -DSOLARIS"
575     AC_DEFINE(SOLARIS)
576     if test $MPI = "mpich" ; then
577         TEST_CC=mpicc
578         TEST_F77=mpif77
579     else
580         TEST_CC="$CC"
581         TEST_F77="$F77"
582     fi
583     if test "$enable_aio" != "no" ; then
584         MPI_LIB="$MPI_LIB -laio"
585         ROMIO_LIBLIST="-laio"
586     fi
587     AR="ar cr"
588 # solaris does not have l option to ar
589 # solaris f90 does not have 8-byte integer type
590 # (it does now!!!! 11/29/01)
591 fi
592 #
593 if test -n "$arch_rs6000"; then
594     F77=$FC
595     if test -z "$CC"; then
596        AC_PROGRAMS_CHECK(CC, mpcc, cc)
597        echo "Using $CC"
598     fi
599     if test $NOF77 = 0 && test -z "$FC"; then 
600        AC_PROGRAMS_CHECK(F77, mpxlf, f77)
601        echo "Using $F77"
602     fi
603     if test $DEBUG = "yes"; then
604         dnl CFLAGS="$CFLAGS -g -DNO_FD_IN_AIOCB -DAIO_HANDLE_IN_AIOCB"
605         CFLAGS="$CFLAGS -g"
606     else 
607         dnl CFLAGS="$CFLAGS -O -DNO_FD_IN_AIOCB -DAIO_HANDLE_IN_AIOCB"
608         CFLAGS="$CFLAGS -O"
609     fi
610     # Check that aio is available (many systems appear to have aio
611     # either installed improperly or turned off).
612     # The test is the following: if not cross compiling, try to run a 
613     # program that includes a *reference* to aio_write but does not call it
614     # If the libraries are not set up correctly, then this will fail.
615     AC_MSG_CHECKING([whether aio routines can be used])
616     AC_TEST_PROGRAM([
617 int main( int argc, char **argv )
618 {
619     if (argc > 10) aio_write();
620     return 0;
621 }
622 ],aio_runs=yes,aio_runs=no,aio_runs=unknown);    
623     AC_MSG_RESULT($aio_runs)                                             
624     if test "$enable_aio" != "no" -a "$aio_runs" = "no" ; then
625         enable_aio=no
626     fi
627     if test "$enable_aio" = "no" ; then
628         AC_DEFINE(NO_AIO)
629     else
630         AC_DEFINE(NO_FD_IN_AIOCB)
631         AC_DEFINE(AIO_HANDLE_IN_AIOCB)
632     fi
633     if test -z "$MPI" ; then
634         MPI=mpich
635         mpi_mpich=1
636     fi
637     if test -z "$FILE_SYSTEM" ; then
638         if test "$CC" = "mpcc" || test "$CC" = "mpCC" ; then
639             file_system_piofs=1
640             FILE_SYSTEM="piofs"
641             echo "configuring for file systems piofs, ufs, and nfs"
642         else 
643             echo "configuring for file systems ufs and nfs"
644         fi
645         file_system_ufs=1
646         file_system_nfs=1
647         FILE_SYSTEM="$FILE_SYSTEM ufs nfs"
648     fi
649     dnl CFLAGS="$CFLAGS -DAIX"
650     AC_DEFINE(AIX)
651 # assume long long exists.
652     longlongsize=${longlongsize:-8} 
653     MPI_OFFSET_KIND1="      INTEGER MPI_OFFSET_KIND"
654     MPI_OFFSET_KIND2="      PARAMETER (MPI_OFFSET_KIND=8)"
655 fi    
656 #
657 if test -n "$arch_paragon"; then
658     CC=${CC:-icc}
659     F77=${FC:-if77}
660     if test $DEBUG = "yes"; then
661         CFLAGS="$CFLAGS -g"
662     else 
663         if test "$CC" = "icc"; then
664            CFLAGS="$CFLAGS -Knoieee -Mvect -O3"
665         else
666            CFLAGS="$CFLAGS -O"
667         fi
668     fi
669     AR="ar860 cr$AR_LOCAL"
670     MPI_LIB="$MPI_LIB -nx"
671     if test -z "$MPI" ; then
672         MPI=mpich
673         mpi_mpich=1
674     fi
675     if test -z "$FILE_SYSTEM" ; then
676         file_system_pfs=1
677         file_system_ufs=1
678         file_system_nfs=1
679         FILE_SYSTEM="pfs ufs nfs"
680         echo "configuring for file systems pfs, ufs, and nfs"
681     fi
682     dnl CFLAGS="$CFLAGS -DPARAGON -DNO_AIO"
683     AC_DEFINE(PARAGON)
684     AC_DEFINE(NO_AIO)
685 # NO_AIO is if configuring for NFS/UFS. It doesn't affect PFS asynch. I/O.
686 # long long does not exist
687     longlongsize=${longlongsize:-0} 
688 fi    
689 #
690 if test -n "$arch_tflop" || test -n "$arch_tflops"; then
691     CC=${CC:-pgcc}
692     F77=${FC:-pgf77}
693     dnl TFLOP_FLAGS="-cougar -D__PUMA -DNO_AIO"
694     TFLOP_FLAGS="-cougar -D__PUMA"
695     AC_DEFINE(NO_AIO)
696     if test $DEBUG = "yes"; then
697         CFLAGS="$CFLAGS -g $TFLOP_FLAGS"
698     else
699        if test "$CC" = "pgcc"; then
700            CFLAGS="$CFLAGS -Knoieee -Mvect -O3 $TFLOP_FLAGS"
701        else
702            CFLAGS="$CFLAGS -O $TFLOP_FLAGS"
703        fi
704     fi
705     AR="xar cr$AR_LOCAL"
706         RANLIB="xranlib"
707     MPI_LIB="$MPI_LIB"
708     if test -z "$MPI" ; then
709         MPI=mpich
710         mpi_mpich=1
711     fi
712     if test -z "$FILE_SYSTEM" ; then
713         file_system_ufs=1
714         FILE_SYSTEM="ufs"
715         echo "configuring for file system ufs"
716     fi
717 fi
718 #
719 if test -n "$arch_freebsd" || test -n "$arch_LINUX" || test -n "$arch_LINUX_ALPHA" || test -n "$arch_netbsd" || test -n "$arch_openbsd" ; then
720     CC=${CC:-gcc}
721     if test -n "$arch_freebsd" || test -n "$arch_netbsd" || test -n "$arch_openbsd"; then
722        F77=${FC:-f77}
723        dnl CFLAGS="$CFLAGS -DFREEBSD"
724        AC_DEFINE(FREEBSD)
725        PAC_HAVE_MOUNT_NFS
726        longlongsize=${longlongsize:-0}
727 # printf doesn't work properly and no integer*8 as far as I can tell
728     else 
729        F77=${FC:-g77}
730        dnl CFLAGS="$CFLAGS -DLINUX"
731        AC_DEFINE(LINUX)
732     fi
733     if test $DEBUG = "yes" ; then
734         if test "$CC" = "gcc" ; then
735             dnl CFLAGS="$CFLAGS -g -O -Wall -Wstrict-prototypes -Wmissing-prototypes -DNO_AIO"
736             CFLAGS="$CFLAGS -g -O -Wall -Wstrict-prototypes -Wmissing-prototypes"
737         else
738             dnl CFLAGS="$CFLAGS -g -DNO_AIO"
739             CFLAGS="$CFLAGS -g"
740         fi
741     else 
742         dnl CFLAGS="$CFLAGS -O -DNO_AIO"
743         CFLAGS="$CFLAGS -O"
744     fi
745     if test "$enable_aio" != "yes" ; then
746         AC_DEFINE(NO_AIO)
747     else
748         # Try to find the aio routines
749         use_aio=no
750         AC_HEADER_CHECK(aio.h,has_aio_h=yes,has_aio_h=no)
751         dnl AC_CHECK_LIB(aio,aio_write,has_aio_write=yes,has_aio_write=no)
752         add_lib=""
753         AC_HAVE_LIBRARY(aio,add_lib="-laio")
754         AC_HAVE_LIBRARY(rt,add_lib="$add_lib -lrt")
755         AC_HAVE_LIBRARY(pthread,[add_lib="$add_lib -lpthread"
756 has_pthread=yes],[has_pthread=no])
757         AC_FUNC_CHECK(aio_write,has_aio_write=yes,has_aio_write=no)
758         if test "$has_aio_h" = "yes" -a "$has_aio_write" = "yes" -a \
759                 "$has_pthread" = "yes" ; then
760             use_aio=yes 
761         fi    
762         # Check for aiocb_t as a shorthand for struct aiocb
763         AC_COMPILE_CHECK([for aiocb_t],
764 [#include <aio.h>],
765 [aiocb_t a;],has_aiocb_t=yes,has_aiocb_t=no)
766         if test "$has_aiocb_t" = "no" ; then 
767             AC_DEFINE(NEEDS_AIOCB_T)
768         fi
769         if test "$use_aio" = "yes" ; then
770             MPI_LIB="$MPI_LIB $add_lib"
771             ROMIO_LIBLIST="$ROMIO_LIBLIST $add_lib"
772         else
773             AC_DEFINE(NO_AIO)
774         fi
775     fi
776     if test -z "$MPI" ; then
777         MPI=mpich
778         mpi_mpich=1
779     fi
780     if test -z "$FILE_SYSTEM" ; then
781         file_system_ufs=1
782         file_system_nfs=1
783         FILE_SYSTEM="ufs nfs"
784         echo "configuring for file systems ufs and nfs"
785     fi
786 fi    
787 #
788 if test -n "$arch_SX4" ; then
789     CC=${CC:-mpicc}
790     F77=${FC:-mpif90}
791     if test $DEBUG = "yes" ; then
792         dnl CFLAGS="$CFLAGS -g -DNO_AIO -DSX4"
793         CFLAGS="$CFLAGS -g"
794         FFLAGS="$FFLAGS -g"
795     else
796         USER_FFLAGS="$FFLAGS -Chopt"
797         dnl CFLAGS="$CFLAGS -O -DNO_AIO -DSX4"
798         CFLAGS="$CFLAGS -O"
799         FFLAGS="$FFLAGS -Chopt"
800     fi
801     AC_DEFINE(NO_AIO)
802     AC_DEFINE(SX4)
803     if test -z "$MPI" ; then
804         MPI=mpich
805         mpi_mpich=1
806     fi
807     if test -z "$FILE_SYSTEM" ; then
808         file_system_sfs=1
809         file_system_nfs=1
810         FILE_SYSTEM="sfs nfs"
811         echo "configuring for file systems sfs and nfs"
812     fi
813     MPI_OFFSET_KIND1="      INTEGER MPI_OFFSET_KIND"
814     MPI_OFFSET_KIND2="      PARAMETER (MPI_OFFSET_KIND=8)"
815 fi
816 #
817 if test -n "$arch_hpux" || test -n "$arch_sppux" ; then
818     if test $DEBUG = "yes"; then
819         dnl CFLAGS="$CFLAGS -g +w1 -DNO_AIO"
820         CFLAGS="$CFLAGS -g +w1"
821     else 
822         dnl CFLAGS="$CFLAGS -O -DNO_AIO"
823         CFLAGS="$CFLAGS -O"
824     fi
825     AC_DEFINE(NO_AIO)
826     RANLIB=":"
827     if test -z "$MPI"; then
828         if test -f "/opt/mpi/include/mpi.h" ; then
829             echo "assuming that you want to use ROMIO with HP MPI"
830             MPI=hp
831         else 
832             echo "assuming that you want to use ROMIO with MPICH"
833             MPI=mpich
834         fi            
835     fi
836     if test $MPI = "mpich" ; then
837         mpi_mpich=1
838         MPI_LIB="$MPI_LIB -lV3"
839         CC=${CC:-cc -Ae}
840         F77=${FC:-f77 +U77}
841     fi
842     if test $MPI = "hp" ; then
843         mpi_hp=1
844         CC=${CC:-mpicc -Ae}
845         F77=${FC:-mpif77 +U77}
846     fi
847     if test $MPI = "lam" && test "$FC" != ""; then
848         FC="$FC +U77"
849     fi
850     FTESTDEFINE="external iargc, getarg"
851     if test -n "$arch_hpux" ; then
852         dnl CFLAGS="$CFLAGS -DHPUX -D_LARGEFILE64_SOURCE"
853         CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE"
854         AC_DEFINE(HPUX)
855         if test $MPI = "hp" ; then
856            F77=${FC:-mpif90 +U77}
857         else
858            F77=${FC:-f90 +U77}
859         fi
860     else
861         dnl CFLAGS="$CFLAGS -DSPPUX"
862         AC_DEFINE(SPPUX)
863     fi
864     if test -z "$FILE_SYSTEM" ; then
865         if test -n "$arch_hpux" ; then
866            AC_COMPILE_CHECK(struct flock64,[#include <fcntl.h>],[
867 struct flock64 fl; int i=F_SETLKW64;],flock64_ok="yes",flock64_ok="no")
868         else
869             flock64_ok="yes"
870         fi
871         if test $flock64_ok = "yes" ; then
872             file_system_hfs=1
873             file_system_nfs=1
874             FILE_SYSTEM="hfs nfs"
875             echo "configuring for file systems hfs and nfs"
876         else
877             file_system_ufs=1
878             file_system_nfs=1
879             FILE_SYSTEM="ufs nfs"
880             echo "no flock64; configuring for file systems ufs and nfs"
881         fi
882     fi
883     MPI_OFFSET_KIND1="      INTEGER MPI_OFFSET_KIND"
884     MPI_OFFSET_KIND2="      PARAMETER (MPI_OFFSET_KIND=8)"
885     if test "$CC" != "gcc" ; then
886         ROMIO_TCFLAGS="-Ae"
887     fi
888     if test "$F77" != "g77" ; then
889         ROMIO_TFFLAGS="+U77"
890     fi
891 fi
892 #
893 if test -n "$arch_alpha" || test -n "$arch_ALPHA" ; then
894     CC=${CC:-cc}
895     F77=${FC:-f77}
896     if test $DEBUG = "yes"; then
897         dnl CFLAGS="$CFLAGS -g -std1 -warnprotos -verbose -DAIO_PRIORITY_DEFAULT"
898         CFLAGS="$CFLAGS -g -std1 -warnprotos -verbose"
899     else 
900         dnl CFLAGS="$CFLAGS -O -DAIO_PRIORITY_DEFAULT"
901         CFLAGS="$CFLAGS -O"
902     fi
903     AC_DEFINE(AIO_PRIORITY_DEFAULT)
904     MPI_LIB="$MPI_LIB -laio"
905     if test -z "$MPI" ; then
906         MPI=mpich
907         mpi_mpich=1
908     fi
909     if test -z "$FILE_SYSTEM" ; then
910         file_system_ufs=1
911         file_system_nfs=1
912         FILE_SYSTEM="ufs nfs"
913         echo "configuring for file systems ufs and nfs"
914     fi
915     dnl CFLAGS="$CFLAGS -DDEC"
916     AC_DEFINE(DEC)
917     MPI_OFFSET_KIND1="      INTEGER MPI_OFFSET_KIND"
918     MPI_OFFSET_KIND2="      PARAMETER (MPI_OFFSET_KIND=8)"
919     ROMIO_LIBLIST="-laio"
920 fi    
921 #
922 if test -n "$arch_CRAY" ; then
923     CC=${CC:-cc}
924     F77=${FC:-f90}
925     NOF77=1
926     FTESTDEFINE="integer ilen"
927     F77GETARG="call pxfgetarg(i, str, ilen, ierr)"
928     if test $DEBUG = "yes"; then
929         dnl CFLAGS="$CFLAGS -g -DNO_AIO"
930         CFLAGS="$CFLAGS -g"
931     else 
932         dnl CFLAGS="$CFLAGS -O -DNO_AIO"
933         CFLAGS="$CFLAGS -O"
934     fi
935     AC_DEFINE(NO_AIO)
936     RANLIB=":"
937     dnl CFLAGS="$CFLAGS -DCRAY -D_UNICOS"
938     CFLAGS="$CFLAGS -D_UNICOS"
939     AC_DEFINE(CRAY)
940     if test -z "$MPI" || test -n "$mpi_sgi" ; then
941         MPI=cray
942         mpi_cray=1
943         mpi_sgi=""
944 # above is to disable configure tests specific to SGI MPI
945         dnl CFLAGS="$CFLAGS -DMPISGI -DHAVE_MPI_COMBINERS -DNO_MPI_SGI_type_is_contig"
946         AC_DEFINE(MPISGI)
947         AC_DEFINE(HAVE_MPI_COMBINERS)
948         AC_DEFINE(NO_MPI_SGI_type_is_contig)
949     fi
950 #       MPISGI needed because of error in Cray's and SGI's 
951 #       MPI_Type_get_contents (does not increment reference count).
952 #       Others needed because MPISGI needed.
953     if test -z "$FILE_SYSTEM" ; then
954         file_system_ufs=1
955         file_system_nfs=1
956         FILE_SYSTEM="ufs nfs"
957         echo "configuring for file systems ufs and nfs"
958     fi
959     MPI_OFFSET_KIND1="      INTEGER MPI_OFFSET_KIND"
960     MPI_OFFSET_KIND2="      PARAMETER (MPI_OFFSET_KIND=8)"
961 fi
962 #
963 if test -n "$arch_sgi" ; then
964     arch_IRIX=1
965     ARCH=IRIX
966 fi
967 if test -n "$arch_IRIX64" ; then
968     arch_IRIX=1
969 fi
970 if test -n "$arch_IRIX32" ; then
971     arch_IRIX=1
972 fi
973 if test -n "$arch_IRIXN32" ; then
974     arch_IRIX=1
975 fi
976 if test -n "$arch_sgi5" ; then
977     arch_IRIX5=1
978     ARCH=IRIX
979 fi
980 #
981 PAC_GET_SPECIAL_SYSTEM_INFO
982 #
983 # special case 'sgi5' for use on MESHINE which is much like an SGI running
984 # irix 5 with r4400 chips, but does not have 'hinv', so above code doesn't
985 # work
986 if test -n "$arch_sgi5"; then
987    osversion=5
988    cputype=4400
989    IRIXARCH="$ARCH_$osversion"
990    IRIXARCH="$IRIXARCH_$cputype"
991 # now set arch_IRIX to 1
992    arch_IRIX=1
993    echo "IRIX-specific architecture is $IRIXARCH"
994    dnl CFLAGS="$CFLAGS -DIRIX"
995    AC_DEFINE(IRIX)
996 fi
997 #
998 if test -n "$arch_IRIX"; then
999     CC=${CC:-cc}
1000     F77=${FC:-f77}
1001     if test $DEBUG = "yes"; then
1002         CFLAGS="$CFLAGS -g -fullwarn"
1003     else 
1004         CFLAGS="$CFLAGS -O"
1005     fi
1006    if test $osversion = 4 ; then
1007         RANLIB="ar ts"
1008         if test -n "$mpi_sgi"; then
1009             echo "Error: SGI's MPI doesn't work with IRIX 4.x"
1010             exit 1
1011         fi
1012    elif test $osversion = 5 ; then
1013         if test -n "$mpi_sgi"; then
1014             echo "Error: SGI's MPI doesn't work with IRIX 5.x"
1015             exit 1
1016         fi
1017    elif test $osversion = 6 ; then
1018         if test -z "$MPI"; then
1019             if test -f "/usr/include/mpi.h" ; then
1020                 echo "assuming that you want to use ROMIO with SGI's MPI"
1021                 MPI=sgi
1022                 mpi_sgi=1
1023             else 
1024                 echo "assuming that you want to use ROMIO with MPICH"
1025                 MPI=mpich
1026                 mpi_mpich=1
1027             fi            
1028         fi
1029         RANLIB=":"
1030         dnl CFLAGS="$CFLAGS -DAIO_SIGNOTIFY_NONE"
1031         AC_DEFINE(AIO_SIGNOTIFY_NONE)
1032         if test $cputype -ge 5000 ; then
1033             MIPS=4
1034         else 
1035             MIPS=3
1036         fi
1037    fi
1038    if test -n "$mpi_sgi" && test -z "$MPI_LIB" ; then
1039        MPI_LIB="-lmpi"
1040    fi
1041 #  check if pread64 is defined
1042    PAC_HAVE_PREAD64
1043 #
1044    if test -z "$FILE_SYSTEM" ; then
1045        file_system_nfs=1
1046        FILE_SYSTEM="nfs"
1047        AC_MSG_CHECKING(for xfs)
1048        AC_COMPILE_CHECK(,[
1049 #include <aio.h>],
1050 [aiocb64_t *t1;],file_system_xfs=1;FILE_SYSTEM="xfs $FILE_SYSTEM";)
1051        if test "$file_system_xfs" = 1 ; then 
1052           AC_MSG_RESULT(yes)
1053        else
1054           AC_MSG_RESULT(no)
1055           file_system_ufs=1
1056           FILE_SYSTEM="ufs $FILE_SYSTEM"
1057        fi
1058        echo "configuring for file systems $FILE_SYSTEM"
1059    fi
1060    dnl CFLAGS="$CFLAGS -DIRIX"
1061    AC_DEFINE(IRIX)
1062    MPI_OFFSET_KIND1="      INTEGER MPI_OFFSET_KIND"
1063    MPI_OFFSET_KIND2="      PARAMETER (MPI_OFFSET_KIND=8)"
1064 fi
1065 dnl
1066 dnl
1067
1068 AC_HAVE_FUNCS(memalign)
1069 PAC_TEST_MPIR_STATUS_SET_BYTES
1070
1071 if test $NOF77 = 0 ; then
1072     echo "checking Fortran external names"
1073     PAC_GET_FORTNAMES
1074     if test -n "$WDEF" ; then
1075         CFLAGS="$CFLAGS $WDEF"
1076     fi
1077     rm -f test/mpif.h
1078     if test "$MPI_INCLUDE_DIR" != "." && test $FROM_MPICH = 0 ; then
1079         if test ! -d test ; then mkdir test ; fi
1080         ln -s $MPI_INCLUDE_DIR/mpif.h test
1081     fi
1082 else 
1083     F77=":"
1084 fi
1085 #
1086 PAC_C_INLINE
1087
1088 # Header files
1089 PAC_CHECK_HEADERS(unistd.h)
1090 #
1091 PAC_INT_LT_POINTER()
1092 #
1093 PAC_LONG_LONG_64()
1094 #
1095 dnl PAC_LONG_64()
1096 #
1097 if test -n "$longlongsize"; then
1098    if test $FROM_MPICH = 0 ; then
1099        PAC_MPI_LONG_LONG_INT()
1100    else
1101        AC_DEFINE(HAVE_MPI_LONG_LONG_INT)
1102    fi
1103 fi
1104 #
1105 if test -n "$OFFSET_KIND" -a "A$MPI_OFFSET_KIND1" = "A!" ; then 
1106   MPI_OFFSET_KIND1="        INTEGER MPI_OFFSET_KIND"
1107   MPI_OFFSET_KIND2="        PARAMETER (MPI_OFFSET_KIND=$OFFSET_KIND)"
1108 else
1109  if test "$FORTRAN_MPI_OFFSET" = "integer*8" && test "A$MPI_OFFSET_KIND2" = "A!" && test $NOF77 = 0 ; then
1110    PAC_MPI_OFFSET_KIND()
1111  fi
1112  #
1113   if test "$FORTRAN_MPI_OFFSET" = "integer" && test "A$MPI_OFFSET_KIND2" = "A!" && test $NOF77 = 0 ; then
1114    PAC_MPI_OFFSET_KIND_4BYTE()
1115   fi
1116 fi
1117 #
1118 # check if MPI_Info functions are defined in the MPI implementation
1119 if test $FROM_MPICH = 0 ; then
1120    PAC_MPI_INFO()
1121 else
1122    AC_DEFINE(HAVE_MPI_INFO)
1123    HAVE_MPI_INFO="#define HAVE_MPI_INFO"
1124    MPI_FINFO1="!"
1125    MPI_FINFO2="!"
1126    MPI_FINFO3="!"
1127    MPI_FINFO4="!"
1128 fi   
1129 #
1130 if test -n "$mpi_sgi"; then
1131    if test -z "$HAVE_MPI_INFO" ; then
1132       PAC_CHECK_MPI_SGI_INFO_NULL  # is MPI_INFO_NULL defined in mpi.h?
1133    fi
1134    PAC_TEST_MPI_SGI_type_is_contig
1135    PAC_TEST_MPI_COMBINERS
1136    PAC_TEST_MPI_HAVE_OFFSET_KIND
1137 fi
1138 #
1139 # check if darray and subarray constructors are defined in the MPI implementation
1140 if test $FROM_MPICH = 0 ; then
1141    PAC_MPI_DARRAY_SUBARRAY()
1142 else
1143    AC_DEFINE(HAVE_MPI_DARRAY_SUBARRAY)
1144    HAVE_MPI_DARRAY_SUBARRAY="#define HAVE_MPI_DARRAY_SUBARRAY"
1145    MPI_FARRAY1="!"
1146    MPI_FARRAY2="!"
1147    MPI_FARRAY3="!"
1148    MPI_FARRAY4="!"
1149    MPI_FARRAY5="!"
1150    MPI_FARRAY6="!"
1151    MPI_FARRAY7="!"
1152 fi   
1153 #
1154 # Check to see if the compiler accepts prototypes
1155 dnl PAC_CHECK_CC_PROTOTYPES(AC_DEFINE(HAVE_PROTOTYPES))
1156 #
1157 #
1158 # Test for weak symbol support...
1159 # We can't put # in the message because it causes autoconf to generate
1160 # incorrect code
1161 HAVE_WEAK_SYMBOLS=0
1162 if test -n "$arch_hpux" || test -n "$arch_sppux" ; then
1163 # multiple secondary definitions not allowed by HP compilers
1164 # Fortran interface for HP already uses one secondary defn. 
1165 # therefore, do not use this method for profiling interface.
1166 # build profiling interface explicitly.
1167    TRY_WEAK_SYMBOLS=0
1168 fi
1169 if test $TRY_WEAK_SYMBOLS = 1 ; then
1170   AC_MSG_CHECKING(for weak symbol support)
1171   AC_TRY_LINK([
1172 #pragma weak PFoo = Foo
1173 extern int PFoo(int);
1174 int Foo(a) { return a; }
1175 ],[return PFoo(1);],has_pragma_weak=1)
1176   #
1177   # Some systems (Linux ia64 and ecc, for example), support weak symbols
1178   # only within a single object file!  This tests that case.
1179   if test "$has_pragma_weak" = 1 ; then
1180     AC_MSG_RESULT([pragma weak])
1181     AC_MSG_CHECKING([that weak symbols are visible to other files])
1182     rm -f conftest*
1183     cat >>conftest1.c <<EOF
1184 extern int PFoo(int);
1185 #pragma weak PFoo = Foo
1186 int Foo(int);
1187 int Foo(a) { return a; }
1188 EOF
1189     cat >>conftest2.c <<EOF
1190 extern int PFoo(int);
1191 int main() {
1192 return PFoo(0);}
1193 EOF
1194     ac_link2='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest1.c conftest2.c $LIBS >conftest.out 2>&1'
1195     if eval $ac_link2 ; then
1196         AC_MSG_RESULT(yes)
1197     else
1198       echo "$ac_link2" >>config.log
1199       echo "Failed program was" >>config.log
1200       cat conftest1.c >>config.log
1201       cat conftest2.c >>config.log
1202       if test -s conftest.out ; then cat conftest.out >> config.log ; fi
1203       AC_MSG_RESULT(no)
1204       has_pragma_weak=0
1205     fi
1206     rm -f conftest*
1207   fi
1208   if test "$has_pragma_weak" = 1 ; then
1209     HAVE_WEAK_SYMBOLS=1
1210     AC_DEFINE(HAVE_WEAK_SYMBOLS)
1211     AC_DEFINE(HAVE_PRAGMA_WEAK)
1212   else
1213     AC_TRY_LINK([
1214 #pragma _HP_SECONDARY_DEF Foo PFoo
1215 int Foo(a) { return a; }
1216 ],[return PFoo(1);],has_pragma_hp_secondary=1)
1217     if test "$has_pragma_hp_secondary" = 1 ; then 
1218         AC_MSG_RESULT([pragma _HP_SECONDARY_DEF])
1219         HAVE_WEAK_SYMBOLS=1
1220         AC_DEFINE(HAVE_WEAK_SYMBOLS)
1221         AC_DEFINE(HAVE_PRAGMA_HP_SEC_DEF)
1222     else
1223         AC_TRY_LINK([
1224 #pragma _CRI duplicate PFoo as Foo
1225 int Foo(a) { return a; }
1226 ],[return PFoo(1);],has_pragma_cri_duplicate=1)
1227         if test "$has_pragma_cri_duplicate" = 1 ; then
1228             AC_MSG_RESULT([pragma _CRI duplicate x as y])
1229             HAVE_WEAK_SYMBOLS=1
1230             AC_DEFINE(HAVE_WEAK_SYMBOLS)
1231             AC_DEFINE(HAVE_PRAGMA_CRI_DUP)
1232         else    
1233             AC_MSG_RESULT(no)
1234         fi
1235     fi
1236   fi
1237 fi
1238 AC_SUBST(HAVE_WEAK_SYMBOLS)
1239 #
1240 # if FILE_SYSTEM is not set above, use ufs and nfs as default
1241 #
1242 if test -z "$FILE_SYSTEM" ; then
1243     file_system_ufs=1
1244     file_system_nfs=1
1245     FILE_SYSTEM="ufs nfs"
1246     echo "configuring for file systems ufs and nfs"
1247 fi
1248 #
1249 if test -n "$file_system_nfs" ; then
1250    # Check for problems with locks
1251    AC_MSG_CHECKING([whether file locks work with NFS])
1252    AC_TEST_PROGRAM([
1253 #include <fcntl.h>
1254 #include <errno.h>
1255 #include <unistd.h>
1256
1257 int main()
1258 {
1259     struct flock lock;
1260     int fd, err;
1261
1262     lock.l_type = F_WRLCK;
1263     lock.l_start = 0;
1264     lock.l_whence = SEEK_SET;
1265     lock.l_len = 100;
1266
1267     fd = open("conftest.dat", O_RDWR | O_CREAT, 0644);
1268
1269     err = fcntl(fd, F_SETLKW, &lock);
1270
1271    /* printf("err = %d, errno = %d\n", err, errno); */
1272     close(fd);
1273     return err;
1274 }],nfs_locks_work=yes,nfs_locks_work=no)
1275     AC_MSG_RESULT($nfs_locks_work)
1276     if test "$nfs_locks_work" != "yes" ; then
1277         AC_MSG_WARN([File locks do not work with NFS.  See the Installation and
1278 users manual for instructions on fixing this])
1279     fi
1280 fi
1281 if test -n "$file_system_nfs"; then
1282     dnl CFLAGS="$CFLAGS -DNFS"
1283     AC_DEFINE(NFS)
1284 fi
1285 if test -n "$file_system_ufs"; then
1286     dnl CFLAGS="$CFLAGS -DUFS"
1287     AC_DEFINE(UFS)
1288 fi
1289 if test -n "$file_system_hfs"; then
1290     dnl CFLAGS="$CFLAGS -DHFS"
1291     AC_DEFINE(HFS)
1292 fi
1293 if test -n "$file_system_sfs"; then
1294     dnl CFLAGS="$CFLAGS -DSFS"
1295     AC_DEFINE(SFS)
1296 fi
1297 if test -n "$file_system_xfs"; then
1298     dnl CFLAGS="$CFLAGS -DXFS"
1299     AC_DEFINE(XFS)
1300     PAC_GET_XFS_MEMALIGN
1301 fi
1302 if test -n "$file_system_pvfs"; then
1303    # Use ROMIO_PVFS instead of PVFS because FREEBSD defines PVFS.
1304     dnl CFLAGS="$CFLAGS -DROMIO_PVFS"
1305     AC_DEFINE(ROMIO_PVFS)
1306 fi
1307 if test -n "$file_system_pfs"; then
1308     dnl CFLAGS="$CFLAGS -DPFS"
1309     AC_DEFINE(PFS)
1310 fi
1311 if test -n "$file_system_testfs"; then
1312     dnl CFLAGS="$CFLAGS -DROMIO_TESTFS"
1313     AC_DEFINE(ROMIO_TESTFS)
1314 fi
1315 if test -n "$file_system_piofs"; then
1316     dnl CFLAGS="$CFLAGS -DPIOFS"
1317     AC_DEFINE(PIOFS)
1318     USER_CFLAGS="$USER_CFLAGS -bI:/usr/include/piofs/piofs.exp"
1319     ROMIO_LFLAGS="$USER_FFLAGS -bI:/usr/include/piofs/piofs.exp"
1320     USER_FFLAGS="$USER_FFLAGS -bI:/usr/include/piofs/piofs.exp"
1321 fi
1322 if test -n "$mpi_mpich"; then
1323    dnl CFLAGS="$CFLAGS -DNEEDS_MPI_TEST -DMPICH"
1324    AC_DEFINE(NEEDS_MPI_TEST)
1325    AC_DEFINE(MPICH)
1326    if test -z "$arch_SX4" ; then
1327       MPIOF_H_INCLUDED=1
1328    fi
1329 fi
1330 if test -n "$mpi_sgi"; then
1331    dnl CFLAGS="$CFLAGS -DMPISGI"
1332    AC_DEFINE(MPISGI)
1333 fi
1334 if test -n "$mpi_lam"; then
1335    dnl CFLAGS="$CFLAGS -DMPILAM"
1336    AC_DEFINE(MPILAM)
1337 fi
1338 if test -n "$mpi_hp"; then
1339    dnl CFLAGS="$CFLAGS -DMPIHP"
1340    AC_DEFINE(MPIHP)
1341    if test "$NOF77" = 0; then
1342       PAC_CHECK_MPIOF_H
1343    fi
1344 fi
1345 #
1346 PAC_FUNC_STRERROR
1347 if test -z "$srcdir" -o "$srcdir" = "." ; then srcdir="$ROMIO_HOME" ; fi
1348 AC_SUBST(srcdir)
1349 if test -z "$LIBNAME"; then
1350 LIBNAME="$ROMIO_HOME/lib/$ARCH/libmpio.a"
1351 fi
1352 #
1353 if test ! -d $ROMIO_HOME/lib ; then 
1354    mkdir $ROMIO_HOME/lib
1355 fi
1356 if test ! -d $ROMIO_HOME/lib/$ARCH ; then 
1357    mkdir $ROMIO_HOME/lib/$ARCH
1358 fi
1359 #
1360 if test $NOF77 = 1 ; then
1361    F77=":"
1362 else
1363    FORTRAN_TEST="fperf fcoll_test fmisc pfcoll_test" 
1364 fi
1365 #
1366 if test $FROM_MPICH = 0 ; then
1367    PAC_TEST_MPI
1368    PAC_NEEDS_FINT
1369 else
1370    NEEDS_MPI_FINT=""
1371 fi
1372 #
1373 if test "$MPI_INCLUDE_DIR" = "." ; then
1374    ROMIO_INCLUDE="-I../include"
1375 else 
1376    ROMIO_INCLUDE="-I../include -I$MPI_INCLUDE_DIR"
1377 fi
1378 #
1379 TEST_LIBNAME=$LIBNAME
1380 MPIRUN=mpirun
1381 #
1382 # if MPICH, use mpicc in test programs
1383 #
1384 if test $FROM_MPICH = 1 ; then
1385    MPICH_HOME=`dirname $ROMIO_HOME`
1386    if test -z "$MPI_BIN_DIR" ; then MPI_BIN_DIR=$MPICH_HOME/bin ; fi
1387    TEST_CC=$MPI_BIN_DIR/mpicc
1388    MPI_LIB=""
1389    ROMIO_INCLUDE=""
1390    USER_CFLAGS=""
1391    USER_FFLAGS=""
1392    TEST_LIBNAME=""
1393    MPIRUN=$MPI_BIN_DIR/mpirun
1394    if test -n "$arch_SX4" || test -n "$arch_hpux" ; then
1395       TEST_F77=$MPI_BIN_DIR/mpif90
1396    else
1397       TEST_F77=$MPI_BIN_DIR/mpif77
1398    fi
1399    CC=$MPI_BIN_DIR/mpicc
1400    dnl CFLAGS="$CFLAGS -DHAVE_STATUS_SET_BYTES"
1401    AC_DEFINE(HAVE_STATUS_SET_BYTES)
1402 else
1403    dnl CFLAGS="$CFLAGS -DHAVE_STATUS_SET_BYTES"
1404    AC_DEFINE(HAVE_STATUS_SET_BYTES)
1405 fi
1406 #
1407 if test $MPI != "mpich" ; then
1408    dnl CFLAGS="$CFLAGS -DPRINT_ERR_MSG"
1409    AC_DEFINE(PRINT_ERR_MSG)
1410 fi
1411 #
1412 if test -z "$TEST_CC" ; then
1413    TEST_CC="$CC"
1414 fi
1415 if test -z "$TEST_F77" ; then
1416    TEST_F77="$F77"
1417 fi
1418 #
1419 dnl CFLAGS="$CFLAGS $DEFS"
1420 CFLAGS="$CFLAGS -DHAVE_ROMIOCONF_H"
1421 #
1422 echo "setting CC to $CC"
1423 echo "setting F77 to $F77"
1424 echo "setting TEST_CC to $TEST_CC"
1425 echo "setting TEST_F77 to $TEST_F77"
1426 echo "setting CFLAGS to $CFLAGS"
1427 echo "setting USER_CFLAGS to $USER_CFLAGS"
1428 echo "setting USER_FFLAGS to $USER_FFLAGS"
1429 #
1430 AC_SUBST(ARCH)
1431 AC_SUBST(FILE_SYSTEM)
1432 AC_SUBST(CC)
1433 AC_SUBST(CFLAGS)
1434 AC_SUBST(USER_CFLAGS)
1435 AC_SUBST(USER_FFLAGS)
1436 AC_SUBST(MIPS)
1437 AC_SUBST(BITS)
1438 AC_SUBST(MPI)
1439 AC_SUBST(AR)
1440 AC_SUBST(RANLIB)
1441 AC_SUBST(MPI_INCLUDE_DIR)
1442 AC_SUBST(MPI_LIB)
1443 AC_SUBST(F77)
1444 AC_SUBST(NOF77)
1445 AC_SUBST(NOPROFILE)
1446 AC_SUBST(MAKE)
1447 AC_SUBST(PREFIX)
1448 AC_SUBST(arch_IRIX)
1449 AC_SUBST(ROMIO_HOME)
1450 AC_SUBST(LIBNAME)
1451 AC_SUBST(TEST_LIBNAME)
1452 AC_SUBST(LL)
1453 AC_SUBST(F77GETARG)
1454 AC_SUBST(F77IARGC)
1455 AC_SUBST(FTESTDEFINE)
1456 AC_SUBST(FORTRAN_MPI_OFFSET)
1457 AC_SUBST(FROM_MPICH)
1458 AC_SUBST(NEEDS_MPI_FINT)
1459 AC_SUBST(HAVE_MPI_INFO)
1460 AC_SUBST(BUILD_MPI_INFO)
1461 AC_SUBST(HAVE_MPI_DARRAY_SUBARRAY)
1462 AC_SUBST(BUILD_MPI_ARRAY)
1463 AC_SUBST(DEFINE_MPI_OFFSET)
1464 AC_SUBST(MPI_FINFO1)
1465 AC_SUBST(MPI_FINFO2)
1466 AC_SUBST(MPI_FINFO3)
1467 AC_SUBST(MPI_FINFO4)
1468 AC_SUBST(MPI_FARRAY1)
1469 AC_SUBST(MPI_FARRAY2)
1470 AC_SUBST(MPI_FARRAY3)
1471 AC_SUBST(MPI_FARRAY4)
1472 AC_SUBST(MPI_FARRAY5)
1473 AC_SUBST(MPI_FARRAY6)
1474 AC_SUBST(MPI_FARRAY7)
1475 AC_SUBST(MPI_OFFSET_KIND1)
1476 AC_SUBST(MPI_OFFSET_KIND2)
1477 AC_SUBST(TEST_CC)
1478 AC_SUBST(TEST_F77)
1479 AC_SUBST(ROMIO_INCLUDE)
1480 AC_SUBST(ROMIO_LFLAGS)
1481 AC_SUBST(ROMIO_LIBLIST)
1482 AC_SUBST(ROMIO_TCFLAGS)
1483 AC_SUBST(ROMIO_TCPPFLAGS)
1484 AC_SUBST(ROMIO_TFFLAGS)
1485 AC_SUBST(MPIRUN)
1486 AC_SUBST(FORTRAN_TEST)
1487 if test ! -d adio ; then mkdir adio ; fi
1488 if test ! -d adio/include ; then mkdir adio/include ; fi
1489 if test ! -d mpi2-other ; then mkdir mpi2-other ; fi
1490
1491 # Make sure we remove any configuration file incase there is out-of-date data.
1492 # We remove the version in include in case this is a vpath build
1493 rm -f adio/include/romioconf.h ${top_srcdir}/adio/include/romioconf.h 
1494 #
1495 # Create makefiles for all of the adio devices.  Only the ones that 
1496 # are active will be called by the top level ROMIO make
1497 AC_OUTPUT(Makefile mpi-io/Makefile mpi-io/fortran/Makefile mpi2-other/info/Makefile \
1498                    mpi2-other/array/Makefile mpi2-other/array/fortran/Makefile \
1499                    adio/common/Makefile \
1500                    test/Makefile test/misc.c test/large_file.c \
1501                    test/runtests util/romioinstall include/mpio.h \
1502                    include/mpiof.h \
1503                    adio/ad_nfs/Makefile adio/ad_ufs/Makefile \
1504                    adio/ad_xfs/Makefile adio/ad_hfs/Makefile \
1505                    adio/ad_sfs/Makefile adio/ad_pfs/Makefile \
1506                    adio/ad_testfs/Makefile adio/ad_pvfs/Makefile \
1507                    adio/ad_piofs/Makefile )
1508 if test "$NOF77" = 0; then
1509     CONFIG_FILES="$CONFIG_FILES mpi-io/fortran/Makefile mpi2-other/info/fortran/Makefile mpi2-other/array/fortran/Makefile test/fmisc.f test/fcoll_test.f test/pfcoll_test.f test/fperf.f"
1510 fi
1511 export CONFIG_FILES
1512 ./config.status
1513 CONFIG_FILES=""
1514 # delete the first line created by configure in some files
1515 sed 1d util/romioinstall > util/tmp
1516 mv util/tmp util/romioinstall
1517 chmod 755 util/romioinstall
1518 if test "$NOF77" = 0; then
1519    sed 1d test/fcoll_test.f > test/tmp
1520    mv test/tmp test/fcoll_test.f
1521    if test "$MPIOF_H_INCLUDED" = 1; then
1522       sed 5d test/fcoll_test.f > test/tmp
1523       mv test/tmp test/fcoll_test.f
1524    fi
1525    sed 1d test/pfcoll_test.f > test/tmp
1526    mv test/tmp test/pfcoll_test.f
1527    if test "$MPIOF_H_INCLUDED" = 1; then
1528       sed 5d test/pfcoll_test.f > test/tmp
1529       mv test/tmp test/pfcoll_test.f
1530    fi
1531    sed 1d test/fperf.f > test/tmp
1532    mv test/tmp test/fperf.f
1533    if test "$MPIOF_H_INCLUDED" = 1; then
1534       sed 5d test/fperf.f > test/tmp
1535       mv test/tmp test/fperf.f
1536    fi
1537    sed 1d test/fmisc.f > test/tmp
1538    mv test/tmp test/fmisc.f
1539    if test "$MPIOF_H_INCLUDED" = 1; then
1540       sed 5d test/fmisc.f > test/tmp
1541       mv test/tmp test/fmisc.f
1542    fi
1543 fi
1544 sed 1d test/misc.c > test/tmp
1545 mv test/tmp test/misc.c
1546 sed 1d test/large_file.c > test/tmp
1547 mv test/tmp test/large_file.c
1548 sed 1d include/mpio.h > include/tmp
1549 mv include/tmp include/mpio.h
1550 sed 1d include/mpiof.h > include/tmp
1551 mv include/tmp include/mpiof.h
1552 sed 1d test/runtests > test/tmp
1553 mv test/tmp test/runtests
1554 #
1555 chmod 755 test/runtests
1556 #
1557 rm -f *.o
1558 if test "$ROMIO_NO_BANNER" != "yes" -a "$FROM_MPICH" = 0 ; then
1559 print_error " "
1560 print_error Please register your copy of ROMIO with us by sending email
1561 print_error to majordomo@mcs.anl.gov with the message
1562 print_error subscribe romio-users
1563 print_error This will enable us to notify you of new releases of ROMIO
1564 print_error as well as bug fixes.
1565 print_error " "
1566 fi
1567 if test $FROM_MPICH = 0 ; then
1568    print_error Configure done. Now type make
1569    print_error " "
1570 fi
1571 exit 0