Hi Keith...., keithmarshall wrote: > > On Saturday 15 March 2008 02:57, JoeOutflow wrote: >> ... the -L flags should be contained in the LDFLAGS >> variable, but this is blank in the Makefiles. According to the manual >> LDFLAGS is a preset output variable and a search for "LDFLAGS" >> through the entire manual fails to turn up any explanation of how to >> append a library directory to LDFLAGS. Assigning it directly in >> configure.ac makes autoconf complain. > > Autoconf doesn't automagically guess where you may have installed your > libraries; if that isn't in any of the compiler's default search paths, > then you have to tell it where to look. Normally, you shouldn't > hardwire that into your configure script; you should leave it for the > user to specify the LDFLAGS setting at configure time: > > path/to/configure LDFLAGS=/path/to/extra/libs ... > > If you know, at autoconf time, where the extra libs path is likely to > point, you can AC_SUBST some alternative PKG_LDFLAGS setting, and adapt > your Makefile.in to also expand $(PKG_LDFLAGS) in the linking commands. > It is bad manners to explicitly define LDFLAGS at autoconf time, as > users expect to define it at configure time. > >> Secondly the test program that configure attempts to compile is bound >> to fail even if all the "-L's" and "-l's" are exactly correct in the >> compile/link commands. This is because a number of necessary lines >> are missing from it. configure tries to compile: >> >> program test >> call h5open_f >> end program test > > You are using AC_SEARCH_LIBS to confirm that some library in the libs > path can furnish the h5open_f function/subroutine, right? The test > program doesn't have to be runnable; linkable is sufficient. The above > test program should admirably satisfy that requirement. > >> but at minimum it must contain: >> >> program test >> use hdf5 >> integer :: i >> call h5open_f(i) >> end program test > > Why? To be runnable, maybe, but it doesn't need to be runnable. > >> Can this be arranged? If there was a subroutine in the library that >> didn't require an argument I'd have used it instead, > > There is no opportunity for the test program to discover that the > subroutine should have had an argument, until runtime. AC_SEARCH_LIBS > doesn't care, since it will never run this program; all it needs to > know is that the symbol is exposed to the linker, no matter how many > arguments it would normally take. > >> ... there is still the need for the "use hdf5" statement. > > It's been many years since I last wrote FORTRAN, and when I did, it was > FORTRAN-77. I've never written a `use' statement in a FORTRAN program, > in my life, but if this has the effect of telling the compiler what the > argument requirements for the test function are, then it would actually > *damage* the test program, to specify it; let the compiler assume that > the subprogram requires no arguments, so the test doesn't fail at > compile time, and the linker can then report the symbol availability, > which is what you really are trying to test. > > Regards, > Keith. > > > Your response has been very enlightening, but I'm still in the dark about > one thing. The AC_SEARCH_LIBS test is still failing and I think it's > because the the compile command does not include a -I/library/is/here > flag. At least I know the test program will compile when this flag is > given by hand. How do I explain to autoconf that this flag is needed? > > > > _______________________________________________ > Autoconf mailing list > Autoconf@xxxxxxx > http://lists.gnu.org/mailman/listinfo/autoconf > > -- View this message in context: http://www.nabble.com/AC_SEARCH_LIBS-and-fortran-tp16064029p16070461.html Sent from the Gnu - Autoconf - General mailing list archive at Nabble.com. _______________________________________________ Autoconf mailing list Autoconf@xxxxxxx http://lists.gnu.org/mailman/listinfo/autoconf