📄 configure.in
字号:
EOF if $F77 -o conftest conftest.f >>config.log 2>&1 && test -x conftest ; then ac_cv_f77_allows_offset_kind=yes fi rm -f conftest* AC_MSG_RESULT($ac_cv_f77_allows_offset_kind) if test "$ac_cv_f77_allows_offset_kind" ; then FORTRAN_MPI_OFFSET="integer (kind=$MPI_OFFSET_KIND)" else AC_MSG_WARN([Could not find a way to declare an integer type corresponding to MPI_Offset in Fortran.]) fi fifi## check if MPI_Info functions are defined in the MPI implementationif test $WITHIN_KNOWN_MPI_IMPL = no ; then PAC_MPI_INFOelse AC_DEFINE(HAVE_MPI_INFO,1,[Define if MPI Info is available]) HAVE_MPI_INFO="#define HAVE_MPI_INFO" MPI_FINFO1="!" MPI_FINFO2="!" MPI_FINFO3="!" MPI_FINFO4="!"fi #if test -n "$mpi_sgi"; thendnl if test -z "$HAVE_MPI_INFO" ; thendnl PAC_CHECK_MPI_SGI_INFO_NULL # is MPI_INFO_NULL defined in mpi.h?dnl fi PAC_TEST_MPI_SGI_type_is_contig PAC_TEST_MPI_COMBINERS PAC_TEST_MPI_HAVE_OFFSET_KINDfi## check if darray and subarray constructors are defined in the MPI # implementation if test $WITHIN_KNOWN_MPI_IMPL = no ; then PAC_MPI_DARRAY_SUBARRAYfiif test $FROM_MPICH2 = yes ; then dnl Made this a message instead of a warning because the warning is dnl likely to confuse users. AC_MSG_RESULT([Overriding Array test for MPICH2]) unset BUILD_MPI_ARRAY AC_DEFINE(HAVE_MPI_DARRAY_SUBARRAY,1,[Define if Darray is available]) HAVE_MPI_DARRAY_SUBARRAY="#define HAVE_MPI_DARRAY_SUBARRAY" MPI_FARRAY1="!" MPI_FARRAY2="!" MPI_FARRAY3="!" MPI_FARRAY4="!" MPI_FARRAY5="!" MPI_FARRAY6="!" MPI_FARRAY7="!"fi ### Test for weak symbol support...# We can't put # in the message because it causes autoconf to generate# incorrect codeHAVE_WEAK_SYMBOLS=0if test -n "$arch_hpux" || test -n "$arch_sppux" ; then# multiple secondary definitions not allowed by HP compilers# Fortran interface for HP already uses one secondary defn. # therefore, do not use this method for profiling interface.# build profiling interface explicitly. TRY_WEAK_SYMBOLS=0fiif test $TRY_WEAK_SYMBOLS = 1 ; then AC_MSG_CHECKING([for weak symbol support]) AC_TRY_LINK([extern int PFoo(int);#pragma weak PFoo = Fooint Foo(int a) { return a; }],[return PFoo(1);],has_pragma_weak=1) # # Some systems (Linux ia64 and ecc, for example), support weak symbols # only within a single object file! This tests that case. # Note that there is an extern int PFoo declaration before the # pragma. Some compilers require this in order to make the weak symbol # extenally visible. if test "$has_pragma_weak" = 1 ; then AC_MSG_RESULT([pragma weak]) AC_MSG_CHECKING([that weak symbols are visible to other files]) rm -f conftest* cat >>conftest1.c <<EOFextern int PFoo(int);#pragma weak PFoo = Fooint Foo(int);int Foo(int a) { return a; }EOF cat >>conftest2.c <<EOFextern int PFoo(int);int main(int argc, char **argv) {return PFoo(0);}EOF ac_link2='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest1.c conftest2.c $LIBS >conftest.out 2>&1' if eval $ac_link2 ; then AC_MSG_RESULT(yes) AC_MSG_CHECKING([that the compiler correctly implements weak symbols]) # The gcc 3.4.x compiler accepts the pragma weak, but does not # correctly implement it on systems where the loader doesn't # support weak symbols (e.g., cygwin). This is a bug in gcc, but it # it is one that *we* have to detect. rm -f conftest* cat >>conftest1.c <<EOFextern int PFoo(int);#pragma weak PFoo = Fooint Foo(int);int Foo(int a) { return a; }EOF cat >>conftest2.c <<EOFextern int Foo(int);int PFoo(int a) { return a+1;}int main(int argc, char **argv) {return Foo(0);}EOF if eval $ac_link2 ; then AC_MSG_RESULT(yes) has_pragma_weak=1 else AC_MSG_RESULT(no) echo "$ac_link2" >> config.log echo "Failed program was" >> config.log cat conftest1.c >>config.log cat conftest2.c >>config.log if test -s conftest.out ; then cat conftest.out >> config.log ; fi has_pragma_weak=0 fi else echo "$ac_link2" 1>&AC_FD_CC echo "Failed program was" 1>&AC_FD_CC cat conftest1.c 1>&AC_FD_CC cat conftest2.c 1>&AC_FD_CC if test -s conftest.out ; then cat conftest.out 1>&AC_FD_CC ; fi AC_MSG_RESULT(no) has_pragma_weak=0 fi rm -f conftest* fi if test "$has_pragma_weak" = 1 ; then HAVE_WEAK_SYMBOLS=1 AC_DEFINE(HAVE_PRAGMA_WEAK,1,[Define if pragma weak available]) else AC_TRY_LINK([extern int PFoo(int);#pragma _HP_SECONDARY_DEF Foo PFooint Foo(int a) { return a; }],[return PFoo(1);],has_pragma_hp_secondary=1) if test "$has_pragma_hp_secondary" = 1 ; then AC_MSG_RESULT([pragma _HP_SECONDARY_DEF]) HAVE_WEAK_SYMBOLS=1 AC_DEFINE(HAVE_PRAGMA_HP_SEC_DEF,1,[Define for HP weak pragma]) else AC_TRY_LINK([extern int PFoo(int);#pragma _CRI duplicate PFoo as Fooint Foo(int a) { return a; }],[return PFoo(1);],has_pragma_cri_duplicate=1) if test "$has_pragma_cri_duplicate" = 1 ; then AC_MSG_RESULT([pragma _CRI duplicate x as y]) HAVE_WEAK_SYMBOLS=1 AC_DEFINE(HAVE_PRAGMA_CRI_DUP,1,[Define for CRAY weak dup]) else AC_MSG_RESULT(no) fi fi fifiif test "$HAVE_WEAK_SYMBOLS" = 1 ; then AC_DEFINE(HAVE_WEAK_SYMBOLS,1,[Define if weak symbols available])fiAC_SUBST(HAVE_WEAK_SYMBOLS)## Check whether the MPI Offset type is compatible with struct flockAC_MSG_CHECKING([whether struct flock compatible with MPI_Offset])AC_TRY_COMPILE([#include <fcntl.h>],[struct flock l; $MPI_OFFSET_TYPE a=1; l.l_start = a; l.l_len = a;],pac_cv_struct_flock_and_mpi_offset=yes,pac_cv_struct_flock_and_mpi_offset=no)AC_MSG_RESULT($pac_cv_struct_flock_and_mpi_offset)# FIXME: We should look for struct flock64 and the F_SETLK64/F_GETLK64# ADIOI_Set_lock could use these instead.if test "$pac_cv_struct_flock_and_mpi_offset" = no ; then AC_MSG_CHECKING([whether struct flock compatible with int]) AC_TRY_COMPILE([#include <fcntl.h>],[struct flock l; int a=1; l.l_start = a; l.l_len = a;],pac_cv_struct_flock_and_int=yes,pac_cv_struct_flock_and_int=no) AC_MSG_RESULT($pac_cv_struct_flock_and_int) if test "$pac_cv_struct_flock_and_int" = yes ; then AC_DEFINE(NEEDS_INT_CAST_WITH_FLOCK,1,[Define if l_start and l_len data should be cast as int]) fi # FIXME. Solaris header files define off_t as a UNION if 64bit file # sizes are selected. Gah!fi## if FILE_SYSTEM is not set above, use ufs and nfs as default#if test -z "$FILE_SYSTEM" ; then file_system_ufs=1 file_system_nfs=1 FILE_SYSTEM="ufs nfs"fi# no matter what, always build testfsfile_system_testfs=1FILE_SYSTEM="testfs $FILE_SYSTEM"## Print list of configured file systems## TODO: REMOVE BAD ONES FROM THE LIST SOMEHOW?#AC_MSG_CHECKING([configured file systems])AC_MSG_RESULT([$FILE_SYSTEM])if test -n "$file_system_nfs" ; then AC_DEFINE(ROMIO_NFS,1,[Define for ROMIO with NFS]) AC_MSG_WARN([File locks may not work with NFS. See the Installation andusers manual for instructions on testing and if necessary fixing this])fiif test -n "$file_system_panfs"; then AC_DEFINE(ROMIO_PANFS,1,[Define for ROMIO with PANFS])fiif test -n "$file_system_ufs"; then AC_DEFINE(ROMIO_UFS,1,[Define for ROMIO with UFS])fiif test -n "$file_system_hfs"; then AC_DEFINE(ROMIO_HFS,1,[Define for ROMIO with HFS])fiif test -n "$file_system_sfs"; then AC_DEFINE(ROMIO_SFS,1,[Define for ROMIO with SFS])fiif test -n "$file_system_pfs"; then AC_DEFINE(ROMIO_PFS,1,[Define for ROMIO with PFS])fiif test -n "$file_system_testfs"; then AC_DEFINE(ROMIO_TESTFS,1,[Define for ROMIO with TESTFS])fiif test -n "$file_system_xfs"; then AC_DEFINE(ROMIO_XFS,1,[Define for ROMIO with XFS]) # Check for memalign value AC_CACHE_CHECK([for memory alignment needed for direct I/O], pac_cv_memalignval, [ rm -f confmemalignval rm -f /tmp/romio_tmp.bin AC_TRY_RUN([ #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <stdio.h> main() { struct dioattr st; int fd = open("/tmp/romio_tmp.bin", O_RDWR | O_CREAT, 0644); FILE *f=fopen("confmemalignval","w"); if (fd == -1) exit(1); if (!f) exit(1); fcntl(fd, F_DIOINFO, &st); fprintf( f, "%u\n", st.d_mem); exit(0); } ], pac_cv_memalignval=`cat confmemalignval`, pac_cv_memalignval="unknown",pac_cv_memalignval="unknown" ) rm -f confmemalignval rm -f /tmp/romio_tmp.bin ]) if test -n "$pac_cv_memalignval" -a "$pac_cv_memalignval" != 0 -a \ "$pac_cv_memalignval" != "unknown" ; then CFLAGS="$CFLAGS -DXFS_MEMALIGN=$pac_cv_memalignval" else AC_MSG_RESULT(assuming 128 for memory alignment) CFLAGS="$CFLAGS -DXFS_MEMALIGN=128" fifi## Verify presence of pvfs.h, issue with int64#if test -n "$file_system_pvfs"; then CPPFLAGS="$CPPFLAGS $CFLAGS" AC_CHECK_HEADERS(pvfs.h, AC_DEFINE(ROMIO_PVFS,1,[Define for ROMIO with PVFS]), AC_MSG_ERROR([PVFS support requested but cannot find pvfs.h header file]) ) # Check for missing int64_t (intel version 8 compiler and -no-gcc # selected) AC_MSG_CHECKING([that pvfs.h can be compiled]) AC_TRY_COMPILE([ #include <pvfs.h> ],[ ],pvfs_header_ok=yes,pvfs_header_ok=no ) AC_MSG_RESULT($pvfs_header_ok) if test "$pvfs_header_ok" = no -a "$ac_cv_sizeof_long_long" = 8 ; then AC_MSG_CHECKING([if pvfs.h can be compiled if we define int64_t]) # Try again, but with int64_t AC_TRY_COMPILE([ typedef long long int int64_t; #include <pvfs.h> ],[ ], pvfs_header_ok="yes with int64 definition" ) AC_MSG_RESULT($pvfs_header_ok) fi if test "$pvfs_header_ok" = "yes with int64 definition" ; then AC_DEFINE(ROMIO_PVFS_NEEDS_INT64_DEFINITION,1,[Define if int64_t must be defined for PVFS]) fi if test "$pvfs_header_ok" != "no" ; then AC_DEFINE(ROMIO_PVFS,1,[Define for ROMIO with PVFS]) AC_DEFINE(HAVE_PVFS_SUPER_MAGIC, 1, [Define if PVFS_SUPER_MAGIC defined.]) else AC_MSG_WARN(missing or broken pvfs.h header file; disabling ROMIO PVFS support) fifi## Verify presence of pvfs2.h#if test -n "$file_system_pvfs2"; then CPPFLAGS="$CPPFLAGS $CFLAGS" AC_CHECK_HEADERS(pvfs2.h, AC_DEFINE(ROMIO_PVFS2,1,[Define for ROMIO with PVFS2]) AC_DEFINE(HAVE_PVFS2_SUPER_MAGIC, 1, [Define if PVFS2_SUPER_MAGIC defined.]), AC_MSG_ERROR([PVFS2 support requested but cannot find pvfs2.h header file]) )fiif test -n "$file_system_gridftp"; then AC_DEFINE(ROMIO_GRIDFTP, 1, [Define for ROMIO with gridftp])fi## Check for presence and characteristics of async. I/O calls if# not disabled.## Q: Do we need to list some "other libs" to get things to link?#save_libs=$LIBSLIBS=## Some systems need pthreads to get AIO to work. However, we don't want# to add pthreads just because it is there, as that can cause problems# with some implementations of pthreads and compilers (e.g., gcc version 3# would fail if there was an int a[100000] on the stack if the application# was *linked* with pthreads, but would succeed if the application was# *not linked* with pthreads.#if test "x$disable_aio" = "xno" ; then foundPTHREAD=no # Do we have aio_write in aio or rt? saveLIBS=$LIBS LIBS= AC_SEARCH_LIBS(aio_write,aio rt,foundAIO=yes,foundAIO=no) if test "$foundAIO" = yes ; then AIOLIBS=$LIBS LIBS="$saveLIBS $LIBS" else LIBS="$saveLIBS" fi # If not, try finding pthread_create first, and if found, try the # test again. if test "$foundAIO" = no ; then saveLIBS=$LIBS LIBS= AC_SEARCH_LIBS(pthread_create,pthread,foundPTHREAD=yes, foundPTHREAD=no) if test "$foundPTHREAD" = yes ; then AC_SEARCH_LIBS(aio_write,aio rt,foundAIO=yes,foundAIO=no) if test "$foundAIO" = yes ; then AIO_LIBS=$LIBS LIBS="$saveLIBS $LIBS" else LIBS=$saveLIBS fi else LIBS=$saveLIBS fi fi if test "$foundAIO" = yes ; then ROMIO_LIBLIST="$ROMIO_LIBLIST $AIOLIBS" MPI_LIB="$MPI_LIB $AIOLIBS" aio_write_found=yes fi dnl AC_SEARCH_LIBS(pthread_create,pthread,dnl ROMIO_LIBLIST="$ROMIO_LIBLIST $LIBS"dnl MPI_LIB="$MPI_LIB $LIBS"dnl )dnl LIBS=dnl AC_SEARCH_LIBS(aio_write,aio rt,dnl ROMIO_LIBLIST="$ROMIO_LIBLIST $LIBS"dnl MPI_LIB="$MPI_LIB $LIBS"dnl aio_write_found=yesdnl )fiLIBS=$save_libsif test "x$disable_aio" = "xno" -a -n "$aio_write_found" ; then AC_CHECK_HEADERS(signal.h) # Just because aio.h is found by CPP doesn't mean that we can use it # We try to compile it, not just read it. AC_MSG_CHECKING([if aio.h exists and can be compiled]) AC_TRY_COMPILE([#include <aio.h>],[],have_aio_h=yes,have_aio_h=no) AC_MSG_RESULT($have_aio_h) if test "$have_aio_h" = yes ; then AC_DEFINE(HAVE_AIO_H,1,[Define if aio.h exists and can be compiled]) fi AC_MSG_CHECKING([if sys/aio.h exists and can be compiled]) AC_TRY_COMPILE([
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -