Re: autoconf, Fortran, LAPACK, and AC_SEARCH_LIBS

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

 



Hello,

I think I solved one of my problems.  Evidently, there's an Autoconf
macro AC_LANG.  By adding AC_LANG(Fortran) to my configure.ac file, it
ensures that test programs are written in Fortran rather than in C, and
that seems sufficient to find sgetrf in liblapack.

Now, onto the next issue!  Which is this:

The reference implementation of LAPACK is relatively simple. I just have
to link my application using -llapack, and it works.

The Intel MKL implementation is in pieces, with dependencies.  On a
64-bit platform, I have to link using -lmkl_lapack -lmkl_em64t -lguide
-lpthread.  


First, how do I get the AC_SEARCH_LIBS([sgetrf],[lapack mkl_lapack])
test to work?  After all, in order to work, the test program that
AC_SEARCH_LIBS writes would have also to link to mkl_em64t, guide, and
pthread, otherwise it gets 'undefined reference' to functions in those
files, the link step fails, and it concludes that it has not found
sgetrf (which is in mkl_lapack).

Second, how do I pass all this information onto the generated Makefile?
After all, when using the reference lapack, I want only -llapack in the
link line.  When using Intel MKL, I want -lmkl_lapack -lmkl_em64t
-lguide -lpthread.

Thanks!

Cheers,
David

On Tue, 2009-03-24 at 15:54 -0700, David A. Ventimiglia wrote:
> Hello,
> 
> I have a Fortran program that uses LAPACK.  Since LAPACK can come from different vendors depending on the platform, 
> and be in different locations (e.g., /usr/lib/liblapack.a with the reference implementation, or in mkl_lapack.a in 
> the Intel compiler tree when using the Intel compiler), I want to use autoconf to make by build process agnostic about this. 
> How do I accomplish this?
> 
> I thought I'd put this in my configure.ac file:
> 
> 		AC_SEARCH_LIBS([sgetrf], [lapack mkl_lapack])
> 
> 'sgetrf' is a subroutine in LAPACK.
> 
> After I run aclocal ; autoconf ; automake ; ./configure, among the output is this:
> 
> 		checking for library containing sgetrf... no 
> 
> And in the config.log file (attached), there's this:
> 
> 		configure:3968: checking for library containing sgetrf                                                                                                                                                                                       
> 		configure:4009: gcc -o conftest -g -O2   conftest.c >&5                                                                                                                                                                                     
> 		/tmp/cckOOIRY.o: In function `main':                                                                                                                                                                                                         
> 		/home/dventimi/work/cosmosurfo/conftest.c:21: undefined reference to `sgetrf'                                                                                                                                                                
> 		collect2: ld returned 1 exit status                                                                                                                                                                                                          
> 		configure:4015: $? = 1                                                                                                                                                                                                                       
> 
> Evidently, to find a library file that supports the test subprogram 'sgetrf', it tries to compile and link a test
> program that calls 'sgetrf', but it comes back with 'undefined reference'.
> 
> Perhaps this is a consequence of using autoconf to search for Fortran libraries (like LAPACK).  But either way, how is one
> supposed to do this?  Thanks!
> 
> Cheers,
> David
> 
> _______________________________________________
> Autoconf mailing list
> Autoconf@xxxxxxx
> http://lists.gnu.org/mailman/listinfo/autoconf



_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
http://lists.gnu.org/mailman/listinfo/autoconf

[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux