# HG changeset patch
# User Jaroslav Hajek
# Date 1218445170 -7200
# Node ID fd13f9f7dbacea02095b654dcf83e48735739a2c
# Parent 79890b8187bdb2f2d9e4174d8d94f5e03d39ec3c
update macros from cryp.to auoconf archive
diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-08-11 Jaroslav Hajek
+
+ * acx_blas_f77_func.m4, acx_lapack.m4: Update macros from
+ .
+
2008-08-07 John W. Eaton
* aclocal.m4 (OCTAVE_STRING_NPOS): Delete.
diff --git a/acx_blas_f77_func.m4 b/acx_blas_f77_func.m4
--- a/acx_blas_f77_func.m4
+++ b/acx_blas_f77_func.m4
@@ -1,4 +1,6 @@
-##### http://autoconf-archive.cryp.to/acx_blas_f77_func.html
+# ===========================================================================
+# http://autoconf-archive.cryp.to/acx_blas_f77_func.html
+# ===========================================================================
#
# SYNOPSIS
#
@@ -8,55 +10,51 @@
# DESCRIPTION
#
# These macros are intended as a supplement to the ACX_BLAS macro, to
-# verify that BLAS functions with non-REAL or INTEGER are properly
-# callable from Fortran. This is necessary, for example, if you want
-# to build the LAPACK library on top of the BLAS.
+# 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 check for compatibility, and takes a specific action
-# in case of success, resp. failure, resp. cross-compilation.
+# ACX_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).
+# 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).
#
# LAST MODIFICATION
#
-# 2008-03-31
+# 2008-06-18
#
# COPYLEFT
#
# Copyright (c) 2008 Jaroslav Hajek
#
-# This program is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see
-# .
+# You should have received a copy of the GNU General Public License along
+# with this program. If not, see .
#
-# As a special exception, the respective Autoconf Macro's copyright
-# owner gives unlimited permission to copy, distribute and modify the
-# configure scripts that are the output of Autoconf when processing
-# the Macro. You need not follow the terms of the GNU General Public
-# License when using or distributing such scripts, even though
-# portions of the text of the Macro appear in them. The GNU General
-# Public License (GPL) does govern all other use of the material that
-# constitutes the Autoconf Macro.
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# 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.
+# 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.
AC_DEFUN([ACX_BLAS_F77_FUNC], [
AC_PREREQ(2.50)
@@ -83,13 +81,38 @@
]]),[acx_blas_lsame_fcall_ok=yes],
[acx_blas_lsame_fcall_ok=no])
AC_MSG_RESULT([$acx_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(,[[
+ integer isamax,i
+ external isamax
+ real a(2)
+ a(1) = 1e0
+ 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])
+# SDOT check (REAL return values)
+ 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
+ a(1) = 1e0
+ 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])
# DDOT check (DOUBLE return values)
AC_MSG_CHECKING([whether DDOT is called correctly from Fortran])
AC_RUN_IFELSE(AC_LANG_PROGRAM(,[[
double precision ddot,a(1),b(1),w
external ddot
- a(1) = 1e0
- b(1) = 2e0
+ a(1) = 1d0
+ 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],
@@ -124,6 +147,7 @@
# 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 ; then
diff --git a/acx_lapack.m4 b/acx_lapack.m4
--- a/acx_lapack.m4
+++ b/acx_lapack.m4
@@ -1,41 +1,79 @@
-dnl @synopsis ACX_LAPACK([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-dnl
-dnl This macro looks for a library that implements the LAPACK
-dnl linear-algebra interface (see http://www.netlib.org/lapack/).
-dnl On success, it sets the LAPACK_LIBS output variable to
-dnl hold the requisite library linkages.
-dnl
-dnl To link with LAPACK, you should link with:
-dnl
-dnl $LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS
-dnl
-dnl in that order. BLAS_LIBS is the output variable of the ACX_BLAS
-dnl macro, called automatically. FLIBS is the output variable of the
-dnl AC_F77_LIBRARY_LDFLAGS macro (called if necessary by ACX_BLAS),
-dnl and is sometimes necessary in order to link with F77 libraries.
-dnl Users will also need to use AC_F77_DUMMY_MAIN (see the autoconf
-dnl manual), for the same reason.
-dnl
-dnl The user may also use --with-lapack= in order to use some
-dnl specific LAPACK library . In order to link successfully,
-dnl however, be aware that you will probably need to use the same
-dnl Fortran compiler (which can be set via the F77 env. var.) as
-dnl was used to compile the LAPACK and BLAS libraries.
-dnl
-dnl ACTION-IF-FOUND is a list of shell commands to run if a LAPACK
-dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands
-dnl to run it if it is not found. If ACTION-IF-FOUND is not specified,
-dnl the default action will define HAVE_LAPACK.
-dnl
-dnl @version $Id: acx_lapack.m4,v 1.3 2002/03/12 09:12:44 simons Exp $
-dnl @author Steven G. Johnson
+# ===========================================================================
+# http://autoconf-archive.cryp.to/acx_lapack.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# ACX_LAPACK([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+# This macro looks for a library that implements the LAPACK linear-algebra
+# interface (see http://www.netlib.org/lapack/). On success, it sets the
+# LAPACK_LIBS output variable to hold the requisite library linkages.
+#
+# To link with LAPACK, you should link with:
+#
+# $LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS
+#
+# in that order. BLAS_LIBS is the output variable of the ACX_BLAS macro,
+# called automatically. FLIBS is the output variable of the
+# AC_F77_LIBRARY_LDFLAGS macro (called if necessary by ACX_BLAS), and is
+# sometimes necessary in order to link with F77 libraries. Users will also
+# need to use AC_F77_DUMMY_MAIN (see the autoconf manual), for the same
+# reason.
+#
+# The user may also use --with-lapack= in order to use some specific
+# LAPACK library . In order to link successfully, however, be aware
+# that you will probably need to use the same Fortran compiler (which can
+# be set via the F77 env. var.) as was used to compile the LAPACK and BLAS
+# libraries.
+#
+# ACTION-IF-FOUND is a list of shell commands to run if a LAPACK library
+# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
+# is not found. If ACTION-IF-FOUND is not specified, the default action
+# will define HAVE_LAPACK.
+#
+# LAST MODIFICATION
+#
+# 2008-06-29
+#
+# COPYLEFT
+#
+# Copyright (c) 2008 Steven G. Johnson
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program. If not, see .
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# 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.
AC_DEFUN([ACX_LAPACK], [
AC_REQUIRE([ACX_BLAS])
acx_lapack_ok=no
AC_ARG_WITH(lapack,
- [AS_HELP_STRING([--with-lapack=], [use LAPACK library ])])
+ [AC_HELP_STRING([--with-lapack=], [use LAPACK library ])])
case $with_lapack in
yes | "") ;;
no) acx_lapack_ok=disable ;;
@@ -44,26 +82,22 @@
esac
# Get fortran linker name of LAPACK function to check for.
-if $have_fortran_compiler; then
- AC_F77_FUNC(cheev)
-elif $have_f2c; then
- cheev=cheev_
-fi
+AC_F77_FUNC(cheev)
# We cannot use LAPACK if BLAS is not found
if test "x$acx_blas_ok" != xyes; then
acx_lapack_ok=noblas
+ LAPACK_LIBS=""
fi
# First, check LAPACK_LIBS environment variable
if test "x$LAPACK_LIBS" != x; then
save_LIBS="$LIBS"; LIBS="$LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS"
AC_MSG_CHECKING([for $cheev in $LAPACK_LIBS])
- AC_LINK_IFELSE([AC_LANG_CALL([], [$cheev])],
- [acx_lapack_ok=yes], [LAPACK_LIBS=""])
+ AC_TRY_LINK_FUNC($cheev, [acx_lapack_ok=yes], [LAPACK_LIBS=""])
AC_MSG_RESULT($acx_lapack_ok)
LIBS="$save_LIBS"
- if test acx_lapack_ok = no; then
+ if test $acx_lapack_ok = no; then
LAPACK_LIBS=""
fi
fi