[svn-r6739] Purpose:

Bug Fix

Description:
    H5FC was failing on Copper (IBM P690). The reason: the xlf compiler
    needs files to end in .f in stead of .f90. If you have .f90 files,
    you need the "-qsuffix=f=f90" flag defined. This was defined for
    compiling things via the "-c" option (to object files) but not for
    straight compilation of a file.

    I also noticed that the directory modules were being extracted from
    was "." and "../src". H5FC would find these alright when doing a
    "make check-install" but if Suzie User were to try this, it might
    fail for her. Suzie would have to specify explicitly where to grab
    these files.

Solution:
    The solution to the problem was a bit more involved. I added a new
    variable called "F9XSUFFIXFLAG" which is set to this value if the
    machine needs it.

    Added new variable called "FSEARCH_DIRS" which can be set to the
    directories to find modules during compilation. The H5FC script knows
    where to find the correct modules (it's in the lib/ directory), so it
    uses the F9XMODFLAG to find them and not the FSEARCH_DIRS flag.

Platforms tested:
    Modi4 (Fortran & Parallel)
    Verbena (Fortran) C++ not needed since this is Fortran-only fix
    Arabica (Fortran)
    Copper (Fortran)

    Ran "make install" and "make check-install" afterwards...

Misc. update:
This commit is contained in:
Bill Wendling 2003-04-23 14:25:58 -05:00
parent 46cb3df9f5
commit 7927acd7f3
21 changed files with 153 additions and 109 deletions

View File

@ -18,6 +18,7 @@ CC=@CC@
F9X=@F9X@
F9XMODEXT=@F9XMODEXT@
F9XMODFLAG=@F9XMODFLAG@
FSEARCH_DIRS="@FSEARCH_DIRS@"
CFLAGS=@CFLAGS@
CPPFLAGS=@CPPFLAGS@
FFLAGS=@FFLAGS@

View File

@ -174,10 +174,10 @@ maintainer-clean: distclean
@$(LT_CCOMPILE) $(CFLAGS) $(CPPFLAGS) -c $<
.f90.o:
$(F9X) $(FFLAGS) -c $<
$(F9X) $(FFLAGS) $(FSEARCH_DIRS) -c $<
.f90.lo:
@$(LT_FCOMPILE) $(FFLAGS) -c $<
@$(LT_FCOMPILE) $(FFLAGS) $(FSEARCH_DIRS) -c $<
##-----------------------------------------------------------------------------
## The following section of this makefile contains dependencies between the

View File

@ -84,6 +84,8 @@ if test "X-" = "X-$F9X"; then
fi
if test "X-" = "X-$f9x_flags_set"; then
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS="-Olimit 2048 -std1"
DEBUG_FFLAGS="-Olimit 2048 -std1"
PROD_FFLAGS="-Olimit 2048 -std1"

View File

@ -58,6 +58,8 @@ if test "X-" = "X-$F9X"; then
fi
if test "X-" = "X-$f9x_flags_set"; then
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS="-O"
DEBUG_FFLAGS="-O"
PROD_FFLAGS="-O"

View File

@ -58,6 +58,8 @@ if test "X-" = "X-$F9X"; then
fi
if test "X-" = "X-$f9x_flags_set"; then
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS="-O"
DEBUG_FFLAGS="-O"
PROD_FFLAGS="-O"

View File

@ -84,9 +84,11 @@ esac
# The following is not right and need work.
if test -z "$f9x_flags_set"; then
FFLAGS=
DEBUG_FFLAGS=
PROD_FFLAGS=
PROFILE_FFLAGS=
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS=""
DEBUG_FFLAGS=""
PROD_FFLAGS=""
PROFILE_FFLAGS=""
f9x_flags_set=yes
fi

View File

@ -86,6 +86,8 @@ esac
# Use SGI supplied C compiler by default. There is no ranlib
if test "X-" = "X-$F9X"; then
F9X="f90"
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS="-64 -mips4 -O -s"
DEBUG_FFLAGS="-64 -mips4 -O -s"
PROD_FFLAGS="-64 -mips4 -O -s"
@ -115,6 +117,8 @@ if test "X-" = "X-$F9X"; then
fi
if test "X-" = "X-$f9x_flags_set"; then
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS="-64 -mips4 -O -s"
DEBUG_FFLAGS="-64 -mips4 -O -s"
PROD_FFLAGS="-64 -mips4 -O -s"

View File

@ -41,9 +41,11 @@ if test -z "$F9X"; then
fi
if test -z "$f9x_flags_set"; then
FFLAGS=
DEBUG_FFLAGS=
PROD_FFLAGS=
PROFILE_FFLAGS=
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS=""
DEBUG_FFLAGS=""
PROD_FFLAGS=""
PROFILE_FFLAGS=""
f9x_flags_set=yes
fi

View File

@ -34,7 +34,9 @@ if test "X-" = "X-$F9X"; then
fi
if test "X-" = "X-$f9x_flags_set"; then
FFLAGS="-static -O -qsuffix=f=f90 -qmoddir=./ -I./ -I../src -k"
F9XSUFFIXFLAG="-qsuffix=f=f90"
FFLAGS="-static -O ${F9XSUFFIXFLAG} -qmoddir=./ -k"
FSEARCH_DIRS="-I./ -I../src"
DEBUG_FFLAGS="-O"
PROD_FFLAGS="-O"
PROFILE_FFLAGS="-O"

View File

@ -47,7 +47,9 @@ if test "X-" = "X-$F9X"; then
fi
if test "X-" = "X-$f9x_flags_set"; then
FFLAGS="-static -O -qsuffix=f=f90 -qmoddir=./ -I./ -k"
F9XSUFFIXFLAG="-qsuffix=f=f90"
FFLAGS="-static -O ${F9XSUFFIXFLAG} -qmoddir=./ -k"
FSEARCH_DIRS="-I./ -I../src"
DEBUG_FFLAGS="-O"
PROD_FFLAGS="-O"
PROFILE_FFLAGS="-O"

View File

@ -34,7 +34,9 @@ if test "X-" = "X-$F9X"; then
fi
if test "X-" = "X-$f9x_flags_set"; then
FFLAGS="-static -O -qsuffix=f=f90 -qmoddir=./ -I./ -I../src -k"
F9XSUFFIXFLAG="-qsuffix=f=f90"
FFLAGS="-static -O ${F9XSUFFIXFLAG} -qmoddir=./ -k"
FSEARCH_DIRS="-I./ -I../src"
DEBUG_FFLAGS="-O"
PROD_FFLAGS="-O"
PROFILE_FFLAGS="-O"

View File

@ -54,9 +54,11 @@ if test "X-" = "X-$F9X"; then
fi
if test "X-" = "X-$f9x_flags_set"; then
FFLAGS=
DEBUG_FFLAGS=
PROD_FFLAGS=
PROFILE_FFLAGS=
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS=""
DEBUG_FFLAGS=""
PROD_FFLAGS=""
PROFILE_FFLAGS=""
f9x_flags_set=yes
fi

View File

@ -160,6 +160,8 @@ if test "X-" = "X-$F9X"; then
fi
if test "X-" = "X-$f9x_flags_set"; then
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS="-dp"
DEBUG_FFLAGS="-dp"
PROD_FFLAGS="-dp"

View File

@ -158,6 +158,8 @@ if test "X-" = "X-$F9X"; then
fi
if test "X-" = "X-$f9x_flags_set"; then
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS="-dp"
DEBUG_FFLAGS="-dp"
PROD_FFLAGS="-dp"

View File

@ -158,6 +158,8 @@ if test "X-" = "X-$F9X"; then
fi
if test "X-" = "X-$f9x_flags_set"; then
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS="-dp"
DEBUG_FFLAGS="-dp"
PROD_FFLAGS="-dp"

View File

@ -160,6 +160,8 @@ if test "X-" = "X-$F9X"; then
fi
if test "X-" = "X-$f9x_flags_set"; then
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS="-dp"
DEBUG_FFLAGS="-dp"
PROD_FFLAGS="-dp"

View File

@ -162,6 +162,8 @@ fi
if test "X-" = "X-$f9x_flags_set"; then
# -Wl passes flags to the linker and -M# will ignore warnings with
# number #. Warning 405 was stopping the executable from being built.
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS="-dp -Wl-M405"
DEBUG_FFLAGS=""
PROD_FFLAGS=""

View File

@ -162,6 +162,8 @@ fi
if test "X-" = "X-$f9x_flags_set"; then
# -Wl passes flags to the linker and -M# will ignore warnings with
# number #. Warning 405 was stopping the executable from being built.
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
FFLAGS="-dp -Wl-M405"
DEBUG_FFLAGS=""
PROD_FFLAGS=""

163
fortran/configure vendored
View File

@ -1480,6 +1480,7 @@ host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$as_me:$LINENO: checking shell variables initial values" >&5
echo $ECHO_N "checking shell variables initial values... $ECHO_C" >&6
set >&5
@ -1544,16 +1545,16 @@ esac
host_config="none"
for f in $host_cpu-$host_vendor-$host_os \
$host_cpu-$host_vendor-$host_os_novers \
$host_vendor-$host_os \
$host_vendor-$host_os_novers \
$host_cpu-$host_os \
$host_cpu-$host_os_novers \
$host_cpu-$host_vendor \
$host_os \
$host_os_novers \
$host_vendor \
$host_cpu ; do
$host_cpu-$host_vendor-$host_os_novers \
$host_vendor-$host_os \
$host_vendor-$host_os_novers \
$host_cpu-$host_os \
$host_cpu-$host_os_novers \
$host_cpu-$host_vendor \
$host_os \
$host_os_novers \
$host_vendor \
$host_cpu ; do
echo "$as_me:$LINENO: checking for config $f" >&5
echo $ECHO_N "checking for config $f... $ECHO_C" >&6
if test -f $srcdir/config/$f; then
@ -1570,6 +1571,8 @@ if test "X$host_config" != "Xnone"; then
. $host_config
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@ -3889,7 +3892,7 @@ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
case $host in
*-*-irix6*)
# Find out which ABI we are using.
echo '#line 3892 "configure"' > conftest.$ac_ext
echo '#line 3895 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@ -4430,7 +4433,7 @@ chmod -w .
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
compiler_c_o=no
if { (eval echo configure:4433: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
if { (eval echo configure:4436: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
if test -s out/conftest.err; then
@ -6241,7 +6244,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 6244 "configure"
#line 6247 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -6339,7 +6342,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 6342 "configure"
#line 6345 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -7341,71 +7344,6 @@ fi
if test "`uname`" = "SunOS" -o "`uname -sr`" = "HP-UX B.11.00"; then
echo "$as_me:$LINENO: checking for xdr_int in -lnsl" >&5
echo $ECHO_N "checking for xdr_int in -lnsl... $ECHO_C" >&6
if test "${ac_cv_lib_nsl_xdr_int+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lnsl $LIBS"
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char xdr_int ();
#ifdef F77_DUMMY_MAIN
# ifdef __cplusplus
extern "C"
# endif
int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
xdr_int ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_nsl_xdr_int=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
ac_cv_lib_nsl_xdr_int=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_xdr_int" >&5
echo "${ECHO_T}$ac_cv_lib_nsl_xdr_int" >&6
if test $ac_cv_lib_nsl_xdr_int = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBNSL 1
_ACEOF
LIBS="-lnsl $LIBS"
fi
echo "$as_me:$LINENO: checking for socket in -lsocket" >&5
echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6
if test "${ac_cv_lib_socket_socket+set}" = set; then
@ -7470,6 +7408,71 @@ _ACEOF
fi
echo "$as_me:$LINENO: checking for xdr_int in -lnsl" >&5
echo $ECHO_N "checking for xdr_int in -lnsl... $ECHO_C" >&6
if test "${ac_cv_lib_nsl_xdr_int+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lnsl $LIBS"
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char xdr_int ();
#ifdef F77_DUMMY_MAIN
# ifdef __cplusplus
extern "C"
# endif
int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
xdr_int ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_nsl_xdr_int=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
ac_cv_lib_nsl_xdr_int=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_xdr_int" >&5
echo "${ECHO_T}$ac_cv_lib_nsl_xdr_int" >&6
if test $ac_cv_lib_nsl_xdr_int = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBNSL 1
_ACEOF
LIBS="-lnsl $LIBS"
fi
fi
echo "$as_me:$LINENO: checking if should build only statically linked executables" >&5
@ -10325,6 +10328,7 @@ s,@host_vendor@,$host_vendor,;t t
s,@host_os@,$host_os,;t t
s,@CPPFLAGS@,$CPPFLAGS,;t t
s,@FFLAGS@,$FFLAGS,;t t
s,@FSEARCH_DIRS@,$FSEARCH_DIRS,;t t
s,@R_LARGE@,$R_LARGE,;t t
s,@R_INTEGER@,$R_INTEGER,;t t
s,@HSIZE_T@,$HSIZE_T,;t t
@ -10333,6 +10337,7 @@ s,@HID_T@,$HID_T,;t t
s,@SIZE_T@,$SIZE_T,;t t
s,@OBJECT_NAMELEN_DEFAULT_F@,$OBJECT_NAMELEN_DEFAULT_F,;t t
s,@ROOT@,$ROOT,;t t
s,@F9XSUFFIXFLAG@,$F9XSUFFIXFLAG,;t t
s,@CC@,$CC,;t t
s,@CFLAGS@,$CFLAGS,;t t
s,@LDFLAGS@,$LDFLAGS,;t t

View File

@ -48,6 +48,7 @@ AC_OUTPUT_COMMANDS([
AC_CANONICAL_HOST
AC_SUBST(CPPFLAGS)
AC_SUBST(FFLAGS)
AC_SUBST(FSEARCH_DIRS)
dnl ----------------------------------------------------------------------
dnl HDF5 integer variables for the H5fortran_types.f90 file.
@ -141,16 +142,16 @@ esac
host_config="none"
for f in $host_cpu-$host_vendor-$host_os \
$host_cpu-$host_vendor-$host_os_novers \
$host_vendor-$host_os \
$host_vendor-$host_os_novers \
$host_cpu-$host_os \
$host_cpu-$host_os_novers \
$host_cpu-$host_vendor \
$host_os \
$host_os_novers \
$host_vendor \
$host_cpu ; do
$host_cpu-$host_vendor-$host_os_novers \
$host_vendor-$host_os \
$host_vendor-$host_os_novers \
$host_cpu-$host_os \
$host_cpu-$host_os_novers \
$host_cpu-$host_vendor \
$host_os \
$host_os_novers \
$host_vendor \
$host_cpu ; do
AC_MSG_CHECKING(for config $f)
if test -f $srcdir/config/$f; then
host_config=$srcdir/config/$f
@ -164,6 +165,8 @@ if test "X$host_config" != "Xnone"; then
. $host_config
fi
AC_SUBST(F9XSUFFIXFLAG)
dnl ----------------------------------------------------------------------
dnl Check for programs.
dnl
@ -317,8 +320,8 @@ AC_CHECK_LIB([m], [ceil])
if test "`uname`" = "SunOS" -o "`uname -sr`" = "HP-UX B.11.00"; then
dnl ...for Solaris
AC_CHECK_LIB([nsl], [xdr_int])
AC_CHECK_LIB([socket], [socket])
AC_CHECK_LIB([nsl], [xdr_int])
fi
dnl ----------------------------------------------------------------------

View File

@ -54,6 +54,7 @@ FCBASE="@F9X@"
FLINKERBASE="@F9X@"
FFLAGS="@FFLAGS@"
F9XMODFLAG="@F9XMODFLAG@"
F9XSUFFIXFLAG="@F9XSUFFIXFLAG@"
LDFLAGS="@LDFLAGS@"
LIBS="@LIBS@"
@ -186,7 +187,7 @@ if test "x$do_compile" = "xyes"; then
compile_args="-c $compile_args"
fi
$SHOW $FC $FFLAGS $compile_args
$SHOW $FC $FFLAGS ${F9XSUFFIXFLAG} $compile_args
status=$?
if test "$status" != "0"; then
@ -204,7 +205,7 @@ if test "x$do_link" = "xyes"; then
link_args="$link_args ${libdir}/libhdf5_fortran.a ${libdir}/libhdf5.a"
link_args="$link_args $LIBS"
$SHOW $FLINKER ${fmodules} $link_objs $link_args ${LDFLAGS}
$SHOW $FLINKER ${FFLAGS} ${F9XSUFFIXFLAG} ${fmodules} $link_objs $link_args ${LDFLAGS}
status=$?
fi