On 02/02/2008, Adam C Powell IV wrote:
> On Thu, 2008-01-31 at 07:40 -0500, Adam C Powell IV wrote:
> > On Thu, 2008-01-31 at 11:36 +0530, Kumar Appaiah wrote:
> > > Further diagnosis showed that these are the error causing lines, along
> > > with the fixes:
> > >
> > > diff -u mpich-1.2.7/src/fortran/configure 
> > > mpich-1.2.7/src/fortran/configure
> > > --- mpich-1.2.7/src/fortran/configure
> > > +++ mpich-1.2.7/src/fortran/configure
> > > @@ -15820,11 +15820,11 @@
> > >         # turn off f90
> > >         F90=""
> > >     else
> > > -       F90_MODINCFLAG="`$MAKE -f ../../f90modules/Makefile f90modflag`"
> > > -       F90MODINCSPEC="`$MAKE -f ../../f90modules/Makefile f90modspec`"
> > > +       F90_MODINCFLAG="`$MAKE -s -f ../../f90modules/Makefile 
> > > f90modflag`"
> > > +       F90MODINCSPEC="`$MAKE -s -f ../../f90modules/Makefile f90modspec`"
> > >              if test -z "$USER_SET_F90INC" -a -z "$F90INC" ; then
> > >             # This should use a test or try to get it from the f90module.
> > > -           F90INC=`$MAKE -f ../../f90modules/Makefile f90incflag`
> > > +           F90INC=`$MAKE -s -f ../../f90modules/Makefile f90incflag`
> > >              fi
> > >          fi
> > >      fi
> > >
> > > For some reason, make was printing "make[1]: entering directory..."
> > > (and confusing the build). And this resulted in a bad config.status,
> > > with sed errors (and commands like sed s,make[1] ...),  which produced
> > > an empty mpe_fortdefs.h, which didn't result in defines for the
> > > relevant MPI_* stuff.
>
> I'm not getting something here.  In my build, and I see in yours as
> well, there's this:
>
> make --no-print-directory mpi-addons
> Making a shared library of libmpich.a
> farg.o: In function `mpir_iargc_':
> farg.f:(.text+0x9): undefined reference to `_gfortran_iargc'
> farg.o: In function `mpir_getarg_':
> farg.f:(.text+0x39): undefined reference to `_gfortran_getarg_i4'
> collect2: ld returned 1 exit status
> Successfully linked libmpich.a
> Making a shared library of libpmpich.a
> farg.o: In function `mpir_iargc_':
> farg.f:(.text+0x9): undefined reference to `_gfortran_iargc'
> farg.o: In function `mpir_getarg_':
> farg.f:(.text+0x39): undefined reference to `_gfortran_getarg_i4'
> collect2: ld returned 1 exit status
> Successfully linked libpmpich.a
> Making a shared library of libfmpich.a
> farg.o: In function `mpir_iargc_':
> farg.f:(.text+0x9): undefined reference to `_gfortran_iargc'
> farg.o: In function `mpir_getarg_':
> farg.f:(.text+0x39): undefined reference to `_gfortran_getarg_i4'
> collect2: ld returned 1 exit status
> Successfully linked libfmpich.a
> Making a shared library of libpmpich++.a
> Successfully linked libpmpich++.a
> Testing that MPI applications can be linked with shared libs...

This is due to the following patch I introduced:

@@ -170,7 +170,10 @@
         libbase=`basename $libname .a`
    # The -h name sets the name of the object; this is necessary to
    # ensure that the dynamic linker can find the proper shared library.
-        if $CLINKER -shared -Wl,-h,$libbase.$slsuffix -o
../shared/$libbase.$slsuffix *.o $OtherLibs ; then
+        export F77_GETARGDECL="intrinsic GETARG"
+   if $CLINKER -shared -Wl,-h,$libbase.$slsuffix -o
../shared/$libbase.$slsuffix *.o $OtherLibs ; then
+       echo Successfully linked $libname
+   elif gfortran -shared -Wl,-h,$libbase.$slsuffix -o
../shared/$libbase.$slsuffix *.o $OtherLibs ; then
        echo Successfully linked $libname
    else
        echo "Linking $libname shared lib failed "

Note that $CLINKER will fail to resolve the getarg calls. However, the
elif case retries with gfortran, and thus, ends up linking fine. The
ideal solution would be for you to use $CLINKER for those stuff which
don't need GETARG, and gfortran for linking the stuff which uses
GETARG.

> Funny thing is, the libraries are there, and mpicc seems to be able to
> use them.  So it seems to work, but I'm not sure I understand how or
> why...  Any ideas?

So, I'd suggest you list out the libraries which need getarg, and link
them using gfortran, and others using $CLINKER. Sounds OK?

> I've neatened up the patches, and am putting everything at
> http://lyre.mit.edu/~powell/mpich/ with a bunch of new mpif90 support
> stuff.  If you're sure it's right, I'll upload it.  But it will have to
> get through the new queue because of the ldbl->gf name change.

I guess things should be fine, though you might want others with
rdepends to check. To allay fears of breakage, experimental might be
OK?

> Thanks again, this is a real milestone for the mpich package!

I am glad to have been of help!

> [BTW, are you on debian-beowulf and/or debian-science?  If so, I won't
> CC you in my announcement to those lists of the mpich transition.]

No, I am not (yet). Please do CC me, though I'll be a mere observer.

Many thanks.

Kumar
-- 
Kumar Appaiah,
458, Jamuna Hostel,
Indian Institute of Technology Madras,
Chennai - 600036



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to