1 | ## $Id: yat_cblas.m4 2093 2009-10-24 00:56:17Z peter $ |
---|
2 | |
---|
3 | # SYNOPSIS |
---|
4 | # |
---|
5 | # YAT_LIB_CBLAS([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) |
---|
6 | # |
---|
7 | # DESCRIPTION |
---|
8 | # |
---|
9 | # This macro looks for a library that implements the BLAS C API. The |
---|
10 | # macro adds a configure option --with-cblas=LIB that can be used to |
---|
11 | # select a specific CBLAS library. |
---|
12 | # |
---|
13 | # On success it sets the YAT_CBLAS_LIB variable and execute |
---|
14 | # ACTION-IF-FOUND. Otherise ACTION-IF-NOT-FOUND is executed. |
---|
15 | # |
---|
16 | # COPYLEFT |
---|
17 | # |
---|
18 | # Copyright (C) 2009 Peter Johansson |
---|
19 | # |
---|
20 | # This file is part of the yat library, http://dev.thep.lu.se/yat |
---|
21 | # |
---|
22 | # The yat library is free software; you can redistribute it and/or |
---|
23 | # modify it under the terms of the GNU General Public License as |
---|
24 | # published by the Free Software Foundation; either version 3 of the |
---|
25 | # License, or (at your option) any later version. |
---|
26 | # |
---|
27 | # The yat library is distributed in the hope that it will be useful, |
---|
28 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
29 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
---|
30 | # General Public License for more details. |
---|
31 | # |
---|
32 | # You should have received a copy of the GNU General Public License |
---|
33 | # along with yat. If not, see <http://www.gnu.org/licenses/>. |
---|
34 | # |
---|
35 | |
---|
36 | # This macro is a slimmed and modified version of the ACX_BLAS macro |
---|
37 | # available from http://autoconf-archive.cryp.to/acx_blas.html |
---|
38 | # written by Steven G. Johnson <stevenj@alum.mit.edu> |
---|
39 | |
---|
40 | # |
---|
41 | # serial 0 |
---|
42 | # |
---|
43 | |
---|
44 | |
---|
45 | AC_DEFUN([YAT_LIB_CBLAS], [ |
---|
46 | AC_PREREQ([2.60]) dnl we use AS_CASE |
---|
47 | yat_cblas_ok=no; |
---|
48 | save_LIBS=$LIBS; |
---|
49 | |
---|
50 | AC_ARG_WITH([cblas], |
---|
51 | [AS_HELP_STRING([--with-cblas=LIB], [use CBLAS library LIB])]) |
---|
52 | |
---|
53 | AS_CASE([$with_cblas], |
---|
54 | [yes | ""], , |
---|
55 | [no], [yat_cblas_ok=disable], |
---|
56 | [-* | */* | *.a | *.so | *.so.* | *.o], [CBLAS_LIB="$with_blas"], |
---|
57 | [CBLAS_LIB="-l$with_blas"]) |
---|
58 | |
---|
59 | # First, check CBLAS_LIB environment variable |
---|
60 | AS_IF([test $yat_cblas_ok = no && test "x$CBLAS_LIB" != x], |
---|
61 | [AC_LINK_IFELSE([AC_LANG_CALL(,[cblas_sgemm])], |
---|
62 | [yat_cblas_ok=yes], |
---|
63 | [CBLAS_LIB=""])]) |
---|
64 | |
---|
65 | # CBLAS linked to by default (or with current LIBS) |
---|
66 | if test $yat_cblas_ok = no; then |
---|
67 | AC_MSG_CHECKING([for cblas_sgemm]) |
---|
68 | AC_LINK_IFELSE([AC_LANG_CALL(,[cblas_sgemm])], |
---|
69 | [yat_cblas_ok=yes CBLAS_LIB=""]) |
---|
70 | AC_MSG_RESULT([$yat_cblas_ok]) |
---|
71 | fi |
---|
72 | |
---|
73 | # CBLAS in ATLAS library? (http://math-atlas.sourceforge.net/) |
---|
74 | if test $yat_cblas_ok = no; then |
---|
75 | AC_SEARCH_LIBS([ATL_xerbla], [atlas], |
---|
76 | [AC_SEARCH_LIBS([cblas_sgemm], [cblas], |
---|
77 | [yat_cblas_ok=yes; |
---|
78 | CBLAS_LIB="-lcblas -latlas"])]) |
---|
79 | LIBS=$save_LIBS; |
---|
80 | fi |
---|
81 | |
---|
82 | if test $yat_cblas_ok = no; then |
---|
83 | AC_CHECK_LIB([cblas], [cblas_sgemm], [yat_cblas_ok=yes; CBLAS_LIB="-lcblas";]) |
---|
84 | fi |
---|
85 | |
---|
86 | # CBLAS in Intel MKL library? |
---|
87 | if test $yat_cblas_ok = no; then |
---|
88 | AC_CHECK_LIB([mkl_core], [cblas_sgemm], |
---|
89 | [acx_blas_ok=yes; CBLAS_LIBS="-lmkl_core"]) |
---|
90 | fi |
---|
91 | |
---|
92 | # CBLAS in SCSL library? (SGI/Cray Scientific Library) |
---|
93 | if test $yat_cblas_ok = no; then |
---|
94 | AC_CHECK_LIB([scs], [cblas_sgemm], [yat_cblas_ok=yes; CBLAS_LIB="-lscs"]) |
---|
95 | fi |
---|
96 | |
---|
97 | # Eexecute ACTION-IF-FOUND or ACTION-IF-NOT-FOUND |
---|
98 | AS_IF([test x"$yat_cblas_ok" = xyes], |
---|
99 | [m4_default([$1], [:])], |
---|
100 | [yat_cblas_ok=no; m4_default([$2], [:])]) |
---|
101 | ])dnl YAT_CBLAS |
---|