summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /sci-libs/libcmatrix/files
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'sci-libs/libcmatrix/files')
-rw-r--r--sci-libs/libcmatrix/files/3.11.0-shared.patch80
-rw-r--r--sci-libs/libcmatrix/files/3.2.1-atlas.patch33
-rw-r--r--sci-libs/libcmatrix/files/3.2.1-gcc4.4.patch12
-rw-r--r--sci-libs/libcmatrix/files/3.2.1-gcc4.6.patch16
-rw-r--r--sci-libs/libcmatrix/files/3.2.1-gcc4.7.patch227
-rw-r--r--sci-libs/libcmatrix/files/3.2.1-minuit2.patch14
-rw-r--r--sci-libs/libcmatrix/files/3.2.1-shared.patch80
-rw-r--r--sci-libs/libcmatrix/files/3.9.0-atlas.patch24
8 files changed, 486 insertions, 0 deletions
diff --git a/sci-libs/libcmatrix/files/3.11.0-shared.patch b/sci-libs/libcmatrix/files/3.11.0-shared.patch
new file mode 100644
index 000000000000..6c5c3167619e
--- /dev/null
+++ b/sci-libs/libcmatrix/files/3.11.0-shared.patch
@@ -0,0 +1,80 @@
+diff --git a/Makefile.in b/Makefile.in
+index 1361371..1448e76 100755
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -13,8 +13,8 @@ AR=@AR@
+
+ # You shouldn't need to alter anything below here
+
+-COMPILE=$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c
+-ALLOPTFLAGS=$(OPTFLAGS) -DNDEBUG
++COMPILE=$(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c
++#ALLOPTFLAGS=$(OPTFLAGS) -DNDEBUG
+
+ LOCALOBJS= local/CrystalSystem.o local/CrystalGeneric.o local/MoleculeStructure.o
+ COREOBJS= coredefs/complex.o coredefs/common.o coredefs/diagonal.o coredefs/diagonalise.o coredefs/power.o coredefs/invert.o coredefs/transforms.o coredefs/blocking.o coredefs/mixed.o coredefs/realtransforms.o coredefs/Chebyshev.o
+@@ -36,7 +36,7 @@ ALLTHROBJS=$(UNSAFEOBJS:.o=_r.o) $(ALLSAFEOBJS)
+
+ ROOT=..
+
+-first: lib/libcmatrix.a
++first: lib/libcmatrix.so.3.11.0
+
+ #%.o: %.f
+ # @F77@ @FFLAGS@ -c -o $@ $<
+@@ -68,25 +68,25 @@ tempclean:
+ # -cd optim; @CLEAN@
+ # -cd local; @CLEAN@
+
+-lib/libcmatrix.a: $(ALLNORMOBJS)
+- $(AR) $@ $(ALLNORMOBJS)
+- chmod a+rx $@
+- $(RANLIB) $@
+-
+-lib/libcmatrix_p.a: $(ALLPROFOBJS)
+- $(AR) $@ $(ALLPROFOBJS)
+- chmod a+rx $@
+- $(RANLIB) $@
+-
+-lib/libcmatrix-g.a: $(ALLGOBJS)
+- $(AR) $@ $(ALLGOBJS)
+- chmod a+rx $@
+- $(RANLIB) $@
+-
+-lib/libcmatrix_r.a: $(ALLTHROBJS)
+- $(AR) @MTFLAGS@ $@ $(ALLTHROBJS)
+- chmod a+rx $@
+- $(RANLIB) $@
++lib/libcmatrix.so.3.11.0: $(ALLNORMOBJS)
++ $(CXX) $(LDFLAGS) -fPIC -shared -Wl,--soname,libcmatrix.so.3 -o $@ $(ALLNORMOBJS) -lrt @ATLAS_LIBS@
++ ln -sf libcmatrix.so.3.11.0 lib/libcmatrix.so.3
++ ln -sf libcmatrix.so.3.11.0 lib/libcmatrix.so
++
++lib/libcmatrix_p.so.3.11.0: $(ALLPROFOBJS)
++ $(CXX) $(LDFLAGS) -fPIC -shared -Wl,--soname,libcmatrix.so.3 -o $@ $(ALLPROFOBJS) -lrt @ATLAS_LIBS@
++ ln -sf libcmatrix_p.so.3.11.0 lib/libcmatrix_p.so.3
++ ln -sf libcmatrix_p.so.3.11.0 lib/libcmatrix_p.so
++
++lib/libcmatrix-g.so.3.11.0: $(ALLGOBJS)
++ $(CXX) $(LDFLAGS) -fPIC -shared -Wl,--soname,libcmatrix.so.3 -o $@ $(ALLGOBJS) -lrt @ATLAS_LIBS@
++ ln -sf libcmatrix-g.so.3.11.0 lib/libcmatrix-g.so.3
++ ln -sf libcmatrix-g.so.3.11.0 lib/libcmatrix-g.so
++
++lib/libcmatrix.so_r.3.11.0: $(ALLTHROBJS)
++ $(CXX) $(LDFLAGS) -fPIC -shared -Wl,--soname,libcmatrix.so.3 -o $@ $(ALLTHROBJS) -lrt @ATLAS_LIBS@
++ ln -sf libcmatrix_r.so.3.11.0 lib/libcmatrix_r.so.3
++ ln -sf libcmatrix_r.so.3.11.0 lib/libcmatrix_r.so
+
+ @CONFIGLEAF@.tar.gz:
+ cd $(ROOT) ; tar --exclude lib/* --exclude *.o --exclude=*~ --exclude=Makefile --exclude=include/config.h --exclude=config.status -cvf @CONFIGLEAF@.tar @CONFIGLEAF@
+diff --git a/configure.ac b/configure.ac
+index c0ae0e1..50dcd5a 100755
+--- a/configure.ac
++++ b/configure.ac
+@@ -1,5 +1,6 @@
+ AC_INIT(configure.ac)
+ AC_CONFIG_HEADER(include/config.h)
++LT_INIT
+
+ DEFAR="ar ru"
+ MAKEEXTRA=
diff --git a/sci-libs/libcmatrix/files/3.2.1-atlas.patch b/sci-libs/libcmatrix/files/3.2.1-atlas.patch
new file mode 100644
index 000000000000..b10b41d4e389
--- /dev/null
+++ b/sci-libs/libcmatrix/files/3.2.1-atlas.patch
@@ -0,0 +1,33 @@
+ configure-libraries.ac | 5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+diff --git a/configure-libraries.ac b/configure-libraries.ac
+index a64e79c..afc75b8 100755
+--- a/configure-libraries.ac
++++ b/configure-libraries.ac
+@@ -33,6 +33,7 @@ AC_ARG_WITH(atlas,
+ AS_HELP_STRING([--with-atlas],[use the ATLAS BLAS library (default-use if found)]),,with_atlas=check)
+ if test x$with_atlas != xno; then
+ FOUNDATLAS=yes
++ PKG_CHECK_MODULES([ATLAS], [cblas])
+ AC_CHECK_HEADERS(cblas.h,,FOUNDATLAS=no
+ AC_MSG_WARN([ATLAS header files (cblas.h) not found
+ Is CPPFLAGS is defined to include relevant directory?]))
+@@ -40,7 +41,7 @@ Is CPPFLAGS is defined to include relevant directory?]))
+ AC_MSG_WARN([ATLAS library (libatlas.a) not found
+ Is LDFLAGS is defined to include relevant directory?]))
+ if test x$FOUNDATLAS = xyes; then
+- LIBS="-lcblas $LIBS"
++ LIBS="$ATLAS_LIBS $LIBS"
+ CXXFLAGS="$CXXFLAGS -DLCM_USE_EXTERNAL"
+ else
+ if test x$with_atlas = xyes; then
+@@ -49,6 +50,8 @@ Is LDFLAGS is defined to include relevant directory?]))
+ fi
+ fi
+
++AC_SUBST(ATLAS_LIBS)
++
+ AC_ARG_WITH(acml,
+ AS_HELP_STRING([--with-acml],[use the ACML BLAS library (default=no)]),,with_acml=no)
+ if test x$with_acml = xyes; then
diff --git a/sci-libs/libcmatrix/files/3.2.1-gcc4.4.patch b/sci-libs/libcmatrix/files/3.2.1-gcc4.4.patch
new file mode 100644
index 000000000000..24c1a89b48d0
--- /dev/null
+++ b/sci-libs/libcmatrix/files/3.2.1-gcc4.4.patch
@@ -0,0 +1,12 @@
+diff --git a/include/DynamicList.h b/include/DynamicList.h
+index f8c1346..05a7b10 100755
+--- a/include/DynamicList.h
++++ b/include/DynamicList.h
+@@ -4,6 +4,7 @@
+ #include "BaseList.h"
+ #include "lcm_basethreads.h"
+ #include "Warnings.h"
++#include <cstdio>
+
+ namespace libcmatrix {
+
diff --git a/sci-libs/libcmatrix/files/3.2.1-gcc4.6.patch b/sci-libs/libcmatrix/files/3.2.1-gcc4.6.patch
new file mode 100644
index 000000000000..b3d8c8d19996
--- /dev/null
+++ b/sci-libs/libcmatrix/files/3.2.1-gcc4.6.patch
@@ -0,0 +1,16 @@
+ NMR/MetaPropagation.cc | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/NMR/MetaPropagation.cc b/NMR/MetaPropagation.cc
+index b7ed98b..ce8c16f 100755
+--- a/NMR/MetaPropagation.cc
++++ b/NMR/MetaPropagation.cc
+@@ -2136,7 +2136,7 @@ SpinOpGenerator::add_A0(T& dest,F func, double coup, size_t j, size_t sk, Type2T
+ { ref_.clear(0); }
+ const space_T& operator()() const { return ref_; }
+ ~fudge_isotropic_() { ref_.ensure_rank(0); }
+- mutable space_T& ref_;
++ space_T& ref_;
+ };
+ template<> struct fudge_isotropic_<double> {
+ fudge_isotropic_(double v) : v_(v) {};
diff --git a/sci-libs/libcmatrix/files/3.2.1-gcc4.7.patch b/sci-libs/libcmatrix/files/3.2.1-gcc4.7.patch
new file mode 100644
index 000000000000..633c9d50cf94
--- /dev/null
+++ b/sci-libs/libcmatrix/files/3.2.1-gcc4.7.patch
@@ -0,0 +1,227 @@
+ include/MultiMatrix.h | 14 +++++++-------
+ include/UnionHolder.h | 40 ++++++++++++++++++++--------------------
+ include/basedefs.h | 22 ++++++++++++----------
+ utils/Fork_controller.cc | 3 +++
+ utils/ttyio.cc | 2 ++
+ 5 files changed, 44 insertions(+), 37 deletions(-)
+
+diff --git a/include/MultiMatrix.h b/include/MultiMatrix.h
+index b6fec33..2d54db5 100755
+--- a/include/MultiMatrix.h
++++ b/include/MultiMatrix.h
+@@ -254,19 +254,19 @@ namespace libcmatrix {
+ }
+
+ size_t operator()(size_t r) const
+- { check_bounds_open(dim,r);
++ { this->check_bounds_open(dim,r);
+ return r*mults[0]; }
+
+ size_t operator()(size_t r,size_t s) const
+- { check_bounds_open(dim,r,s);
++ { this->check_bounds_open(dim,r,s);
+ return r*mults[0]+s*mults[1]; }
+
+ size_t operator()(size_t r,size_t s,size_t t) const
+- { check_bounds_open(dim,r,s,t);
++ { this->check_bounds_open(dim,r,s,t);
+ return r*mults[0]+s*mults[1]+t*mults[2]; }
+
+ size_t operator()(size_t r,size_t s,size_t t,size_t u) const
+- { check_bounds_open(dim,r,s,t,u);
++ { this->check_bounds_open(dim,r,s,t,u);
+ return r*mults[0]+s*mults[1]+t*mults[2]+u*mults[3]; }
+
+ size_t index(size_t r) const
+@@ -293,14 +293,14 @@ namespace libcmatrix {
+
+ void reverse(size_t& r, size_t& s, size_t ind) const {
+ LCM_STATIC_CHECK(N==2, Indexer_non2D_object);
+- check(ind<size(),"Indexer::reverse");
++ this->check(ind<size(),"Indexer::reverse");
+ r=ind / mults[0];
+ s=ind-r*mults[0];
+ }
+
+ void reverse(size_t& r, size_t& s, size_t& t, size_t ind) const {
+ LCM_STATIC_CHECK(N==3, Indexer_non3D_object);
+- check(ind<size(),"Indexer::reverse");
++ this->check(ind<size(),"Indexer::reverse");
+ r=ind / mults[0];
+ ind-=r*mults[0];
+ s=ind / mults[1];
+@@ -309,7 +309,7 @@ namespace libcmatrix {
+
+ void reverse(size_t& r, size_t& s, size_t& t, size_t& u, size_t ind) const {
+ LCM_STATIC_CHECK(N==4, Indexer_non4D_object);
+- check(ind<size(),"Indexer::reverse");
++ this->check(ind<size(),"Indexer::reverse");
+ r=ind / mults[0];
+ ind-=r*mults[0];
+ s=ind / mults[1];
+diff --git a/include/UnionHolder.h b/include/UnionHolder.h
+index f447501..3157330 100755
+--- a/include/UnionHolder.h
++++ b/include/UnionHolder.h
+@@ -359,21 +359,21 @@ namespace libcmatrix {
+ //! overrides ::clear method from ::CommonHolder
+ void clear() {
+ switch (type_) {
+- case 1: clear_(first_); break;
+- case 2: clear_(second_); break;
+- case 3: clear_(third_); break;
+- case 4: clear_(fourth_); break;
+- case 5: clear_(fifth_); break;
+- case 6: clear_(sixth_); break;
+- case 7: clear_(seventh_); break;
+- case 8: clear_(eighth_); break;
+- case 9: clear_(nineth_); break;
++ case 1: this->clear_(first_); break;
++ case 2: this->clear_(second_); break;
++ case 3: this->clear_(third_); break;
++ case 4: this->clear_(fourth_); break;
++ case 5: this->clear_(fifth_); break;
++ case 6: this->clear_(sixth_); break;
++ case 7: this->clear_(seventh_); break;
++ case 8: this->clear_(eighth_); break;
++ case 9: this->clear_(nineth_); break;
+ }
+ type_=0;
+ }
+
+ template<class T> UnionHolder& operator= (const T& v) {
+- get(Type2Type<T>())=v;
++ this->get(Type2Type<T>())=v;
+ type(Type2Type<T>()); //only change type if assignment was successful
+ return *this;
+ }
+@@ -399,12 +399,12 @@ namespace libcmatrix {
+
+ template<class T> T& set(Type2Type<T> in) {
+ type(in);
+- return get(in);
++ return this->get(in);
+ }
+
+ template<int M> typename reverse<M>::type& set(Int2Type<M> in) {
+ type(in);
+- return get(Type2Type<typename reverse<M>::type>());
++ return this->get(Type2Type<typename reverse<M>::type>());
+ }
+
+ template<class T> T& operator()(Type2Type<T> in) {
+@@ -429,12 +429,12 @@ namespace libcmatrix {
+
+ template<int M> typename reverse<M>::type& operator()(Int2Type<M> in) {
+ verify(in);
+- return get(Type2Type<typename reverse<M>::type>());
++ return this->get(Type2Type<typename reverse<M>::type>());
+ }
+
+ template<int M> const typename reverse<M>::type& operator()(Int2Type<M> in) const {
+ verify(in);
+- return get(Type2Type<typename reverse<M>::type>());
++ return this->get(Type2Type<typename reverse<M>::type>());
+ }
+ };
+
+@@ -482,12 +482,12 @@ namespace libcmatrix {
+ bool iscomplex() const { return (this->type()==COMPLEX); }
+ bool isreal() const { return (this->type()==REAL); }
+
+- C& set_complex() { return set(Int2Type<COMPLEX>()); }
+- R& set_real() { return set(Int2Type<REAL>()); }
+- const C& get_complex() const { return get(Type2Type<C>()); }
+- const R& get_real() const { return get(Type2Type<R>()); }
+- C& get_complex() { return get(Type2Type<C>()); }
+- R& get_real() { return get(Type2Type<R>()); }
++ C& set_complex() { return this->set(Int2Type<COMPLEX>()); }
++ R& set_real() { return this->set(Int2Type<REAL>()); }
++ const C& get_complex() const { return this->get(Type2Type<C>()); }
++ const R& get_real() const { return this->get(Type2Type<R>()); }
++ C& get_complex() { return this->get(Type2Type<C>()); }
++ R& get_real() { return this->get(Type2Type<R>()); }
+ };
+
+ } //namespace libcmatrix
+diff --git a/include/basedefs.h b/include/basedefs.h
+index 420b341..80d47e3 100755
+--- a/include/basedefs.h
++++ b/include/basedefs.h
+@@ -13,6 +13,8 @@
+ #include <functional>
+ #include <iterator>
+ #include <algorithm>
++#include <math.h>
++//#include "BlockedMatrix.h"
+ //#include <complex>
+
+ // #ifdef LCM_DEBUG_ALLOCATOR
+@@ -1703,6 +1705,16 @@ template<size_t N> struct Multiply_<N,N,0> {
+ }
+ };
+
++template<size_t,size_t,size_t> struct Mla_ {
++ template<class T1,class T2,class T3> static void func(T1&, const T2&, const T3&) {
++ LCM_STATIC_ERROR( mla_incompatible_dimensionalities );
++ }
++};
++
++template<class T1,class T2,class T3> inline void mla(T1& d,const T2& a,const T3& b) {
++ Mla_<LCM_DIM(T1),LCM_DIM(T2),LCM_DIM(T3)>::func(d,a,b);
++}
++
+ template<> struct Multiply_<2,2,2> {
+ template<class T1,class T2,class T3> static void func(T1& dest,const T2& a,const T3& b)
+ {
+@@ -1875,12 +1887,6 @@ template<> struct Multiply_<0,0,0> {
+ Multiply_<LCM_DIM(T1),LCM_DIM(T2),LCM_DIM(T3)>::func(d,a,b);
+ }
+
+-template<size_t,size_t,size_t> struct Mla_ {
+- template<class T1,class T2,class T3> static void func(T1&, const T2&, const T3&) {
+- LCM_STATIC_ERROR( mla_incompatible_dimensionalities );
+- }
+-};
+-
+ template<size_t N> struct Mla_<N,0,N> {
+ template<class T1,class T2,class T3> LCM_INLINE static void func(T1& d, const T2& a, const T3& b) {
+ if (d.empty())
+@@ -1940,10 +1946,6 @@ template<> struct Mla_<0,0,0> {
+ }
+ };
+
+-template<class T1,class T2,class T3> inline void mla(T1& d,const T2& a,const T3& b) {
+- Mla_<LCM_DIM(T1),LCM_DIM(T2),LCM_DIM(T3)>::func(d,a,b);
+-}
+-
+ template<class T,size_t N> struct Print_ {
+ static void print(const T& a,std::ostream& ostr) {
+ ostr << '[';
+diff --git a/utils/Fork_controller.cc b/utils/Fork_controller.cc
+index 5f6b913..08ec942 100755
+--- a/utils/Fork_controller.cc
++++ b/utils/Fork_controller.cc
+@@ -3,6 +3,9 @@
+ #include <sys/wait.h>
+ #include <time.h>
+ #include <cstdio>
++#include <sys/types.h>
++#include <unistd.h>
++
+
+ namespace libcmatrix {
+
+diff --git a/utils/ttyio.cc b/utils/ttyio.cc
+index 17e4eb3..bbeac81 100755
+--- a/utils/ttyio.cc
++++ b/utils/ttyio.cc
+@@ -17,6 +17,8 @@
+ #include "args_iter.h"
+ #endif
+
++#include <unistd.h>
++
+ namespace libcmatrix {
+
+ namespace {
diff --git a/sci-libs/libcmatrix/files/3.2.1-minuit2.patch b/sci-libs/libcmatrix/files/3.2.1-minuit2.patch
new file mode 100644
index 000000000000..24dc5628b8f0
--- /dev/null
+++ b/sci-libs/libcmatrix/files/3.2.1-minuit2.patch
@@ -0,0 +1,14 @@
+--- configure-libraries.ac 2008-03-04 00:48:46.000000000 +0100
++++ configure-libraries.ac.new 2009-03-19 18:22:21.000000000 +0100
+@@ -14,8 +14,8 @@
+ fi
+ if test x$FOUNDMINUIT = xyes; then
+ AC_CHECK_LIB(lcg_Minuit,main,,
+- AC_CHECK_LIB(Minuit,main,,FOUNDMINUIT=no
+- AC_MSG_WARN([Minuit library (liblcg_Minuit or libMinuit) not found
++ AC_CHECK_LIB(Minuit2,main,,FOUNDMINUIT=no
++ AC_MSG_WARN([Minuit library (liblcg_Minuit or libMinuit2) not found
+ Is LDFLAGS is defined to include relevant directory?])))
+ if test x$FOUNDMINUIT = xyes; then
+ AC_DEFINE(HAVE_LIBMINUIT)
+
diff --git a/sci-libs/libcmatrix/files/3.2.1-shared.patch b/sci-libs/libcmatrix/files/3.2.1-shared.patch
new file mode 100644
index 000000000000..4e843027abde
--- /dev/null
+++ b/sci-libs/libcmatrix/files/3.2.1-shared.patch
@@ -0,0 +1,80 @@
+diff --git a/Makefile.in b/Makefile.in
+index 1361371..1448e76 100755
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -13,8 +13,8 @@ AR=@AR@
+
+ # You shouldn't need to alter anything below here
+
+-COMPILE=$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c
+-ALLOPTFLAGS=$(OPTFLAGS) -DNDEBUG
++COMPILE=$(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c
++#ALLOPTFLAGS=$(OPTFLAGS) -DNDEBUG
+
+ LOCALOBJS= local/CrystalSystem.o local/CrystalGeneric.o local/MoleculeStructure.o
+ COREOBJS= coredefs/complex.o coredefs/common.o coredefs/diagonal.o coredefs/diagonalise.o coredefs/power.o coredefs/invert.o coredefs/transforms.o coredefs/blocking.o coredefs/mixed.o coredefs/realtransforms.o coredefs/Chebyshev.o
+@@ -36,7 +36,7 @@ ALLTHROBJS=$(UNSAFEOBJS:.o=_r.o) $(ALLSAFEOBJS)
+
+ ROOT=..
+
+-first: lib/libcmatrix.a
++first: lib/libcmatrix.so.3.2.1
+
+ #%.o: %.f
+ # @F77@ @FFLAGS@ -c -o $@ $<
+@@ -68,25 +68,25 @@ tempclean:
+ # -cd optim; @CLEAN@
+ # -cd local; @CLEAN@
+
+-lib/libcmatrix.a: $(ALLNORMOBJS)
+- $(AR) $@ $(ALLNORMOBJS)
+- chmod a+rx $@
+- $(RANLIB) $@
+-
+-lib/libcmatrix_p.a: $(ALLPROFOBJS)
+- $(AR) $@ $(ALLPROFOBJS)
+- chmod a+rx $@
+- $(RANLIB) $@
+-
+-lib/libcmatrix-g.a: $(ALLGOBJS)
+- $(AR) $@ $(ALLGOBJS)
+- chmod a+rx $@
+- $(RANLIB) $@
+-
+-lib/libcmatrix_r.a: $(ALLTHROBJS)
+- $(AR) @MTFLAGS@ $@ $(ALLTHROBJS)
+- chmod a+rx $@
+- $(RANLIB) $@
++lib/libcmatrix.so.3.2.1: $(ALLNORMOBJS)
++ $(CXX) $(LDFLAGS) -fPIC -shared -Wl,--soname,libcmatrix.so.3 -o $@ $(ALLNORMOBJS) @ATLAS_LIBS@
++ ln -sf libcmatrix.so.3.2.1 lib/libcmatrix.so.3
++ ln -sf libcmatrix.so.3.2.1 lib/libcmatrix.so
++
++lib/libcmatrix_p.so.3.2.1: $(ALLPROFOBJS)
++ $(CXX) $(LDFLAGS) -fPIC -shared -Wl,--soname,libcmatrix.so.3 -o $@ $(ALLPROFOBJS) @ATLAS_LIBS@
++ ln -sf libcmatrix_p.so.3.2.1 lib/libcmatrix_p.so.3
++ ln -sf libcmatrix_p.so.3.2.1 lib/libcmatrix_p.so
++
++lib/libcmatrix-g.so.3.2.1: $(ALLGOBJS)
++ $(CXX) $(LDFLAGS) -fPIC -shared -Wl,--soname,libcmatrix.so.3 -o $@ $(ALLGOBJS) @ATLAS_LIBS@
++ ln -sf libcmatrix-g.so.3.2.1 lib/libcmatrix-g.so.3
++ ln -sf libcmatrix-g.so.3.2.1 lib/libcmatrix-g.so
++
++lib/libcmatrix.so_r.3.2.1: $(ALLTHROBJS)
++ $(CXX) $(LDFLAGS) -fPIC -shared -Wl,--soname,libcmatrix.so.3 -o $@ $(ALLTHROBJS) @ATLAS_LIBS@
++ ln -sf libcmatrix_r.so.3.2.1 lib/libcmatrix_r.so.3
++ ln -sf libcmatrix_r.so.3.2.1 lib/libcmatrix_r.so
+
+ @CONFIGLEAF@.tar.gz:
+ cd $(ROOT) ; tar --exclude lib/* --exclude *.o --exclude=*~ --exclude=Makefile --exclude=include/config.h --exclude=config.status -cvf @CONFIGLEAF@.tar @CONFIGLEAF@
+diff --git a/configure.ac b/configure.ac
+index c0ae0e1..50dcd5a 100755
+--- a/configure.ac
++++ b/configure.ac
+@@ -1,5 +1,6 @@
+ AC_INIT(configure.ac)
+ AC_CONFIG_HEADER(include/config.h)
++LT_INIT
+
+ DEFAR="ar ru"
+ MAKEEXTRA=
diff --git a/sci-libs/libcmatrix/files/3.9.0-atlas.patch b/sci-libs/libcmatrix/files/3.9.0-atlas.patch
new file mode 100644
index 000000000000..329e794645eb
--- /dev/null
+++ b/sci-libs/libcmatrix/files/3.9.0-atlas.patch
@@ -0,0 +1,24 @@
+ configure-libraries.ac | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/configure-libraries.ac b/configure-libraries.ac
+index 6e9579d..a919398 100755
+--- a/configure-libraries.ac
++++ b/configure-libraries.ac
+@@ -33,6 +33,7 @@ AC_ARG_WITH(atlas,
+ AS_HELP_STRING([--with-atlas],[use the ATLAS BLAS library (default-use if found)]),,with_atlas=check)
+ if test x$with_atlas != xno; then
+ FOUNDATLAS=yes
++ PKG_CHECK_MODULES([ATLAS], [cblas])
+ AC_CHECK_HEADERS(cblas.h,,FOUNDATLAS=no
+ AC_MSG_WARN([ATLAS header files (cblas.h) not found
+ Is CPPFLAGS is defined to include relevant directory?]))
+@@ -40,7 +41,7 @@ Is CPPFLAGS is defined to include relevant directory?]))
+ AC_MSG_WARN([ATLAS library (libatlas.a) not found
+ Is LDFLAGS is defined to include relevant directory?]))
+ if test x$FOUNDATLAS = xyes; then
+- LIBS="-lcblas $LIBS"
++ LIBS="$ATLAS_LIBS $LIBS"
+ CXXFLAGS="$CXXFLAGS -DLCM_USE_EXTERNAL"
+ else
+ if test x$with_atlas = xyes; then