autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: AC_SEARCH_LIBS and fortran


From: JoeOutflow
Subject: Re: AC_SEARCH_LIBS and fortran
Date: Sat, 15 Mar 2008 10:47:55 -0700 (PDT)

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
> address@hidden
> 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.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]