m4/yat_cblas.m4

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