-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Greetings,
A cblas library is needed to link with the shared gsl library
even if no cblas function is used, or when LDFLAGS="-Wl,--as-needed"
is used to build gsl.
One possibility is to link directly either from an external
external cblas library or from the builtin gslcblas at compile time
instead of the GSL_CBLAS_LIB as suggested in gsl-config.
This could be done as a cblas configure option as proposed in the
attached patch (also in the Gentoo public cvs repository).
I hope you will find this useful.
Regards,
- --
Sébastien Fabbro
Gentoo / Scientific Applications
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
iEYEARECAAYFAkl004EACgkQ1ycZbhPLE2BL2QCdH1ufB1IDw4aYwNRokaj59lSg
Jb8AoJVx1p/zDFTmTOIz+rY8ji14d3Qh
=gmlL
-----END PGP SIGNATURE-----
diff -Nur gsl-1.12.orig/acx_cblas.m4 gsl-1.12/acx_cblas.m4
--- gsl-1.12.orig/acx_cblas.m4 1970-01-01 01:00:00.000000000 +0100
+++ gsl-1.12/acx_cblas.m4 2009-01-19 15:45:43.319918648 +0000
@@ -0,0 +1,60 @@
+AC_DEFUN([ACX_CBLAS],[
+ use_cblas=no
+ use_cblas_libs="-lcblas -lblas"
+ use_cblas_cflags=""
+
+ AC_ARG_WITH(cblas,
+ [AS_HELP_STRING([--with-cblas], [use external CBLAS library (default is no)])])
+
+ case $with_cblas in
+ yes) use_cblas=yes ;;
+ no | "" ) use_cblas=no ;;
+ -* | */* | *.a | *.so | *.so.* | *.o) use_cblas_libs="$with_cblas" ;;
+ *) use_cblas_libs="-l$with_cblas" ;;
+ esac
+
+ AC_ARG_WITH(cblas-libs,
+ [AS_HELP_STRING([--with-cblas-libs=<libs>],
+ [external cblas libraries to link with (default is "$use_cblas_libs")])],
+ [use_cblas_libs=$withval], [])
+
+ AC_ARG_WITH(cblas-cflags,
+ [AS_HELP_STRING([--with-cblas-cflags=<flags>],
+ [extra cflags to compile with external cblas ("-I<dir>")])],
+ [use_cblas_cflags=$withval], [])
+
+ if test x$use_cblas != xno; then
+ if test "x$CBLAS_LIBS" = x; then
+ CBLAS_LIBS="$use_cblas_libs"
+ fi
+ if test "x$CBLAS_FLAGS" = x; then
+ CBLAS_CFLAGS="$use_cblas_cflags"
+ fi
+
+ CFLAGS_sav="$CFLAGS"
+ CFLAGS="$CFLAGS $CBLAS_CFLAGS"
+ AC_CHECK_HEADER(cblas.h, ,
+ [AC_MSG_ERROR([
+ *** Header file cblas.h not found.
+ *** If you installed cblas header in a non standard place,
+ *** specify its install prefix using the following option
+ *** --with-cblas-cflags="-I<include_dir>"])
+ ])
+ CFLAGS="$CFLAGS_sav"
+
+ LIBS_sav="$LIBS"
+ LIBS="$LIBS $CBLAS_LIBS -lm"
+ AC_MSG_CHECKING([for cblas_sgemm in $CBLAS_LIBS])
+ AC_TRY_LINK_FUNC(cblas_sgemm, [use_cblas=yes],
+ [AC_MSG_ERROR([
+ *** Linking with cblas with $LIBS failed.
+ *** If you installed cblas library in a non standard place,
+ *** specify its install prefix using the following option
+ *** --with-cblas-libs="-L<lib_dir> -l<lib>"])
+ ])
+ AC_MSG_RESULT($use_cblas)
+ LIBS="$LIBS_sav"
+ AC_SUBST(CBLAS_CFLAGS)
+ AC_SUBST(CBLAS_LIBS)
+ fi
+])
diff -Nur gsl-1.12.orig/bspline/Makefile.am gsl-1.12/bspline/Makefile.am
--- gsl-1.12.orig/bspline/Makefile.am 2008-12-08 20:42:50.000000000 +0000
+++ gsl-1.12/bspline/Makefile.am 2009-01-19 15:46:59.967091996 +0000
@@ -12,6 +12,6 @@
TESTS = $(check_PROGRAMS)
-test_LDADD = libgslbspline.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+test_LDADD = libgslbspline.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la @CBLAS_LINK_LIBS@ ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
test_SOURCES = test.c
diff -Nur gsl-1.12.orig/configure.ac gsl-1.12/configure.ac
--- gsl-1.12.orig/configure.ac 2008-12-15 14:52:45.000000000 +0000
+++ gsl-1.12/configure.ac 2009-01-19 15:45:36.267801871 +0000
@@ -169,6 +169,16 @@
AC_CHECK_LIB(m, cos)
fi
+sinclude(acx_cblas.m4)
+ACX_CBLAS
+if test "x$CBLAS_LIBS" != "x"; then
+ CBLAS_LINK_LIBS="$CBLAS_LIBS"
+else
+ CBLAS_LINK_LIBS="\$(top_builddir)/cblas/libgslcblas.la"
+ CBLAS_LIBS="-lgslcblas"
+fi
+AC_SUBST(CBLAS_LINK_LIBS)
+
dnl Remember to put a definition in acconfig.h for each of these
AC_CHECK_DECLS(feenableexcept,,,[#define _GNU_SOURCE 1
#include <fenv.h>])
diff -Nur gsl-1.12.orig/eigen/Makefile.am gsl-1.12/eigen/Makefile.am
--- gsl-1.12.orig/eigen/Makefile.am 2008-11-27 20:03:28.000000000 +0000
+++ gsl-1.12/eigen/Makefile.am 2009-01-19 15:46:59.999090878 +0000
@@ -11,7 +11,7 @@
TESTS = $(check_PROGRAMS)
-test_LDADD = libgsleigen.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la ../sort/libgslsort.la
+test_LDADD = libgsleigen.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la ../sort/libgslsort.la
test_SOURCES = test.c
diff -Nur gsl-1.12.orig/gsl-config.in gsl-1.12/gsl-config.in
--- gsl-1.12.orig/gsl-config.in 2008-02-05 13:22:10.000000000 +0000
+++ gsl-1.12/gsl-config.in 2009-01-19 15:45:06.176046040 +0000
@@ -58,11 +58,11 @@
;;
--cflags)
- echo @GSL_CFLAGS@
+ echo @GSL_CFLAGS@ @CBLAS_CFLAGS@
;;
--libs)
- : ${GSL_CBLAS_LIB=-lgslcblas}
+ : ${gsl_cblas_l...@cblas_libs@}
echo @GSL_LIBS@ $GSL_CBLAS_LIB -lm
;;
diff -Nur gsl-1.12.orig/gsl.pc.in gsl-1.12/gsl.pc.in
--- gsl-1.12.orig/gsl.pc.in 2008-11-19 09:13:46.000000000 +0000
+++ gsl-1.12/gsl.pc.in 2009-01-19 15:45:15.227937645 +0000
@@ -6,5 +6,5 @@
Name: GSL
Description: GNU Scientific Library
Version: @VERSION@
-Libs: @GSL_LIBS@ -lgslcblas @LIBS@
-Cflags: @GSL_CFLAGS@
+Libs: @GSL_LIBS@ @CBLAS_LIBS@ @LIBS@
+Cflags: @GSL_CFLAGS@ @CBLAS_CFLAGS@
diff -Nur gsl-1.12.orig/interpolation/Makefile.am gsl-1.12/interpolation/Makefile.am
--- gsl-1.12.orig/interpolation/Makefile.am 2008-11-27 20:03:28.000000000 +0000
+++ gsl-1.12/interpolation/Makefile.am 2009-01-19 15:47:00.019091996 +0000
@@ -10,7 +10,7 @@
TESTS = $(check_PROGRAMS)
-test_LDADD = libgslinterpolation.la ../poly/libgslpoly.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+test_LDADD = libgslinterpolation.la ../poly/libgslpoly.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la @CBLAS_LINK_LIBS@ ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
test_SOURCES = test.c
diff -Nur gsl-1.12.orig/linalg/Makefile.am gsl-1.12/linalg/Makefile.am
--- gsl-1.12.orig/linalg/Makefile.am 2008-11-27 20:03:28.000000000 +0000
+++ gsl-1.12/linalg/Makefile.am 2009-01-19 15:47:00.023091716 +0000
@@ -12,7 +12,7 @@
check_PROGRAMS = test
-test_LDADD = libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+test_LDADD = libgsllinalg.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
test_SOURCES = test.c
diff -Nur gsl-1.12.orig/Makefile.am gsl-1.12/Makefile.am
--- gsl-1.12.orig/Makefile.am 2008-11-27 20:03:28.000000000 +0000
+++ gsl-1.12/Makefile.am 2009-01-19 15:45:50.463861656 +0000
@@ -17,13 +17,12 @@
lib_LTLIBRARIES = libgsl.la
libgsl_la_SOURCES = version.c
-libgsl_la_LIBADD = $(SUBLIBS)
+libgsl_la_LIBADD = $(SUBLIBS) @CBLAS_LINK_LIBS@
libgsl_la_LDFLAGS = -version-info $(GSL_LT_VERSION)
noinst_HEADERS = templates_on.h templates_off.h build.h
MINGW32_HOST = @MINGW32_HOST@
if MINGW32_HOST
-libgsl_la_LIBADD += cblas/libgslcblas.la
libgsl_la_LDFLAGS += -no-undefined
endif
@@ -33,10 +32,10 @@
bin_PROGRAMS = gsl-randist gsl-histogram
gsl_randist_SOURCES = gsl-randist.c
-gsl_randist_LDADD = libgsl.la cblas/libgslcblas.la
+gsl_randist_LDADD = libgsl.la
gsl_histogram_SOURCES = gsl-histogram.c
-gsl_histogram_LDADD = libgsl.la cblas/libgslcblas.la
+gsl_histogram_LDADD = libgsl.la
check_SCRIPTS = test_gsl_histogram.sh
TESTS = test_gsl_histogram.sh
diff -Nur gsl-1.12.orig/multifit/Makefile.am gsl-1.12/multifit/Makefile.am
--- gsl-1.12.orig/multifit/Makefile.am 2008-11-27 20:03:28.000000000 +0000
+++ gsl-1.12/multifit/Makefile.am 2009-01-19 15:47:00.031091716 +0000
@@ -13,8 +13,8 @@
TESTS = $(check_PROGRAMS)
test_SOURCES = test.c
-test_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la
+test_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la
#demo_SOURCES = demo.c
-#demo_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../randist/libgslrandist.la ../rng/libgslrng.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la
+#demo_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../randist/libgslrandist.la ../rng/libgslrng.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la
diff -Nur gsl-1.12.orig/multimin/Makefile.am gsl-1.12/multimin/Makefile.am
--- gsl-1.12.orig/multimin/Makefile.am 2008-11-29 17:51:18.000000000 +0000
+++ gsl-1.12/multimin/Makefile.am 2009-01-19 15:47:00.035091996 +0000
@@ -13,8 +13,8 @@
TESTS = $(check_PROGRAMS)
test_SOURCES = test.c test_funcs.c test_funcs.h
-test_LDADD = libgslmultimin.la ../min/libgslmin.la ../poly/libgslpoly.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+test_LDADD = libgslmultimin.la ../min/libgslmin.la ../poly/libgslpoly.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
#demo_SOURCES = demo.c
-#demo_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+#demo_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../linalg/libgsllinalg.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
diff -Nur gsl-1.12.orig/multiroots/Makefile.am gsl-1.12/multiroots/Makefile.am
--- gsl-1.12.orig/multiroots/Makefile.am 2008-11-27 20:03:28.000000000 +0000
+++ gsl-1.12/multiroots/Makefile.am 2009-01-19 15:47:00.035091996 +0000
@@ -15,5 +15,5 @@
TESTS = $(check_PROGRAMS)
test_SOURCES = test.c test_funcs.c test_funcs.h
-test_LDADD = libgslmultiroots.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+test_LDADD = libgslmultiroots.la ../linalg/libgsllinalg.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
diff -Nur gsl-1.12.orig/ode-initval/Makefile.am gsl-1.12/ode-initval/Makefile.am
--- gsl-1.12.orig/ode-initval/Makefile.am 2008-11-27 20:03:28.000000000 +0000
+++ gsl-1.12/ode-initval/Makefile.am 2009-01-19 15:47:00.039090878 +0000
@@ -12,7 +12,7 @@
TESTS = $(check_PROGRAMS)
-test_LDADD = libgslodeiv.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+test_LDADD = libgslodeiv.la ../linalg/libgsllinalg.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
test_SOURCES = test.c
diff -Nur gsl-1.12.orig/poly/Makefile.am gsl-1.12/poly/Makefile.am
--- gsl-1.12.orig/poly/Makefile.am 2008-11-27 20:03:28.000000000 +0000
+++ gsl-1.12/poly/Makefile.am 2009-01-19 15:47:00.047090599 +0000
@@ -10,7 +10,7 @@
TESTS = $(check_PROGRAMS)
-check_PROGRAMS = test
+#check_PROGRAMS = test
test_SOURCES = test.c
test_LDADD = libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
diff -Nur gsl-1.12.orig/specfunc/Makefile.am gsl-1.12/specfunc/Makefile.am
--- gsl-1.12.orig/specfunc/Makefile.am 2008-11-27 20:03:28.000000000 +0000
+++ gsl-1.12/specfunc/Makefile.am 2009-01-19 15:47:00.063090599 +0000
@@ -12,7 +12,7 @@
check_PROGRAMS = test
-test_LDADD = libgslspecfunc.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../sort/libgslsort.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+test_LDADD = libgslspecfunc.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../sort/libgslsort.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
test_SOURCES = test_sf.c test_sf.h test_airy.c test_bessel.c test_coulomb.c test_dilog.c test_gamma.c test_hyperg.c test_legendre.c test_mathieu.c
diff -Nur gsl-1.12.orig/wavelet/Makefile.am gsl-1.12/wavelet/Makefile.am
--- gsl-1.12.orig/wavelet/Makefile.am 2008-11-27 20:03:29.000000000 +0000
+++ gsl-1.12/wavelet/Makefile.am 2009-01-19 15:47:00.163091437 +0000
@@ -10,7 +10,7 @@
TESTS = $(check_PROGRAMS)
-test_LDADD = libgslwavelet.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+test_LDADD = libgslwavelet.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
test_SOURCES = test.c
_______________________________________________
Bug-gsl mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-gsl