summaryrefslogtreecommitdiffstats
path: root/acsite.m4
diff options
context:
space:
mode:
Diffstat (limited to 'acsite.m4')
-rw-r--r--acsite.m4504
1 files changed, 504 insertions, 0 deletions
diff --git a/acsite.m4 b/acsite.m4
new file mode 100644
index 0000000..46f69f9
--- /dev/null
+++ b/acsite.m4
@@ -0,0 +1,504 @@
+dnl -------------------------------------------------------------------------
+dnl -------------------------------------------------------------------------
+dnl
+dnl Copyright by the Board of Trustees of the University of Illinois.
+dnl All rights reserved.
+dnl
+dnl This file is part of HDF5. The full HDF5 copyright notice, including
+dnl terms governing use, modification, and redistribution, is contained in
+dnl the files COPYING and Copyright.html. COPYING can be found at the root
+dnl of the source code distribution tree; Copyright.html can be found at the
+dnl root level of an installed copy of the electronic HDF5 document set and
+dnl is linked from the top-level documents page. It can also be found at
+dnl http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have
+dnl access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu.
+dnl
+dnl Macros for HDF5 Fortran
+dnl
+dnl -------------------------------------------------------------------------
+dnl -------------------------------------------------------------------------
+
+dnl -------------------------------------------------------------------------
+dnl AC_PROG_F9X
+dnl
+dnl Check for a Fortran 9X compiler.
+dnl
+AC_DEFUN(AC_PROG_F9X,
+[AC_CHECK_PROGS(F9X, f90 pgf90 xlf90 f95 g95 xlf95)
+test -z "$F9X" && AC_MSG_ERROR([no acceptable f9X compiler found in \$PATH])
+
+AC_PROG_F9X_WORKS
+AC_PROG_F9X_GNU
+
+if test $ac_cv_prog_g9x = yes; then
+ G9X=yes
+ dnl Check whether -g works, even if FFLAGS is set, in case the package
+ dnl plays around with FFLAGS (such as to build both debugging and
+ dnl normal versions of a library), tasteless as that idea is.
+ ac_test_FFLAGS="${FFLAGS+set}"
+ ac_save_FFLAGS="$FFLAGS"
+ FFLAGS=
+ AC_PROG_F9X_G
+ if test "$ac_test_FFLAGS" = set; then
+ FFLAGS="$ac_save_FFLAGS"
+ elif test $ac_cv_prog_f9x_g = yes; then
+ FFLAGS="-g -O2"
+ else
+ FFLAGS="-O2"
+ fi
+else
+ G9X=
+ test "${FFLAGS+set}" = set || FFLAGS="-g"
+fi
+])
+
+dnl -------------------------------------------------------------------------
+dnl AC_TRY_F9X_COMPILER()
+dnl
+dnl It would be nice if the compiler actually works.
+dnl
+AC_DEFUN(AC_TRY_F9X_COMPILER, [
+cat > conftest.$ac_ext << EOF
+[$1]
+EOF
+if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ [$2]=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+ [$3]=no
+ else
+ [$3]=yes
+ fi
+else
+ echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
+ [$2]=no
+fi
+rm -fr conftest*
+])
+
+dnl -------------------------------------------------------------------------
+dnl AC_LANG_FORTRAN9X()
+dnl
+dnl Generic macro to setup the Fortran 9X specific env variables.
+dnl
+m4_define([AC_LANG(FORTRAN9X)],
+[ac_ext=f90
+ac_compile='${F9X-f90} -c $FFLAGS conftest.$ac_ext 1>&AS_MESSAGE_LOG_FD'
+ac_link='${F9X-f90} -o conftest${ac_exeext} $FFLAGS conftest.$ac_ext $LDFLAGS $LIBS 1>&AS_MESSAGE_LOG_FD'
+cross_compiling=$ac_cv_prog_f9x_cross
+])
+
+AU_DEFUN([AC_LANG_FORTRAN9X], [AC_LANG(FORTRAN9X)])
+
+dnl -------------------------------------------------------------------------
+dnl AC_LANG_F9X_WORKS()
+dnl
+dnl It would be nice if the compiler actually works.
+dnl
+AC_DEFUN(AC_PROG_F9X_WORKS, [
+AC_MSG_CHECKING([whether the Fortran 9X compiler ($F9X $FFLAGS $LDFLAGS) works])
+AC_LANG_SAVE
+AC_LANG_FORTRAN9X
+AC_TRY_F9X_COMPILER([
+ program conftest
+ end
+], ac_cv_prog_f9x_works, ac_cv_prog_f9x_cross)
+AC_LANG_RESTORE
+AC_MSG_RESULT($ac_cv_prog_f9x_works)
+if test $ac_cv_prog_f9x_works = no; then
+ AC_MSG_ERROR([installation or configuration problem: Fortran 9X compiler cannot create executables.])
+fi
+AC_MSG_CHECKING([whether the Fortran 9X compiler ($F9X $FFLAGS $LDFLAGS) is a cross-compiler])
+AC_MSG_RESULT($ac_cv_prog_f9x_cross)
+cross_compiling=$ac_cv_prog_f9x_cross
+])
+
+dnl -------------------------------------------------------------------------
+dnl AC_PROG_F9X_GNU
+dnl
+dnl Test whether for Fortran 9X compiler is `g95' (the GNU Fortran 95
+dnl Compiler). This test depends on whether the Fortran 9X compiler
+dnl can do CPP pre-processing.
+dnl
+AC_DEFUN(AC_PROG_F9X_GNU,
+[AC_CACHE_CHECK(whether we are using GNU Fortran 95, ac_cv_prog_g9x,
+[cat > conftest.fpp <<EOF
+#ifdef __GNUC__
+ yes
+#endif
+EOF
+if AC_TRY_COMMAND($F9X -E conftest.fpp) | egrep yes >/dev/null 2>&1; then
+ ac_cv_prog_g9x=yes
+else
+ ac_cv_prog_g9x=no
+fi])])
+
+dnl -------------------------------------------------------------------------
+dnl AC_PROG_F9X_G
+dnl
+dnl Test whether the Fortran 9X compiler can accept the `-g' option
+dnl to enable debugging.
+dnl
+AC_DEFUN(AC_PROG_F9X_G,
+[AC_CACHE_CHECK(whether $F9X accepts -g, ac_cv_prog_f9x_g,
+[cat > conftest.f << EOF
+ program conftest
+ end
+EOF
+if test -z "`$F9X -g -c conftest.f 2>&1`"; then
+ ac_cv_prog_f9x_g=yes
+else
+ ac_cv_prog_f9x_g=no
+fi
+rm -f conftest*
+])])
+
+dnl -------------------------------------------------------------------------
+dnl AC_F9X_OPT_FLAGS()
+dnl
+dnl Check for optimizer flags the Fortran compiler can use.
+dnl
+AC_DEFUN(AC_F9X_OPT_FLAGS,
+[AC_MSG_CHECKING([for $F9X optimizer flags])
+AC_LANG_SAVE
+AC_LANG_FORTRAN9X
+
+for flags in "-fast" "-O3" "-O" "";do
+ cat > conftest.$ac_ext <<EOF
+ program main
+ end
+EOF
+ ac_compile='${F9X-f90} -c $flag $FFLAGS conftest.$ac_ext 1>&AS_MESSAGE_LOG_FD'
+ if AC_TRY_EVAL(ac_compile); then
+ if grep 'passed to ld' conftest.out > /dev/null 2>&1; then :; else
+ FFLAGS="$FFLAGS $flags"
+ break
+ fi
+ fi
+done
+
+if test -n "$flags"; then
+ echo "$flags" 1>&6
+else
+ echo "none" 1>&6
+fi
+rm -f conftest*
+])
+
+dnl -------------------------------------------------------------------------
+dnl AC_F9X_MODS()
+dnl
+dnl Check how F9X handles modules. This macro also checks which
+dnl command-line option to use to include the module once it's built.
+dnl
+AC_DEFUN(AC_F9X_MODS,
+[AC_MSG_CHECKING(what $F9X does with modules)
+AC_LANG_SAVE
+AC_LANG_FORTRAN9X
+
+test -d conftestdir || mkdir conftestdir
+cd conftestdir
+rm -rf *
+
+cat >conftest.$ac_ext <<EOF
+ module module
+ integer foo
+ end module module
+EOF
+
+eval $ac_compile
+modfiles=""
+F9XMODEXT=""
+
+for f in conftest.o module.mod MODULE.mod module.M MODULE.M; do
+ if test -f "$f" ; then
+ modfiles="$f"
+
+ case "$f" in
+ *.o) F9XMODEXT="o" ;;
+ *.mod) F9XMODEXT="mod" ;;
+ *.M) F9XMODEXT="M" ;;
+ esac
+ fi
+done
+
+echo $modfiles 6>&1
+if test "$modfiles" = file.o; then
+ echo $ac_n "checking whether $F9X -em is saner""... $ac_c" 1>&6
+ OLD_FFLAGS=$FFLAGS
+ FFLAGS="$FFLAGS -em"
+ eval $ac_compile
+ modfiles=""
+ for f in file.o module.mod MODULE.mod module.M MODULE.M; do
+ test -f $f && modfiles="$f"
+ done
+ if test "$modfiles" = "file.o"; then
+ FFLAGS=$OLD_FFLAGS
+ echo no 6>&1
+ else
+ echo yes 6>&1
+ fi
+fi
+cd ..
+
+AC_MSG_CHECKING(how $F9X finds modules)
+
+for flag in "-I" "-M" "-p"; do
+ cat >conftest.$ac_ext <<EOF
+ program conftest
+ use module
+ end program conftest
+EOF
+
+ ac_compile='${F9X-f90} $FFLAGS ${flag}conftestdir -c conftest.$ac_ext 1>&AS_MESSAGE_LOG_FD'
+
+ if AC_TRY_EVAL(ac_compile); then
+ F9XMODFLAG=$flag
+ break
+ fi
+done
+
+if test -n "$F9XMODFLAG"; then
+ echo $F9XMODFLAG 1>&6
+ FFLAGS="$F9XMODFLAG. $F9XMODFLAG../src $FFLAGS"
+else
+ echo unknown 1>&6
+fi
+AC_SUBST(F9XMODFLAG)
+AC_SUBST(F9XMODEXT)
+rm -rf conftest*
+])
+
+dnl -------------------------------------------------------------------------
+dnl AC_TRY_FCOMPILE()
+dnl
+dnl Check if we can compile a simple Fortran 90 program.
+dnl
+dnl AC_TRY_FCOMPILE(FUNCTION-BODY,
+dnl [ACTION-IF-SUCCESS], [ACTION-IF-NOT-SUCCESS])
+dnl
+AC_DEFUN([AC_TRY_FCOMPILE],
+[AC_LANG_SAVE
+AC_LANG_FORTRAN9X
+
+test -d conftestdir || mkdir conftestdir
+cd conftestdir
+rm -rf *
+
+cat >conftest.$ac_ext <<EOF
+ $1
+EOF
+
+if AC_TRY_EVAL(ac_compile); then
+ :
+ [$2]
+else
+ :
+ [$3]
+fi
+cd ..
+rm -rf conftest*
+])
+
+dnl -------------------------------------------------------------------------
+dnl AC_TRY_FLINK()
+dnl
+dnl Check if we can link a simple Fortran 90 program.
+dnl
+dnl AC_TRY_FLINK(INCLUDES, FUNCTION-BODY,
+dnl [ACTION-IF-SUCCESS], [ACTION-IF-NOT-SUCCESS])
+dnl
+AC_DEFUN([AC_TRY_FLINK],
+[AC_LANG_SAVE
+AC_LANG_FORTRAN9X
+
+test -d conftestdir || mkdir conftestdir
+cd conftestdir
+rm -rf *
+
+cat >conftest.$ac_ext <<EOF
+ program conftest
+ include '$1'
+ $2
+ end
+EOF
+
+if AC_TRY_EVAL(ac_compile) && AC_TRY_EVAL(ac_link); then
+ :
+ [$3]
+else
+ :
+ [$4]
+fi
+cd ..
+rm -rf conftest*
+])
+
+dnl -------------------------------------------------------------------------
+dnl AC_CHECK_FLIB()
+dnl
+dnl Check if we can link a simple Fortran 90 program with the specified library.
+dnl
+dnl AC_CHECK_FLIB(LIBRARY, FUNCTION-BODY,
+dnl [ACTION-IF-SUCCESS], [ACTION-IF-NOT-SUCCESS])
+dnl
+AC_DEFUN([AC_CHECK_FLIB],
+[AC_LANG_SAVE
+AC_LANG_FORTRAN9X
+
+test -d conftestdir || mkdir conftestdir
+cd conftestdir
+rm -rf *
+
+cat >conftest.$ac_ext <<EOF
+ program conftest
+ $2
+ end
+EOF
+
+if test -n "$1"; then
+ saved_LIBS="$LIBS"
+ LIBS="$LIBS -l$1"
+fi
+
+if AC_TRY_EVAL(ac_compile) && AC_TRY_EVAL(ac_link); then
+ :
+ [$3]
+else
+ LIBS="$saved_LIBS"
+ [$4]
+fi
+cd ..
+rm -rf conftest*
+])
+
+dnl -------------------------------------------------------------------------
+dnl -------------------------------------------------------------------------
+dnl
+dnl Possible future tests for the Fortran stuff...
+dnl
+dnl -------------------------------------------------------------------------
+dnl -------------------------------------------------------------------------
+dnl
+dnl echo $ac_n "checking whether f90 real type has 12 digits of precision""... $ac_c" 1>&6
+dnl cat >conftest.f90 <<'EOF'
+dnl program conftest
+dnl if (selected_real_kind(12) .eq. kind(0.0)) then
+dnl print '(a)','YES'
+dnl else
+dnl print '(a)','NO'
+dnl end if
+dnl end program conftest
+dnl EOF
+dnl $ac_cv_prog_F90 $FFLAGS -o conftest conftest.f90 > /dev/null 2>&1
+dnl if test "`./conftest | head -1`" = YES; then
+dnl echo "yes" 1>&6
+dnl AC_DEFINE(HIPREC)
+dnl else
+dnl echo "no" 1>&6
+dnl fi
+
+dnl echo $ac_n "checking whether f90 precision of default real type""... $ac_c" 1>&6
+dnl cat >conftest.f90 <<'EOF'
+dnl program conftest
+dnl if (kind(0.0) .eq. selected_real_kind(12) .or.&
+dnl &kind(0.0) .eq. selected_real_kind(6) ) then
+dnl print '(a)','YES'
+dnl else
+dnl print '(a)','NO'
+dnl end if
+dnl end program conftest
+dnl EOF
+dnl $ac_cv_prog_F90 $FFLAGS -o conftest conftest.f90 > /dev/null 2>&1
+dnl if test "`./conftest | head -1`" = YES; then
+dnl echo "OK" 1>&6
+dnl AC_DEFINE(REALOK)
+dnl else
+dnl echo "no" 1>&6
+dnl fi
+
+dnl echo $ac_n "checking accuracy of arithmetic""... $ac_c" 1>&6
+dnl cat >conftest.f90 <<'EOF'
+dnl program conftest
+dnl integer, parameter :: double=selected_real_kind(12)
+dnl real(double), parameter :: ulp=2.0_double**(-47)
+dnl real(double), parameter :: ans=0.92699498904359955986_double
+dnl real(double) :: x,y,z
+dnl integer i
+dnl x=0.0_double
+dnl y=ulp
+dnl do i=2,100
+dnl z=x+y
+dnl x=y
+dnl y=z-int(z)
+dnl end do
+dnl if (y-ans .lt. ulp/2.0_double) then
+dnl print '(a)','YES'
+dnl else
+dnl print '(a)','NO'
+dnl end if
+dnl end program conftest
+dnl EOF
+dnl $ac_cv_prog_F90 $FFLAGS -o conftest conftest.f90 > /dev/null 2>&1
+dnl if test "`./conftest | head -1`" = YES; then
+dnl echo "OK" 1>&6
+dnl AC_DEFINE(ARITHOK)
+dnl else
+dnl echo "no" 1>&6
+dnl fi
+
+dnl echo $ac_n "checking whether int is the fastest way to truncate""... $ac_c" 1>&6
+dnl cat >conftest.f90 <<'EOF'
+dnl program conftest
+dnl integer, parameter :: double=selected_real_kind(12)
+dnl real(double), parameter :: ulp=2.0_double**(-47)
+dnl real(double) :: x,y,z,ya,yb
+dnl integer :: t0,t1,i,timea,timeb
+dnl
+dnl x=0.0_double
+dnl y=ulp
+dnl call system_clock(t0)
+dnl do i=2,1000000
+dnl z=x+y
+dnl x=y
+dnl y=z-int(z)
+dnl end do
+dnl ya=y
+dnl call system_clock(t1)
+dnl timea=t1-t0
+dnl
+dnl x=0.0_double
+dnl y=ulp
+dnl call system_clock(t0)
+dnl do i=2,1000000
+dnl z=x+y
+dnl x=y
+dnl if (z.ge.1.0_double) then
+dnl y=z-1.0_double
+dnl else
+dnl y=z
+dnl end if
+dnl end do
+dnl yb=y
+dnl call system_clock(t1)
+dnl timeb=t1-t0
+dnl
+dnl if (timea.lt.timeb) then
+dnl print '(a)','YES'
+dnl else
+dnl print '(a)','NO'
+dnl end if
+dnl print *,ya,yb
+dnl end program conftest
+dnl EOF
+dnl $ac_cv_prog_F90 $FFLAGS -o conftest conftest.f90 > /dev/null 2>&1
+dnl if test "`./conftest | head -1`" = YES; then
+dnl echo "yes" 1>&6
+dnl AC_DEFINE(USEINT)
+dnl else
+dnl echo "no" 1>&6
+dnl fi
+dnl
+dnl -------------------------------------------------------------------------
+dnl -------------------------------------------------------------------------