blob: 62892db011476115c2747034db6f9bd58d15e33e [file] [log] [blame]
diff --git a/configure b/configure
index 833f483..bcfa62d 100755
--- a/configure
+++ b/configure
@@ -3226,574 +3226,14 @@ else
echo
echo "Warning: this option has not been extensively tested!"
echo "Please report problems to ccp4@ccp4.ac.uk"
- # Search for vendor LAPACK/BLAS first
- if test ! "$with_netlib_lapack" ; then
- # Initialise variables to blank
- lapackdir=
- XLAPACK_LIB=
- # Possible directories to check for vendor or pre-existing LAPACK or
- # BLAS - add to these if you want to test others
- trydirs="`echo $LD_LIBRARY_PATH |sed -e s/:/\ /g` /lib /usr/lib /usr/local/lib"
- # Possible library names
- # These are the names like xxxx where the library will be libxxxx.a
- # or libxxxx.so
- echo
- echo "Guessing names for native/vendor LAPACK and/or BLAS libraries"
- echo "on this system"
- case $system in
- linux | linux64 | linux32 )
- # linux users will usually have them in /usr/lib but don't call it
- trylapack="lapack"
- tryblas="blas"
- # if code is non_shared then this can lead to problems. both blas and lapack
- # need to be resolved even if they are not called!
- if test "$non_shared" = yes; then
- echo "You are compiling linux non_shared. This sometimes causes problems "
- echo " so checking for requirements."
- echo "Checking: try to link library against test program"
- if test -f testlink.f || test -f testlink ; then
- rm -f testlink*
- fi
- cat > testlink.f <<EOF
- PROGRAM TESTLINK
-C A bit of scala code to test the linking
- real bf(3), bnorm
-c
- integer maxbmt
- parameter (maxbmt = 2)
- double precision B(maxbmt,maxbmt), eigval(maxbmt),
- $ eigvec(maxbmt,maxbmt), w(5*maxbmt)
- integer m, ia, ix, istat
-c
- B(1,1) = 1.00
- B(1,2) = 1.00
- B(2,1) = 1.00
- B(2,2) = 1.00
-c
- m = maxbmt
- ia = maxbmt
- ix = maxbmt
- call dsyev('N', 'L', m, B, ia, eigval, w, 5*maxbmt, istat)
- end
-EOF
- #firstly test without -lblas
- test_compile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f -llapack"
- echo $test_compile
- if { (eval $test_compile >& /dev/null ) 2>&1; } && test -s testlink ; then
- # Compilation was okay
- echo "... only -llapack needed"
- XLAPACK_LIB="-llapack"
- # Set the next two variables so that configure
- # doesn't try to build netlib libraries
- LAPACKLIB="lapack"
- noblas=yes
- trylapack=
- tryblas=
- else
- echo "more than just -llapack needed...."
- test_compile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f -llapack -lblas"
- echo $test_compile
- if { (eval $test_compile ) 2>&1; } && test -s testlink ; then
- # Compilation was okay
- echo "...-llapack and -lblas were needed"
- XLAPACK_LIB="-llapack -lblas"
- # Set the next two variables so that configure
- # doesn't try to build netlib libraries
- LAPACKLIB="lapack blas"
- noblas=no
- trylapack=
- tryblas=
- else
- echo "....could not find either lapack or blas."
- fi
- fi
- fi
- # add 64 bit libs
- case $system in
- linux64 ) trydirs="/usr/lib64 ${trydirs}" ;;
- esac
-
- ;;
- osf1)
- # OSF1 has dxml (old version) and cxml
- # which should have both lapack and blas
- trylapack="dxml cxml"
- tryblas=
- trydirs="${trydirs} /usr/shlib"
- ;;
- irix)
- # Additional search paths for IRIX
- trydirs="${trydirs} /usr/lib32"
- # SCSL should have both LAPACK and BLAS
- trylapack="scs"
- tryblas="blas"
- ;;
- irix64)
- # Additional search paths for IRIX64
- trydirs="${trydirs} /usr/lib64"
- # SCSL should have both LAPACK and BLAS
- trylapack="scs"
- tryblas="blas"
- # Extra compiler flags?
- #XLAPACKFLAGS="-OPT:IEEE_NaN_inf=ON"
- ;;
- aix)
- # Additional search paths for AIX
- trydirs="${trydirs}"
- # AIX might have ESSL library - blas only I think
- trylapack=
- tryblas="essl"
- ;;
- hpux)
- # Additional search paths for HPUX
- trydirs="${trydirs} /opt/fortran/lib /opt/fortran/lib/pa2.0 /opt/mlib/lib/pa2.0"
- # HPUX should have both LAPACK (part of mlib) and BLAS
- trylapack="lapack"
- tryblas="blas"
- # Extra compiler flags?
- # +U77 required for ETIME function - this is already in XFFLAGS
- #XLAPACKFLAGS="+U77"
- ;;
-
- sunos | sunos64)
- # Sun has libraries with BLAS and LAPACK invoked using
- # -xlic_lib=sunperf
- trylapack=
- tryblas=
- echo "SunOs can use the Sun Performance Library (if installed)"
- echo "which has both BLAS and LAPACK 3.0"
- echo
- echo "Looking for a valid library to use..."
- echo
- # Loop over the possible library names
- try_libs="sunperf"
- for testlib in $try_libs
- do
- if test ! "$XLAPACK_LIB" ; then
- # Try running a test compile to see if this a valid library
- if test -f testlink.f || test -f testlink ; then
- rm -f testlink*
- fi
- cat > testlink.f <<EOF
-c Test fortran program to link against library
- PROGRAM TESTLINK
- IMPLICIT NONE
- INTEGER A
- A = 1
- STOP
- END
-EOF
- test_compile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f -dalign -xlic_lib=$testlib"
- echo $test_compile
- if { (eval $test_compile ) 2>&1; } && test -s testlink ; then
- # Compilation was okay
- echo "... -xlic_lib=$testlib is okay"
- XLAPACK_LIB="-dalign -xlic_lib=$testlib"
- # Set the next two variables so that configure
- # doesn't try to build netlib libraries
- LAPACKLIB="$testlib"
- noblas=yes
- else
- # Compilation failed
- echo "... cannot use -xlic_lib=$testlib"
- fi
- # End of test for testlib
- fi
- # End of loop over possible lib names
- done
- # Report if no suitable library was found
- if test ! "$XLAPACK_LIB" ; then
- echo
- echo "No suitable LAPACK library was found."
- echo "This may be because the Sun Performance Library is not"
- echo "installed on your system"
- echo "Contact your system administrator or Sun vendor"
- fi
- ;;
- Darwin | Darwin32 | Darwin64 )
- # Darwin has libraries with BLAS and LAPACK invoked using
- # -framework vecLib
- echo "Darwin can use the vecLib Library (if installed)"
- echo "which has both BLAS and LAPACK 3.0"
- echo
- # This is a special case so try running a test compile
- echo "Checking: try to link library against test program"
- if test -f testlink.f || test -f testlink ; then
- rm -f testlink*
- fi
- cat > testlink.f <<EOF
-c Test fortran program to link against library
- PROGRAM TESTLINK
- IMPLICIT NONE
- INTEGER A
- A = 1
- STOP
- END
-EOF
- test_compile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f -framework vecLib"
- echo $test_compile
- if { (eval $test_compile ) 2>&1; } && test -s testlink ; then
- # Compilation was okay
- echo "... -framework vecLib is okay"
- XLAPACK_LIB="-framework vecLib"
- # Set the next two variables so that configure
- # doesn't try to build netlib libraries
- LAPACKLIB="vecLib"
- noblas=yes
- else
-#alternative linking for vecLib libraries
- case `uname -sr` in
- *Darwin\ 7.* ) test_compile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f -lcc_dynamic -Wl,-framework -Wl,vecLib" ;;
- * ) test_compile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f -Wl,-framework -Wl,vecLib" ;;
- esac
-
- echo $test_compile
- if { (eval $test_compile ) 2>&1; } && test -s testlink ; then
- # Compilation was okay
- echo "... -framework vecLib is okay"
- XLAPACK_LIB="-Wl,-framework -Wl,vecLib"
- # Set the next two variables so that configure
- # doesn't try to build netlib libraries
- LAPACKLIB="-Wl,-framework -Wl,vecLib"
- noblas=yes
- else
- # Compilation failed
- echo "... cannot use -framework vecLib"
- echo
- fi
- fi
- trylapack=
- tryblas=
-# try the fink installation
- trydirs="${trydirs} /sw"
- ;;
- Darwin_ibm_compilers )
- # Darwin has libraries with BLAS and LAPACK invoked using
- # -framework vecLib
- echo "Darwin can use the vecLib Library (if installed)"
- echo "which has both BLAS and LAPACK 3.0"
- echo
- # This is a special case so try running a test compile
- echo "Checking: try to link library against test program"
- if test -f testlink.f || test -f testlink ; then
- rm -f testlink*
- fi
- cat > testlink.f <<EOF
-c Test fortran program to link against library
- PROGRAM TESTLINK
- IMPLICIT NONE
- INTEGER A
- A = 1
- STOP
- END
-EOF
- case `uname -sr` in
- Darwin\ 8* )
- XLAPACK_LIB="-L/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A -lLAPACK -lBLAS"
- test_compile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f $XLAPACK_LIB"
- ;;
- Darwin\ 7* )
- XLAPACK_LIB="-L/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A -lLAPACK -lBLAS"
- test_compile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f -lcc_dynamic $XLAPACK_LIB"
- ;;
- *)
- XLAPACK_LIB="/System/Library/Frameworks/vecLib.Framework/Versions/Current/VecLib"
- test_compile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f $XLAPACK_LIB"
- esac
- echo $test_compile
- if { (eval $test_compile ) 2>&1; } && test -s testlink ; then
- # Compilation was okay
- echo "... -framework vecLib is okay"
- # Set the next two variables so that configure
- # doesn't try to build netlib libraries
- LAPACKLIB="vecLib"
- noblas=yes
- else
- # Compilation failed
- XLAPACK_LIB=""
- echo "... cannot use -framework vecLib"
- echo
- fi
- trylapack=
- tryblas=
-# try the fink installation
- trydirs="${trydirs} /sw"
- ;;
-
- Darwin_intel_compilers)
- # Darwin has libraries with BLAS and LAPACK invoked using
- # -F vecLib
- echo "Darwin can use the vecLib Library (if installed)"
- echo "which has both BLAS and LAPACK 3.0"
- echo
- # This is a special case so try running a test compile
- echo "Checking: try to link library against test program"
- if test -f testlink.f || test -f testlink ; then
- rm -f testlink*
- fi
- cat > testlink.f <<EOF
-c Test fortran program to link against library
- PROGRAM TESTLINK
- IMPLICIT NONE
- INTEGER A
- A = 1
- STOP
- END
-EOF
- test_compile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f -Wl,-framework -Wl,vecLib"
- echo $test_compile
- if { (eval $test_compile ) 2>&1; } && test -s testlink ; then
- # Compilation was okay
- # doesn't try to build netlib libraries
- XLAPACK_LIB="-F /System/Library/Frameworks -Qoption,ld,-framework -Qoption,ld,vecLib"
- LAPACKLIB="vecLib"
- noblas=yes
- else
- # Compilation failed
- echo "... cannot use -framework vecLib"
- echo
- fi
- trylapack=
- tryblas=
-# try the fink installation
- trydirs="${trydirs} /sw"
- ;;
-
-# linux_ia64_sgi_altix)
-# SGI Japan
- ia64_linux_intel)
- # Additional search paths for Linux/IA64
- trydirs="${trydirs} /opt/scsl/lib /usr/lib /usr/local/lib"
- # SCSL and MKL should have both LAPACK and BLAS
- trylapack="mkl_lapack scs lapack"
- tryblas="mkl scs blas"
- ;;
- linux_ibm_compilers )
- trylapack="lapack"
- tryblas="blas"
- ;;
- linux64_ibm_compilers )
- trydirs="/usr/lib64 ${trydirs}"
- trylapack="lapack"
- tryblas="blas"
- ;;
- linux_intel_compilers )
- trydirs="/usr/lib64 ${trydirs}"
- trylapack="mkl_lapack lapack"
- tryblas="mkl blas"
- ;;
- *)
- echo "The guesses for this system may not be correct - please"
- echo "e-mail ccp4@ccp4.ac.uk if you have any extra information"
- echo
- # Default guess is just libblas
- trylapack="lapack"
- tryblas="blas"
- ;;
- esac
- #
- # Search for LAPACK libraries
- #
- # Write out what the guesses are
- if test "$trylapack" ; then
- echo "Possible LAPACK library names for this system:"
- for libname in $trylapack
- do
- echo " lib$libname"
- done
- # Possible library name extensions
- tryexts="a so dylib"
- # Now loop over all the possibilities and see if anything
- # turns up
- echo
- echo "Searching for libraries with LAPACK and BLAS:"
- for testdir in $trydirs
- do
- for testlib in $trylapack
- do
- for ext in $tryexts
- do
- if test ! "$LAPACKLIB"; then
- if test -s "$testdir/lib$testlib.$ext" ; then
- echo "...found LAPACK library: $testdir/lib$testlib.$ext"
- # Now try and link to a test program
- # This is really for IRIX where libraries can be
- # o32 or n32
- echo " Testing: try to link library against test program"
- if test -f testlink.f || test -f testlink ; then
- rm -f testlink*
- fi
- cat > testlink.f <<EOF
-c Test fortran program to link against library
- PROGRAM TESTLINK
- IMPLICIT NONE
- INTEGER A
- A = 1
- STOP
- END
-EOF
- test_compile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f -L$testdir -l$testlib"
- test_ccompile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f -L$testdir -l$testlib $XLDFLAGS"
- echo $test_compile
- if { (eval $test_compile ) 2>&1; } && test -s testlink ; then
- have_lapack=yes
- else
-# cover clapack option
- echo $test_ccompile
- if { (eval $test_ccompile ) 2>&1; } && test -s testlink ; then
- have_lapack=yes
- fi
- fi
- if test x$have_lapack = xyes ; then
- # This one is okay
- LAPACKLIB="$testlib"
- LAPACKDIR="$testdir"
- echo "Link ok - using lib$LAPACKLIB from $LAPACKDIR"
- #
- XLAPACK_LIB="-L$LAPACKDIR -l$LAPACKLIB"
- #
- # Test to see if we need BLAS too
- # Do this by trying to compile a test program
- # Use the LSAME test for now
- echo
- echo " * Checking whether we need a separate BLAS library *"
- echo " Testing: try linking library against test program"
- cd lib/lapack/test
- if test -f testlsame ; then
- rm -f testsame testlsame.o
- fi
- test_compile="$FC $FOPTIM $XFFLAGS -o testlsame lsametst.f -L$LAPACKDIR -l$LAPACKLIB"
- test_ccompile="$FC $FOPTIM $XFFLAGS -o testlsame lsametst.f -L$LAPACKDIR -l$LAPACKLIB $XLDFLAGS"
- echo $test_compile
- if { ( eval $test_compile) 2>&1;} && test -s testlsame ; then
- have_blas=yes
- else
-#cblas route
- echo $test_ccompile
- if { ( eval $test_ccompile) 2>&1;} && test -s testlsame ; then
- have_blas=yes
- fi
- fi
- if test x$have_blas = xyes ; then
- echo "Test program okay - additional separate BLAS not required"
- noblas=yes
- else
- echo "Test program failed - need a separate BLAS library"
- fi
- cd ../../..
- else
- # Keep looking
- echo " link failed - cannot use lib$testlib"
- fi
- fi
- fi
- done
- done
- if test ! "$LAPACKLIB"; then
- echo "...nothing in $testdir"
- fi
- done
- fi
-
- # If LAPACKLIB hasn't been set at this point then no LAPACK library
- # was found
- if test ! "$LAPACKLIB" ; then
- echo
- echo "No pre-existing LAPACK library found - NetLib LAPACK will be built instead"
- make_lapack=lapacklib
- fi
- # Look for possible BLAS
- if test ! "$noblas" ; then
- if test "$tryblas" ; then
- echo
- echo "Possible BLAS library names for this system:"
- for libname in $tryblas
- do
- echo " lib$libname"
- done
- # Possible library name extensions
- tryexts="a so"
- # Now loop over all the possibilities and see if anything
- # turns up
- echo
- echo "Searching for libraries with BLAS:"
- for testdir in $trydirs
- do
- for testlib in $tryblas
- do
- for ext in $tryexts
- do
- if test ! "$BLASLIB"; then
- if test -s "$testdir/lib$testlib.$ext" ; then
- echo "...found BLAS library: $testdir/lib$testlib.$ext"
- # Now try and link to a test program
- # This is really for IRIX where libraries can be
- # o32 or n32
- echo " Testing: try to link library against test program"
- if test -f testlink.f || test -f testlink ; then
- rm -f testlink*
- fi
- cat > testlink.f <<EOF
-c Test fortran program to link against library
- PROGRAM TESTLINK
- IMPLICIT NONE
- INTEGER A
- A = 1
- STOP
- END
-EOF
- test_compile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f -L$testdir -l$testlib"
- test_ccompile="$FC $FOPTIM $XFFLAGS -o testlink testlink.f -L$testdir -l$testlib $XLDFLAGS"
- echo $test_compile
- if { ( eval $test_compile) 2>&1;} && test -s testlink ; then
- have_blas=yes
- else
- echo $test_ccompile
- if { ( eval $test_compile) 2>&1;} && test -s testlink ; then
- have_blas=yes
- fi
- fi
- if test x$have_blas = xyes ; then
- # This one is okay
- BLASLIB="$testlib"
- BLASDIR="$testdir"
- BLASEXT="$ext"
- echo "Link ok - using lib$BLASLIB from $BLASDIR"
- XLAPACK_LIB="$XLAPACK_LIB -L$BLASDIR -l$BLASLIB"
- else
- # Keep looking
- echo " link failed - cannot use lib$testlib"
- fi
- fi
- fi
- done
- done
- if test ! "$BLASLIB"; then
- echo "...nothing in $testdir"
- fi
- done
- fi
- # Do we need to build BLAS too?
- if test ! "$BLASLIB" ; then
- echo
- echo "No pre-existing BLAS library was found - NetLib BLAS will be built instead"
- echo "This may result in poorer performance of the LAPACK routines"
- make_blas=blaslib
- BLASLIB=blas
- BLASDIR="$srcdir/lib/lapack"
- BLASEXT="a"
- fi
- fi
+ # gentoo is clever
+ make_blas=
+ make_lapack=
+ BLASLIB=$(${PKG_CONFIG} --libs blas)
+ LAPACKLIB=$(${PKG_CONFIG} --libs lapack)
+ XLAPACK_LIB="${BLASLIB} ${LAPACKLIB}"
+ XFFLAGS_LAPACK="$(${PKG_CONFIG} --cflags lapack blas)"
# Otherwise force building of NetLib BLAS and LAPACK libs
- else
- echo
- echo "! Force building of NetLib BLAS and LAPACK..."
- make_blas=blaslib
- make_lapack=lapacklib
- BLASLIB=blas
- BLASDIR="$srcdir/lib/lapack"
- BLASEXT="a"
- fi
# need to know if we the lapack library was linked using the C or
# fortran linker
if test -f testlink.f || test -f testlink || test -f testlink.c ; then
@@ -3916,8 +3356,8 @@ RANLIB = ${RANLIB}
INSTALL_DATA = ${INSTALL_DATA}
libdir = $libdir
#
-BLASLIB = lib${BLASLIB}.${BLASEXT}
-LAPACKLIB = liblapack.a
+BLASLIB = ${BLASLIB}
+LAPACKLIB = ${LAPACKLIB}
#
# These variables define targets in the main Makefile
blaslib = ${make_blas}