3887
|
1 dnl @synopsis ACX_BLAS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) |
|
2 dnl |
|
3 dnl This macro looks for a library that implements the BLAS |
|
4 dnl linear-algebra interface (see http://www.netlib.org/blas/). |
|
5 dnl On success, it sets the BLAS_LIBS output variable to |
|
6 dnl hold the requisite library linkages. |
|
7 dnl |
|
8 dnl To link with BLAS, you should link with: |
|
9 dnl |
|
10 dnl $BLAS_LIBS $LIBS $FLIBS |
|
11 dnl |
|
12 dnl in that order. FLIBS is the output variable of the |
|
13 dnl AC_F77_LIBRARY_LDFLAGS macro (called if necessary by ACX_BLAS), |
|
14 dnl and is sometimes necessary in order to link with F77 libraries. |
|
15 dnl Users will also need to use AC_F77_DUMMY_MAIN (see the autoconf |
|
16 dnl manual), for the same reason. |
|
17 dnl |
|
18 dnl Many libraries are searched for, from ATLAS to CXML to ESSL. |
|
19 dnl The user may also use --with-blas=<lib> in order to use some |
|
20 dnl specific BLAS library <lib>. In order to link successfully, |
|
21 dnl however, be aware that you will probably need to use the same |
|
22 dnl Fortran compiler (which can be set via the F77 env. var.) as |
|
23 dnl was used to compile the BLAS library. |
|
24 dnl |
|
25 dnl ACTION-IF-FOUND is a list of shell commands to run if a BLAS |
|
26 dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands |
|
27 dnl to run it if it is not found. If ACTION-IF-FOUND is not specified, |
|
28 dnl the default action will define HAVE_BLAS. |
|
29 dnl |
|
30 dnl This macro requires autoconf 2.50 or later. |
|
31 dnl |
|
32 dnl @version $Id: acx_blas.m4,v 1.2 2001/12/13 01:03:06 simons Exp $ |
|
33 dnl @author Steven G. Johnson <stevenj@alum.mit.edu> |
|
34 dnl |
|
35 AC_DEFUN([ACX_BLAS], [ |
|
36 AC_PREREQ(2.50) |
|
37 AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS]) |
|
38 acx_blas_ok=no |
|
39 |
|
40 AC_ARG_WITH(blas, |
5844
|
41 [AS_HELP_STRING([--with-blas=<lib>], [use BLAS library <lib>])]) |
3887
|
42 case $with_blas in |
|
43 yes | "") ;; |
|
44 no) acx_blas_ok=disable ;; |
|
45 -* | */* | *.a | *.so | *.so.* | *.o) BLAS_LIBS="$with_blas" ;; |
|
46 *) BLAS_LIBS="-l$with_blas" ;; |
|
47 esac |
|
48 |
|
49 # Get fortran linker names of BLAS functions to check for. |
6208
|
50 if $have_fortran_compiler; then |
|
51 AC_F77_FUNC(sgemm) |
|
52 AC_F77_FUNC(dgemm) |
|
53 elif $have_f2c; then |
|
54 sgemm=sgemm_ |
|
55 dgemm=dgemm_ |
|
56 fi |
3887
|
57 |
|
58 acx_blas_save_LIBS="$LIBS" |
|
59 LIBS="$LIBS $FLIBS" |
|
60 |
|
61 # First, check BLAS_LIBS environment variable |
|
62 if test $acx_blas_ok = no; then |
|
63 if test "x$BLAS_LIBS" != x; then |
|
64 save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS" |
|
65 AC_MSG_CHECKING([for $sgemm in $BLAS_LIBS]) |
5844
|
66 AC_LINK_IFELSE([AC_LANG_CALL([], [$sgemm])], |
|
67 [acx_blas_ok=yes], [BLAS_LIBS=""]) |
3887
|
68 AC_MSG_RESULT($acx_blas_ok) |
|
69 LIBS="$save_LIBS" |
|
70 fi |
|
71 fi |
|
72 |
|
73 # BLAS linked to by default? (happens on some supercomputers) |
|
74 if test $acx_blas_ok = no; then |
|
75 save_LIBS="$LIBS"; LIBS="$LIBS" |
|
76 AC_CHECK_FUNC($sgemm, [acx_blas_ok=yes]) |
|
77 LIBS="$save_LIBS" |
|
78 fi |
|
79 |
|
80 # BLAS in ATLAS library? (http://math-atlas.sourceforge.net/) |
|
81 if test $acx_blas_ok = no; then |
|
82 AC_CHECK_LIB(atlas, ATL_xerbla, |
|
83 [AC_CHECK_LIB(f77blas, $sgemm, |
|
84 [AC_CHECK_LIB(cblas, cblas_dgemm, |
|
85 [acx_blas_ok=yes |
|
86 BLAS_LIBS="-lcblas -lf77blas -latlas"], |
|
87 [], [-lf77blas -latlas])], |
|
88 [], [-latlas])]) |
|
89 fi |
|
90 |
4157
|
91 # BLAS in Apple vecLib framework? (Mac OS X) |
|
92 if test $acx_blas_ok = no; then |
7062
|
93 vlib_flags="-Wl,-framework -Wl,vecLib" |
4157
|
94 save_LIBS="$LIBS"; LIBS="$vlib_flags $LIBS" |
|
95 AC_MSG_CHECKING([for $sgemm in $vlib_flags]) |
5844
|
96 AC_LINK_IFELSE([AC_LANG_CALL([], [$sgemm])], |
|
97 [acx_blas_ok=yes; BLAS_LIBS="$vlib_flags"], |
|
98 [BLAS_LIBS=""]) |
4157
|
99 AC_MSG_RESULT($acx_blas_ok) |
|
100 LIBS="$save_LIBS" |
|
101 fi |
|
102 |
3887
|
103 # BLAS in PhiPACK libraries? (requires generic BLAS lib, too) |
|
104 if test $acx_blas_ok = no; then |
|
105 AC_CHECK_LIB(blas, $sgemm, |
|
106 [AC_CHECK_LIB(dgemm, $dgemm, |
|
107 [AC_CHECK_LIB(sgemm, $sgemm, |
|
108 [acx_blas_ok=yes; BLAS_LIBS="-lsgemm -ldgemm -lblas"], |
|
109 [], [-lblas])], |
|
110 [], [-lblas])]) |
|
111 fi |
|
112 |
|
113 # BLAS in Alpha CXML library? |
|
114 if test $acx_blas_ok = no; then |
|
115 AC_CHECK_LIB(cxml, $sgemm, [acx_blas_ok=yes;BLAS_LIBS="-lcxml"]) |
|
116 fi |
|
117 |
|
118 # BLAS in Alpha DXML library? (now called CXML, see above) |
|
119 if test $acx_blas_ok = no; then |
|
120 AC_CHECK_LIB(dxml, $sgemm, [acx_blas_ok=yes;BLAS_LIBS="-ldxml"]) |
|
121 fi |
|
122 |
|
123 # BLAS in Sun Performance library? |
|
124 if test $acx_blas_ok = no; then |
|
125 if test "x$GCC" != xyes; then # only works with Sun CC |
|
126 AC_CHECK_LIB(sunmath, acosp, |
|
127 [AC_CHECK_LIB(sunperf, $sgemm, |
|
128 [BLAS_LIBS="-xlic_lib=sunperf -lsunmath" |
|
129 acx_blas_ok=yes],[],[-lsunmath])]) |
|
130 fi |
|
131 fi |
|
132 |
|
133 # BLAS in SCSL library? (SGI/Cray Scientific Library) |
|
134 if test $acx_blas_ok = no; then |
|
135 AC_CHECK_LIB(scs, $sgemm, [acx_blas_ok=yes; BLAS_LIBS="-lscs"]) |
|
136 fi |
|
137 |
|
138 # BLAS in SGIMATH library? |
|
139 if test $acx_blas_ok = no; then |
|
140 AC_CHECK_LIB(complib.sgimath, $sgemm, |
|
141 [acx_blas_ok=yes; BLAS_LIBS="-lcomplib.sgimath"]) |
|
142 fi |
|
143 |
|
144 # BLAS in IBM ESSL library? (requires generic BLAS lib, too) |
|
145 if test $acx_blas_ok = no; then |
|
146 AC_CHECK_LIB(blas, $sgemm, |
|
147 [AC_CHECK_LIB(essl, $sgemm, |
|
148 [acx_blas_ok=yes; BLAS_LIBS="-lessl -lblas"], |
|
149 [], [-lblas $FLIBS])]) |
|
150 fi |
|
151 |
|
152 # Generic BLAS library? |
|
153 if test $acx_blas_ok = no; then |
|
154 AC_CHECK_LIB(blas, $sgemm, [acx_blas_ok=yes; BLAS_LIBS="-lblas"]) |
|
155 fi |
|
156 |
|
157 AC_SUBST(BLAS_LIBS) |
|
158 |
|
159 LIBS="$acx_blas_save_LIBS" |
|
160 |
|
161 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: |
|
162 if test x"$acx_blas_ok" = xyes; then |
|
163 ifelse([$1],,AC_DEFINE(HAVE_BLAS,1,[Define if you have a BLAS library.]),[$1]) |
|
164 : |
|
165 else |
|
166 acx_blas_ok=no |
|
167 $2 |
|
168 fi |
|
169 ])dnl ACX_BLAS |