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. _______________________________________________ Autoconf mailing list Autoconf@xxxxxxx http://lists.gnu.org/mailman/listinfo/autoconf