Mercurial > hg > octave-nkf
annotate m4/ax_blas.m4 @ 19840:c5270263d466 gui-release
close gui-release branch
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 30 Jan 2015 17:41:50 -0500 |
parents | d6240c099a02 |
children |
rev | line source |
---|---|
10951 | 1 # =========================================================================== |
2 # http://www.gnu.org/software/autoconf-archive/ax_blas.html | |
3 # =========================================================================== | |
4 # | |
5 # SYNOPSIS | |
6 # | |
7 # AX_BLAS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) | |
8 # | |
9 # DESCRIPTION | |
10 # | |
11 # This macro looks for a library that implements the BLAS linear-algebra | |
12 # interface (see http://www.netlib.org/blas/). On success, it sets the | |
13 # BLAS_LIBS output variable to hold the requisite library linkages. | |
14 # | |
15 # To link with BLAS, you should link with: | |
16 # | |
17 # $BLAS_LIBS $LIBS $FLIBS | |
18 # | |
19 # in that order. FLIBS is the output variable of the | |
20 # AC_F77_LIBRARY_LDFLAGS macro (called if necessary by AX_BLAS), and is | |
21 # sometimes necessary in order to link with F77 libraries. Users will also | |
22 # need to use AC_F77_DUMMY_MAIN (see the autoconf manual), for the same | |
23 # reason. | |
24 # | |
25 # Many libraries are searched for, from ATLAS to CXML to ESSL. The user | |
26 # may also use --with-blas=<lib> in order to use some specific BLAS | |
27 # library <lib>. In order to link successfully, however, be aware that you | |
28 # will probably need to use the same Fortran compiler (which can be set | |
29 # via the F77 env. var.) as was used to compile the BLAS library. | |
30 # | |
31 # ACTION-IF-FOUND is a list of shell commands to run if a BLAS library is | |
32 # found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it is | |
33 # not found. If ACTION-IF-FOUND is not specified, the default action will | |
34 # define HAVE_BLAS. | |
35 # | |
36 # LICENSE | |
37 # | |
38 # Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu> | |
39 # | |
40 # This program is free software: you can redistribute it and/or modify it | |
41 # under the terms of the GNU General Public License as published by the | |
42 # Free Software Foundation, either version 3 of the License, or (at your | |
43 # option) any later version. | |
44 # | |
45 # This program is distributed in the hope that it will be useful, but | |
46 # WITHOUT ANY WARRANTY; without even the implied warranty of | |
47 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | |
48 # Public License for more details. | |
49 # | |
50 # You should have received a copy of the GNU General Public License along | |
51 # with this program. If not, see <http://www.gnu.org/licenses/>. | |
52 # | |
53 # As a special exception, the respective Autoconf Macro's copyright owner | |
54 # gives unlimited permission to copy, distribute and modify the configure | |
55 # scripts that are the output of Autoconf when processing the Macro. You | |
56 # need not follow the terms of the GNU General Public License when using | |
57 # or distributing such scripts, even though portions of the text of the | |
58 # Macro appear in them. The GNU General Public License (GPL) does govern | |
59 # all other use of the material that constitutes the Autoconf Macro. | |
60 # | |
61 # This special exception to the GPL applies to versions of the Autoconf | |
62 # Macro released by the Autoconf Archive. When you make and distribute a | |
63 # modified version of the Autoconf Macro, you may extend this special | |
64 # exception to the GPL to apply to your modified version as well. | |
65 | |
19492
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
66 #serial 14 |
10951 | 67 |
68 AU_ALIAS([ACX_BLAS], [AX_BLAS]) | |
69 AC_DEFUN([AX_BLAS], [ | |
3887 | 70 AC_PREREQ(2.50) |
71 AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS]) | |
19492
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
72 AC_REQUIRE([AC_CANONICAL_HOST]) |
10951 | 73 ax_blas_ok=no |
3887 | 74 |
75 AC_ARG_WITH(blas, | |
5844 | 76 [AS_HELP_STRING([--with-blas=<lib>], [use BLAS library <lib>])]) |
3887 | 77 case $with_blas in |
78 yes | "") ;; | |
10951 | 79 no) ax_blas_ok=disable ;; |
3887 | 80 -* | */* | *.a | *.so | *.so.* | *.o) BLAS_LIBS="$with_blas" ;; |
81 *) BLAS_LIBS="-l$with_blas" ;; | |
82 esac | |
83 | |
84 # Get fortran linker names of BLAS functions to check for. | |
10951 | 85 AC_F77_FUNC(sgemm) |
86 AC_F77_FUNC(dgemm) | |
3887 | 87 |
10951 | 88 ax_blas_save_LIBS="$LIBS" |
3887 | 89 LIBS="$LIBS $FLIBS" |
90 | |
91 # First, check BLAS_LIBS environment variable | |
10951 | 92 if test $ax_blas_ok = no; then |
3887 | 93 if test "x$BLAS_LIBS" != x; then |
94 save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS" | |
95 AC_MSG_CHECKING([for $sgemm in $BLAS_LIBS]) | |
10951 | 96 AC_TRY_LINK_FUNC($sgemm, [ax_blas_ok=yes], [BLAS_LIBS=""]) |
97 AC_MSG_RESULT($ax_blas_ok) | |
3887 | 98 LIBS="$save_LIBS" |
99 fi | |
100 fi | |
101 | |
102 # BLAS linked to by default? (happens on some supercomputers) | |
10951 | 103 if test $ax_blas_ok = no; then |
3887 | 104 save_LIBS="$LIBS"; LIBS="$LIBS" |
11017 | 105 AC_MSG_CHECKING([if $sgemm is being linked in already]) |
106 AC_TRY_LINK_FUNC($sgemm, [ax_blas_ok=yes]) | |
107 AC_MSG_RESULT($ax_blas_ok) | |
3887 | 108 LIBS="$save_LIBS" |
109 fi | |
110 | |
19492
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
111 # BLAS in OpenBLAS library? (http://xianyi.github.com/OpenBLAS/) |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
112 if test $ax_blas_ok = no; then |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
113 AC_CHECK_LIB(openblas, $sgemm, [ax_blas_ok=yes |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
114 BLAS_LIBS="-lopenblas"]) |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
115 fi |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
116 |
3887 | 117 # BLAS in ATLAS library? (http://math-atlas.sourceforge.net/) |
10951 | 118 if test $ax_blas_ok = no; then |
3887 | 119 AC_CHECK_LIB(atlas, ATL_xerbla, |
120 [AC_CHECK_LIB(f77blas, $sgemm, | |
121 [AC_CHECK_LIB(cblas, cblas_dgemm, | |
10951 | 122 [ax_blas_ok=yes |
3887 | 123 BLAS_LIBS="-lcblas -lf77blas -latlas"], |
124 [], [-lf77blas -latlas])], | |
125 [], [-latlas])]) | |
126 fi | |
127 | |
128 # BLAS in PhiPACK libraries? (requires generic BLAS lib, too) | |
10951 | 129 if test $ax_blas_ok = no; then |
3887 | 130 AC_CHECK_LIB(blas, $sgemm, |
131 [AC_CHECK_LIB(dgemm, $dgemm, | |
132 [AC_CHECK_LIB(sgemm, $sgemm, | |
10951 | 133 [ax_blas_ok=yes; BLAS_LIBS="-lsgemm -ldgemm -lblas"], |
3887 | 134 [], [-lblas])], |
135 [], [-lblas])]) | |
136 fi | |
137 | |
10951 | 138 # BLAS in Intel MKL library? |
139 if test $ax_blas_ok = no; then | |
19492
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
140 # MKL for gfortran |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
141 if test x"$ac_cv_fc_compiler_gnu" = xyes; then |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
142 # 64 bit |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
143 if test $host_cpu = x86_64; then |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
144 AC_CHECK_LIB(mkl_gf_lp64, $sgemm, |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
145 [ax_blas_ok=yes;BLAS_LIBS="-lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread"],, |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
146 [-lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread]) |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
147 # 32 bit |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
148 elif test $host_cpu = i686; then |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
149 AC_CHECK_LIB(mkl_gf, $sgemm, |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
150 [ax_blas_ok=yes;BLAS_LIBS="-lmkl_gf -lmkl_sequential -lmkl_core -lpthread"],, |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
151 [-lmkl_gf -lmkl_sequential -lmkl_core -lpthread]) |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
152 fi |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
153 # MKL for other compilers (Intel, PGI, ...?) |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
154 else |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
155 # 64-bit |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
156 if test $host_cpu = x86_64; then |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
157 AC_CHECK_LIB(mkl_intel_lp64, $sgemm, |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
158 [ax_blas_ok=yes;BLAS_LIBS="-lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread"],, |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
159 [-lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread]) |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
160 # 32-bit |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
161 elif test $host_cpu = i686; then |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
162 AC_CHECK_LIB(mkl_intel, $sgemm, |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
163 [ax_blas_ok=yes;BLAS_LIBS="-lmkl_intel -lmkl_sequential -lmkl_core -lpthread"],, |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
164 [-lmkl_intel -lmkl_sequential -lmkl_core -lpthread]) |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
165 fi |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
166 fi |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
167 fi |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
168 # Old versions of MKL |
d6240c099a02
build: Update m4 macros to their latest versions (bug #43517).
Rik <rik@octave.org>
parents:
15153
diff
changeset
|
169 if test $ax_blas_ok = no; then |
15153
ba431d1106e3
build: Update ax_XXX macros in m4 directory to newest versions.
Rik <rik@octave.org>
parents:
11017
diff
changeset
|
170 AC_CHECK_LIB(mkl, $sgemm, [ax_blas_ok=yes;BLAS_LIBS="-lmkl -lguide -lpthread"],,[-lguide -lpthread]) |
10951 | 171 fi |
172 | |
173 # BLAS in Apple vecLib library? | |
174 if test $ax_blas_ok = no; then | |
175 save_LIBS="$LIBS"; LIBS="-framework vecLib $LIBS" | |
11017 | 176 AC_MSG_CHECKING([for $sgemm in -framework vecLib]) |
177 AC_TRY_LINK_FUNC($sgemm, [ax_blas_ok=yes;BLAS_LIBS="-framework vecLib"]) | |
178 AC_MSG_RESULT($ax_blas_ok) | |
10951 | 179 LIBS="$save_LIBS" |
180 fi | |
181 | |
3887 | 182 # BLAS in Alpha CXML library? |
10951 | 183 if test $ax_blas_ok = no; then |
184 AC_CHECK_LIB(cxml, $sgemm, [ax_blas_ok=yes;BLAS_LIBS="-lcxml"]) | |
3887 | 185 fi |
186 | |
187 # BLAS in Alpha DXML library? (now called CXML, see above) | |
10951 | 188 if test $ax_blas_ok = no; then |
189 AC_CHECK_LIB(dxml, $sgemm, [ax_blas_ok=yes;BLAS_LIBS="-ldxml"]) | |
3887 | 190 fi |
191 | |
192 # BLAS in Sun Performance library? | |
10951 | 193 if test $ax_blas_ok = no; then |
3887 | 194 if test "x$GCC" != xyes; then # only works with Sun CC |
195 AC_CHECK_LIB(sunmath, acosp, | |
196 [AC_CHECK_LIB(sunperf, $sgemm, | |
11017 | 197 [BLAS_LIBS="-xlic_lib=sunperf -lsunmath" |
10951 | 198 ax_blas_ok=yes],[],[-lsunmath])]) |
3887 | 199 fi |
200 fi | |
201 | |
202 # BLAS in SCSL library? (SGI/Cray Scientific Library) | |
10951 | 203 if test $ax_blas_ok = no; then |
204 AC_CHECK_LIB(scs, $sgemm, [ax_blas_ok=yes; BLAS_LIBS="-lscs"]) | |
3887 | 205 fi |
206 | |
207 # BLAS in SGIMATH library? | |
10951 | 208 if test $ax_blas_ok = no; then |
3887 | 209 AC_CHECK_LIB(complib.sgimath, $sgemm, |
10951 | 210 [ax_blas_ok=yes; BLAS_LIBS="-lcomplib.sgimath"]) |
3887 | 211 fi |
212 | |
213 # BLAS in IBM ESSL library? (requires generic BLAS lib, too) | |
10951 | 214 if test $ax_blas_ok = no; then |
3887 | 215 AC_CHECK_LIB(blas, $sgemm, |
216 [AC_CHECK_LIB(essl, $sgemm, | |
10951 | 217 [ax_blas_ok=yes; BLAS_LIBS="-lessl -lblas"], |
3887 | 218 [], [-lblas $FLIBS])]) |
219 fi | |
220 | |
221 # Generic BLAS library? | |
10951 | 222 if test $ax_blas_ok = no; then |
223 AC_CHECK_LIB(blas, $sgemm, [ax_blas_ok=yes; BLAS_LIBS="-lblas"]) | |
3887 | 224 fi |
225 | |
226 AC_SUBST(BLAS_LIBS) | |
227 | |
10951 | 228 LIBS="$ax_blas_save_LIBS" |
3887 | 229 |
230 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: | |
10951 | 231 if test x"$ax_blas_ok" = xyes; then |
3887 | 232 ifelse([$1],,AC_DEFINE(HAVE_BLAS,1,[Define if you have a BLAS library.]),[$1]) |
233 : | |
234 else | |
10951 | 235 ax_blas_ok=no |
3887 | 236 $2 |
237 fi | |
10951 | 238 ])dnl AX_BLAS |