Mercurial > hg > octave-nkf
diff m4/ax_blas_f77_func.m4 @ 10951:97b8d462ef11
Update m4 macros.
author | Ben Abbott <bpabbott@mac.com> |
---|---|
date | Tue, 07 Sep 2010 17:10:00 -0400 |
parents | m4/acx_blas_f77_func.m4@4531741e5236 |
children | cab8365e476d |
line wrap: on
line diff
copy from m4/acx_blas_f77_func.m4 copy to m4/ax_blas_f77_func.m4 --- a/m4/acx_blas_f77_func.m4 +++ b/m4/ax_blas_f77_func.m4 @@ -1,32 +1,28 @@ # =========================================================================== -# http://autoconf-archive.cryp.to/acx_blas_f77_func.html +# http://www.gnu.org/software/autoconf-archive/ax_blas_f77_func.html # =========================================================================== # # SYNOPSIS # -# ACX_BLAS_F77_FUNC([ACTION-IF-PASS[, ACTION-IF-FAIL[, ACTION-IF-CROSS-COMPILING]]) -# ACX_BLAS_WITH_F77_FUNC([ACTION-IF-FOUND-AND-PASS[, ACTION-IF-NOT-FOUND-OR-FAIL]]) +# AX_BLAS_F77_FUNC([ACTION-IF-PASS[, ACTION-IF-FAIL[, ACTION-IF-CROSS-COMPILING]]) +# AX_BLAS_WITH_F77_FUNC([ACTION-IF-FOUND-AND-PASS[, ACTION-IF-NOT-FOUND-OR-FAIL]]) # # DESCRIPTION # -# These macros are intended as a supplement to the ACX_BLAS macro, to +# These macros are intended as a supplement to the AX_BLAS macro, to # verify that BLAS functions are properly callable from Fortran. This is # necessary, for example, if you want to build the LAPACK library on top # of the BLAS. # -# ACX_BLAS_F77_FUNC uses the defined BLAS_LIBS and Fortran environment to +# AX_BLAS_F77_FUNC uses the defined BLAS_LIBS and Fortran environment to # check for compatibility, and takes a specific action in case of success, # resp. failure, resp. cross-compilation. # -# ACX_BLAS_WITH_F77_FUNC is a drop-in replacement wrapper for ACX_BLAS -# that calls ACX_BLAS_F77_FUNC after detecting a BLAS library and rejects -# it on failure (i.e. pretends that no library was found). +# AX_BLAS_WITH_F77_FUNC is a drop-in replacement wrapper for AX_BLAS that +# calls AX_BLAS_F77_FUNC after detecting a BLAS library and rejects it on +# failure (i.e. pretends that no library was found). # -# LAST MODIFICATION -# -# 2008-06-18 -# -# COPYLEFT +# LICENSE # # Copyright (c) 2008 Jaroslav Hajek <highegg@gmail.com> # @@ -52,19 +48,21 @@ # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Macro Archive. When you make and -# distribute a modified version of the Autoconf Macro, you may extend this -# special exception to the GPL to apply to your modified version as well. +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. -AC_DEFUN([ACX_BLAS_F77_FUNC], [ +#serial 5 + +AU_ALIAS([ACX_BLAS_F77_FUNC], [AX_BLAS_F77_FUNC]) +AC_DEFUN([AX_BLAS_F77_FUNC], [ AC_PREREQ(2.50) -AC_REQUIRE([ACX_BLAS]) +AC_REQUIRE([AX_BLAS]) # F77 call-compatibility checks if test "$cross_compiling" = yes ; then ifelse($3, ,$1,$3) -elif test x"$acx_blas_ok" = xyes; then - save_acx_blas_f77_func_LIBS="$LIBS" +elif test x"$ax_blas_ok" = xyes; then LIBS="$BLAS_LIBS $LIBS" AC_LANG_PUSH(Fortran 77) # LSAME check (LOGICAL return values) @@ -79,9 +77,9 @@ if (w) stop 1 w = lsame(c1,c1) if (.not. w) stop 1 - ]]),[acx_blas_lsame_fcall_ok=yes], - [acx_blas_lsame_fcall_ok=no]) - AC_MSG_RESULT([$acx_blas_lsame_fcall_ok]) + ]]),[ax_blas_lsame_fcall_ok=yes], + [ax_blas_lsame_fcall_ok=no]) + AC_MSG_RESULT([$ax_blas_lsame_fcall_ok]) # ISAMAX check (INTEGER return values) AC_MSG_CHECKING([whether ISAMAX is called correctly from Fortran]) AC_RUN_IFELSE(AC_LANG_PROGRAM(,[[ @@ -92,11 +90,11 @@ a(2) = -2e0 i = isamax(2,a,1) if (i.ne.2) stop 1 - ]]),[acx_blas_isamax_fcall_ok=yes], - [acx_blas_isamax_fcall_ok=no]) - AC_MSG_RESULT([$acx_blas_isamax_fcall_ok]) + ]]),[ax_blas_isamax_fcall_ok=yes], + [ax_blas_isamax_fcall_ok=no]) + AC_MSG_RESULT([$ax_blas_isamax_fcall_ok]) # SDOT check (REAL return values) - AC_MSG_CHECKING([whether SDOT is called correctly from Fortran]) + AC_MSG_CHECKING([whether DDOT is called correctly from Fortran]) AC_RUN_IFELSE(AC_LANG_PROGRAM(,[[ real sdot,a(1),b(1),w external sdot @@ -104,9 +102,9 @@ b(1) = 2e0 w = sdot(1,a,1,b,1) if (w .ne. a(1)*b(1)) stop 1 - ]]),[acx_blas_sdot_fcall_ok=yes], - [acx_blas_sdot_fcall_ok=no]) - AC_MSG_RESULT([$acx_blas_sdot_fcall_ok]) + ]]),[ax_blas_sdot_fcall_ok=yes], + [ax_blas_sdot_fcall_ok=no]) + AC_MSG_RESULT([$ax_blas_sdot_fcall_ok]) # DDOT check (DOUBLE return values) AC_MSG_CHECKING([whether DDOT is called correctly from Fortran]) AC_RUN_IFELSE(AC_LANG_PROGRAM(,[[ @@ -116,9 +114,9 @@ b(1) = 2d0 w = ddot(1,a,1,b,1) if (w .ne. a(1)*b(1)) stop 1 - ]]),[acx_blas_ddot_fcall_ok=yes], - [acx_blas_ddot_fcall_ok=no]) - AC_MSG_RESULT([$acx_blas_ddot_fcall_ok]) + ]]),[ax_blas_ddot_fcall_ok=yes], + [ax_blas_ddot_fcall_ok=no]) + AC_MSG_RESULT([$ax_blas_ddot_fcall_ok]) # CDOTU check (COMPLEX return values) AC_MSG_CHECKING([whether CDOTU is called correctly from Fortran]) AC_RUN_IFELSE(AC_LANG_PROGRAM(,[[ @@ -128,9 +126,9 @@ b(1) = cmplx(1e0,2e0) w = cdotu(1,a,1,b,1) if (w .ne. a(1)*b(1)) stop 1 - ]]),[acx_blas_cdotu_fcall_ok=yes], - [acx_blas_cdotu_fcall_ok=no]) - AC_MSG_RESULT([$acx_blas_cdotu_fcall_ok]) + ]]),[ax_blas_cdotu_fcall_ok=yes], + [ax_blas_cdotu_fcall_ok=no]) + AC_MSG_RESULT([$ax_blas_cdotu_fcall_ok]) # ZDOTU check (DOUBLE COMPLEX return values) AC_MSG_CHECKING([whether ZDOTU is called correctly from Fortran]) AC_RUN_IFELSE(AC_LANG_PROGRAM(,[[ @@ -140,66 +138,37 @@ b(1) = dcmplx(1d0,2d0) w = zdotu(1,a,1,b,1) if (w .ne. a(1)*b(1)) stop 1 - ]]),[acx_blas_zdotu_fcall_ok=yes], - [acx_blas_zdotu_fcall_ok=no]) - AC_MSG_RESULT([$acx_blas_zdotu_fcall_ok]) -# Check for correct integer size -# FIXME: this may fail with things like -ftrapping-math. - AC_MSG_CHECKING([whether the integer size is correct]) - AC_RUN_IFELSE(AC_LANG_PROGRAM(,[[ - integer n,nn(3) - real s,a(1),b(1),sdot - a(1) = 1.0 - b(1) = 1.0 -c Generate -2**33 + 1, if possible - n = 2 - n = -4 * (n ** 30) - n = n + 1 - if (n >= 0) goto 1 -c This means we're on 64-bit integers. Check whether the BLAS is, too. - s = sdot(n,a,1,b,1) - if (s .ne. 0.0) stop 1 - 1 continue -c We may be on 32-bit integers, and the BLAS on 64 bits. This is almost bound -c to have already failed, but just in case, we'll check. - nn(1) = -1 - nn(2) = 1 - nn(3) = -1 - s = sdot(nn(2),a,1,b,1) - if (s .ne. 1.0) stop 1 - ]]),[acx_blas_integer_size_ok=yes], - [acx_blas_integer_size_ok=no]) - AC_MSG_RESULT([$acx_blas_integer_size_ok]) + ]]),[ax_blas_zdotu_fcall_ok=yes], + [ax_blas_zdotu_fcall_ok=no]) + AC_MSG_RESULT([$ax_blas_zdotu_fcall_ok]) AC_LANG_POP(Fortran 77) # if any of the tests failed, reject the BLAS library - if test $acx_blas_lsame_fcall_ok = yes \ - -a $acx_blas_sdot_fcall_ok = yes \ - -a $acx_blas_ddot_fcall_ok = yes \ - -a $acx_blas_cdotu_fcall_ok = yes \ - -a $acx_blas_zdotu_fcall_ok = yes \ - -a $acx_blas_integer_size_ok = yes; then - acx_blas_f77_func_ok=yes; + if test $ax_blas_lsame_fcall_ok = yes \ + -a $ax_blas_sdot_fcall_ok = yes \ + -a $ax_blas_ddot_fcall_ok = yes \ + -a $ax_blas_cdotu_fcall_ok = yes \ + -a $ax_blas_zdotu_fcall_ok = yes ; then + ax_blas_f77_func_ok=yes; $1 else - acx_blas_f77_func_ok=no; + ax_blas_f77_func_ok=no; $2 fi - LIBS="$save_acx_blas_f77_func_LIBS" fi -])dnl ACX_BLAS_F77_FUNC +])dnl AX_BLAS_F77_FUNC -AC_DEFUN([ACX_BLAS_WITH_F77_FUNC], [ +AC_DEFUN([AX_BLAS_WITH_F77_FUNC], [ AC_PREREQ(2.50) -ACX_BLAS([# disable special action], []) -if test x$acx_blas_ok = xyes ; then - ACX_BLAS_F77_FUNC( +AX_BLAS([# disable special action], []) +if test x$ax_blas_ok = xyes ; then + AX_BLAS_F77_FUNC( [ifelse([$1],,AC_DEFINE(HAVE_BLAS,1,[Define if you have a BLAS library.]),[$1])], - [acx_blas_ok=no; BLAS_LIBS=]) + [ax_blas_ok=no; BLAS_LIBS=]) fi -if test x$acx_blas_ok = xno ; then +if test x$ax_blas_ok = xno ; then $2 fi -])dnl ACX_BLAS_WITH_F77_FUNC +])dnl AX_BLAS_WITH_F77_FUNC