$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r50295 - in sandbox/boost/numeric/bindings: blas traits
From: thomas.klimpel_at_[hidden]
Date: 2008-12-16 07:03:52
Author: klimpel
Date: 2008-12-16 07:03:51 EST (Tue, 16 Dec 2008)
New Revision: 50295
URL: http://svn.boost.org/trac/boost/changeset/50295
Log:
Pay attention to f2c return convention (g77, gfortran -ff2c and clapack), required on linux64 to make regression tests pass.
Text files modified: 
   sandbox/boost/numeric/bindings/blas/blas.h      |    20 ++++++++++++++++++++                    
   sandbox/boost/numeric/bindings/traits/fortran.h |    14 ++++++++++----                          
   2 files changed, 30 insertions(+), 4 deletions(-)
Modified: sandbox/boost/numeric/bindings/blas/blas.h
==============================================================================
--- sandbox/boost/numeric/bindings/blas/blas.h	(original)
+++ sandbox/boost/numeric/bindings/blas/blas.h	2008-12-16 07:03:51 EST (Tue, 16 Dec 2008)
@@ -32,7 +32,11 @@
   void   BLAS_CAXPY(const int *n, const fcomplex_t* alpha, const fcomplex_t* x, const int* incx,  fcomplex_t* y, const int* incy);
   void   BLAS_ZAXPY(const int *n, const dcomplex_t* alpha, const dcomplex_t* x, const int* incx,  dcomplex_t* y, const int* incy);
 
+#ifndef BIND_FORTRAN_F2C_RETURN_CONVENTIONS
   float  BLAS_SDOT (const int *n, const float  *x, const int *incx, const float  *y, const int *incy);
+#else
+  double BLAS_SDOT (const int *n, const float  *x, const int *incx, const float  *y, const int *incy);
+#endif
   double BLAS_DDOT (const int *n, const double *x, const int *incx, const double *y, const int *incy);
 
   void   BLAS_CDOTU(fcomplex_t* ret, const int *n, const fcomplex_t *x, const int *incx, const fcomplex_t *y, const int *incy);
@@ -41,14 +45,30 @@
   void   BLAS_CDOTC(fcomplex_t* ret, const int *n, const fcomplex_t *x, const int *incx, const fcomplex_t *y, const int *incy);
   void   BLAS_ZDOTC(dcomplex_t* ret, const int *n, const dcomplex_t *x, const int *incx, const dcomplex_t *y, const int *incy);
 
+#ifndef BIND_FORTRAN_F2C_RETURN_CONVENTIONS
   float   BLAS_SNRM2(const int *n, const float  *x, const int *incx);
+#else
+  double  BLAS_SNRM2(const int *n, const float  *x, const int *incx);
+#endif
   double  BLAS_DNRM2(const int *n, const double *x, const int *incx);
+#ifndef BIND_FORTRAN_F2C_RETURN_CONVENTIONS
   float   BLAS_SCNRM2(const int *n, const fcomplex_t  *x, const int *incx);
+#else
+  double  BLAS_SCNRM2(const int *n, const fcomplex_t  *x, const int *incx);
+#endif
   double  BLAS_DZNRM2(const int *n, const dcomplex_t *x, const int *incx);
 
+#ifndef BIND_FORTRAN_F2C_RETURN_CONVENTIONS
   float   BLAS_SASUM(const int *n, const float  *x, const int *incx);
+#else
+  double  BLAS_SASUM(const int *n, const float  *x, const int *incx);
+#endif
   double  BLAS_DASUM(const int *n, const double *x, const int *incx);
+#ifndef BIND_FORTRAN_F2C_RETURN_CONVENTIONS
   float   BLAS_SCASUM(const int *n, const fcomplex_t  *x, const int *incx);
+#else
+  double  BLAS_SCASUM(const int *n, const fcomplex_t  *x, const int *incx);
+#endif
   double  BLAS_DZASUM(const int *n, const dcomplex_t *x, const int *incx);
 
   void BLAS_SCOPY( const int *n, const float  *x, const int *incx, float  *y, const int *incy);
Modified: sandbox/boost/numeric/bindings/traits/fortran.h
==============================================================================
--- sandbox/boost/numeric/bindings/traits/fortran.h	(original)
+++ sandbox/boost/numeric/bindings/traits/fortran.h	2008-12-16 07:03:51 EST (Tue, 16 Dec 2008)
@@ -1,8 +1,8 @@
 //
-//  Copyright (C) 2002, 2003 Si-Lab b.v.b.a., Toon Knapen and Kresimir Fresl 
+//  Copyright (C) 2002, 2003 Si-Lab b.v.b.a., Toon Knapen and Kresimir Fresl
 //
-// Distributed under the Boost Software License, Version 1.0. 
-// (See accompanying file LICENSE_1_0.txt or copy at 
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 //
 
@@ -26,7 +26,7 @@
 
 #endif
 
-// Next we define macro's to convert our symbols to 
+// Next we define macro's to convert our symbols to
 // the current convention
 #if defined(BIND_FORTRAN_LOWERCASE_UNDERSCORE)
 #define FORTRAN_ID( id ) id##_
@@ -36,4 +36,10 @@
 #error do not know how to bind to fortran calling convention
 #endif
 
+// As long as f2c return conventions are the common case,
+// we turn them on unless requested otherwise
+#ifndef BIND_FORTRAN_NO_F2C_RETURN_CONVENTIONS
+#define BIND_FORTRAN_F2C_RETURN_CONVENTIONS
+#endif
+
 #endif // BOOST_NUMERIC_BINDINGS_TRAITS_FORTRAN_H