[suitesparse] 05/12: Packaging overhaul.

Sébastien Villemot sebastien at debian.org
Wed May 4 13:30:40 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastien pushed a commit to branch master
in repository suitesparse.

commit 3b00ddd55bbd2b4f213293c9f76e663d05e6a40f
Author: Sébastien Villemot <sebastien at debian.org>
Date:   Sat Apr 30 21:52:43 2016 +0200

    Packaging overhaul.
    
    + Switch to dh (instead of cdbs).
    + Upstream committed to ABI tracking, so drop older system for
      generating SONAMES.
    + Use new upstream build system for compiling shared libraries.
    + Drop all patches (except buildflags.patch), no longer needed.
    + Enable METIS support (through Debian package, not embedded copy).
    + Add package for RBio (librbio).
    + Drop package for CSparse (libcsparse), superseded by libcxsparse.
    
    Gbp-Dch: Full
---
 debian/control                                    |   95 +-
 debian/control.in                                 |  270 ---
 debian/install/AMD                                |    3 -
 debian/install/BTF                                |    3 -
 debian/install/CAMD                               |    3 -
 debian/install/CCOLAMD                            |    3 -
 debian/install/CHOLMOD                            |    3 -
 debian/install/COLAMD                             |    3 -
 debian/install/CSparse                            |    3 -
 debian/install/CXSparse                           |    3 -
 debian/install/KLU                                |    3 -
 debian/install/LDL                                |    3 -
 debian/install/SPQR                               |    3 -
 debian/install/SuiteSparse_config                 |    3 -
 debian/install/UMFPACK                            |    3 -
 debian/libamd2.install                            |    3 +
 debian/libbtf1.install                            |    3 +
 debian/libcamd2.install                           |    3 +
 debian/libccolamd2.install                        |    3 +
 debian/libcholmod3.install                        |    3 +
 debian/libcolamd2.install                         |    3 +
 debian/libcxsparse3.install                       |    3 +
 debian/libklu1.install                            |    3 +
 debian/libldl2.install                            |    3 +
 debian/library-soname.pl                          |   28 -
 debian/librbio2.install                           |    3 +
 debian/libspqr2.install                           |    3 +
 debian/libsuitesparse-dev.docs                    |   11 -
 debian/libsuitesparse-dev.install                 |   31 +-
 debian/libsuitesparse-dev.links                   |    3 -
 debian/libsuitesparse-doc.docs                    |    1 +
 debian/libsuitesparse-doc.install                 |   14 -
 debian/libsuitesparseconfig4.install              |    3 +
 debian/libumfpack5.install                        |    3 +
 debian/patches/buildflags.patch                   |   49 +-
 debian/patches/disable-metis.patch                |   25 -
 debian/patches/fix-KLU-compilation-ordering.patch |   22 -
 debian/patches/parallel-build.patch               |   22 -
 debian/patches/series                             |    5 -
 debian/patches/shared-libraries.patch             | 1982 ---------------------
 debian/patches/use-generic-blas.patch             |   28 -
 debian/rules                                      |   89 +-
 42 files changed, 125 insertions(+), 2628 deletions(-)

diff --git a/debian/control b/debian/control
index 4bb2c04..4852a9c 100644
--- a/debian/control
+++ b/debian/control
@@ -1,22 +1,17 @@
-# This file is autogenerated. DO NOT EDIT!
-#
-# Modifications should be made to debian/control.in instead.
-# This file is regenerated automatically in the clean target.
-
 Source: suitesparse
 Section: math
 Priority: optional
 Maintainer: Debian Science Team <debian-science-maintainers at lists.alioth.debian.org>
 Uploaders: Christophe Prud'homme <prudhomm at debian.org>,
  Sébastien Villemot <sebastien at debian.org>
-Build-Depends: cdbs (>= 0.4.52), debhelper (>= 9), dh-exec, gfortran,
- libblas-dev, liblapack-dev
+Build-Depends: debhelper (>= 9), dh-exec, gfortran, libblas-dev, liblapack-dev,
+ libmetis-dev
 Standards-Version: 3.9.6
 Homepage: http://www.suitesparse.com
 Vcs-Git: git://anonscm.debian.org/debian-science/packages/suitesparse.git
 Vcs-Browser: http://anonscm.debian.org/gitweb/?p=debian-science/packages/suitesparse.git
 
-Package: libamd2.4.1
+Package: libamd2
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -30,7 +25,7 @@ Description: approximate minimum degree ordering library for sparse matrices
  prior to Cholesky or LU factorization, using the "Approximate Minimum Degree
  ordering" algorithm.
 
-Package: libbtf1.2.1
+Package: libbtf1
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -48,7 +43,7 @@ Description: permutation to block triangular form library for sparse matrices
  method for finding the strongly connected components of a graph. These two
  methods together give the permutation to block upper triangular form.
 
-Package: libcamd2.4.1
+Package: libcamd2
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -62,7 +57,7 @@ Description: symmetric approximate minimum degree library for sparse matrices
  prior to Cholesky or LU factorization, using the approximate minimum degree
  ordering algorithm with optional ordering constraints.
 
-Package: libcolamd2.9.1
+Package: libcolamd2
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -77,7 +72,7 @@ Description: column approximate minimum degree ordering library for sparse matri
  of A (:,P) tends to be sparser than that of A. The Cholesky factorization of
  (A (:,P))'*(A (:,P)) will also tend to be sparser than that of A'*A.
 
-Package: libccolamd2.9.1
+Package: libccolamd2
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -93,7 +88,7 @@ Description: constrained column approximate library for sparse matrices
  factorization of (A (:,P))'*(A (:,P)) will also tend to be sparser than that
  of A'*A.
 
-Package: libcholmod3.0.6
+Package: libcholmod3
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -111,7 +106,7 @@ Description: sparse Cholesky factorization library for sparse matrices
  factorization relies on LAPACK and the Level-3 BLAS, and obtains a substantial
  fraction of the peak performance of the BLAS.
 
-Package: libcsparse3.1.4
+Package: libcxsparse3
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -121,28 +116,15 @@ Description: concise sparse matrix library
  Suitesparse is a collection of libraries for computations involving
  sparse matrices.
  .
- The CSparse library provides several matrix algorithms. The focus is on direct
+ The CXSparse library provides several matrix algorithms. The focus is on direct
  methods; iterative methods and solvers for eigenvalue problems are beyond the
  scope of this package.
  .
- The performance of the sparse factorization methods in CSparse will not be
+ The performance of the sparse factorization methods in CXSparse will not be
  competitive with UMFPACK or CHOLMOD, but the codes are much more concise and
  easy to understand. Other methods are competitive.
 
-Package: libcxsparse3.1.4
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: concise sparse matrix library (complex, int and long int support)
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The CXSparse library is a version of CSparse (see libcsparse package) that
- operates on both real and complex matrices.
-
-Package: libklu1.3.3
+Package: libklu1
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -155,7 +137,7 @@ Description: circuit simulation sparse LU factorization library
  The KLU library provides routines for LU factorization, primarily for circuit
  simulation.
 
-Package: libldl2.2.1
+Package: libldl2
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -171,7 +153,7 @@ Description: simple LDL' factorization library for sparse matrices
  the algorithms in a very concise and readable manner, primarily for
  educational purposes.
 
-Package: libumfpack5.7.1
+Package: libumfpack5
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -184,7 +166,20 @@ Description: sparse LU factorization library
  The UMFPACK library provides a set of routines solving sparse linear systems
  via LU factorization.
 
-Package: libspqr2.0.2
+Package: librbio2
+Section: libs
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: read/write sparse matrices in Rutherford/Boeing format
+ Suitesparse is a collection of libraries for computations involving
+ sparse matrices.
+ .
+ RBio is a library for reading/writing sparse matrices in the Rutherford/Boeing
+ format.
+
+Package: libspqr2
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -197,7 +192,7 @@ Description: sparse QR factorization library
  SuiteSparseQR (SPQR) is a multithreaded, multifrontal, rank-revealing sparse
  QR factorization method.
 
-Package: libsuitesparseconfig4.4.6
+Package: libsuitesparseconfig4
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -217,19 +212,19 @@ Multi-Arch: same
 Replaces: libsuitesparse-metis-dev
 Conflicts: libsuitesparse-metis-dev
 Depends: ${misc:Depends},
- libamd2.4.1 (= ${binary:Version}),
- libcamd2.4.1 (= ${binary:Version}),
- libbtf1.2.1 (= ${binary:Version}),
- libcolamd2.9.1 (= ${binary:Version}),
- libccolamd2.9.1 (= ${binary:Version}),
- libcholmod3.0.6 (= ${binary:Version}),
- libcsparse3.1.4 (= ${binary:Version}),
- libcxsparse3.1.4 (= ${binary:Version}),
- libklu1.3.3 (= ${binary:Version}),
- libldl2.2.1 (= ${binary:Version}),
- libumfpack5.7.1 (= ${binary:Version}),
- libspqr2.0.2 (= ${binary:Version}),
- libsuitesparseconfig4.4.6 (= ${binary:Version}),
+ libamd2 (= ${binary:Version}),
+ libcamd2 (= ${binary:Version}),
+ libbtf1 (= ${binary:Version}),
+ libcolamd2 (= ${binary:Version}),
+ libccolamd2 (= ${binary:Version}),
+ libcholmod3 (= ${binary:Version}),
+ libcxsparse3 (= ${binary:Version}),
+ libklu1 (= ${binary:Version}),
+ libldl2 (= ${binary:Version}),
+ libumfpack5 (= ${binary:Version}),
+ librbio2 (= ${binary:Version}),
+ libspqr2 (= ${binary:Version}),
+ libsuitesparseconfig4 (= ${binary:Version}),
  libblas-dev | libblas.so,
  liblapack-dev | liblapack.so
 Description: libraries for sparse matrices computations (development files)
@@ -248,9 +243,7 @@ Description: libraries for sparse matrices computations (development files)
  .
  CHOLMOD     sparse Cholesky factorization
  .
- CSparse     a concise sparse matrix package
- .
- CXSparse    CSparse extended: complex matrix, int and long int support
+ CXSparse    a concise sparse matrix package
  .
  KLU         sparse LU factorization, primarily for circuit simulation
  .
@@ -258,6 +251,8 @@ Description: libraries for sparse matrices computations (development files)
  .
  UMFPACK     sparse LU factorization
  .
+ RBio        read/write sparse matrices in Rutherford/Boeing format
+ .
  SPQR        sparse QR factorization
  .
  SuiteSparse_config    configuration routines for all the above packages.
diff --git a/debian/control.in b/debian/control.in
deleted file mode 100644
index 7015ac7..0000000
--- a/debian/control.in
+++ /dev/null
@@ -1,270 +0,0 @@
-Source: suitesparse
-Section: math
-Priority: optional
-Maintainer: Debian Science Team <debian-science-maintainers at lists.alioth.debian.org>
-Uploaders: Christophe Prud'homme <prudhomm at debian.org>,
- Sébastien Villemot <sebastien at debian.org>
-Build-Depends: cdbs (>= 0.4.52), debhelper (>= 9), dh-exec, gfortran,
- libblas-dev, liblapack-dev
-Standards-Version: 3.9.6
-Homepage: http://www.suitesparse.com
-Vcs-Git: git://anonscm.debian.org/debian-science/packages/suitesparse.git
-Vcs-Browser: http://anonscm.debian.org/gitweb/?p=debian-science/packages/suitesparse.git
-
-Package: @AMD@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: approximate minimum degree ordering library for sparse matrices
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The AMD library provides a set of routines for pre-ordering sparse matrices
- prior to Cholesky or LU factorization, using the "Approximate Minimum Degree
- ordering" algorithm.
-
-Package: @BTF@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: permutation to block triangular form library for sparse matrices
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The BTF library is a software package for permuting a matrix into Block upper
- Triangular Form. It includes a maximum transversal algorithm, which finds a
- permutation of a square or rectangular matrix so that it has a zero-free
- diagonal (if one exists); otherwise, it finds a maximal matching which
- maximizes the number of nonzeros on the diagonal. The package also includes a
- method for finding the strongly connected components of a graph. These two
- methods together give the permutation to block upper triangular form.
-
-Package: @CAMD@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: symmetric approximate minimum degree library for sparse matrices
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The CAMD library provides a set of routines for pre-ordering sparse matrices
- prior to Cholesky or LU factorization, using the approximate minimum degree
- ordering algorithm with optional ordering constraints.
-
-Package: @COLAMD@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: column approximate minimum degree ordering library for sparse matrices
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The COLAMD library implements the "COLumn Approximate Minimum Degree ordering"
- algorithm. It computes a permutation vector P such that the LU factorization
- of A (:,P) tends to be sparser than that of A. The Cholesky factorization of
- (A (:,P))'*(A (:,P)) will also tend to be sparser than that of A'*A.
-
-Package: @CCOLAMD@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: constrained column approximate library for sparse matrices
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The CCOLAMD library implements the "Constrained COLumn Approximate Minimum
- Degree ordering" algorithm. It computes a permutation vector P such that the
- LU factorization of A (:,P) tends to be sparser than that of A. The Cholesky
- factorization of (A (:,P))'*(A (:,P)) will also tend to be sparser than that
- of A'*A.
-
-Package: @CHOLMOD@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: sparse Cholesky factorization library for sparse matrices
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The CHOLMOD library provides a set of routines for factorizing sparse
- symmetric positive definite matrices of the form A or AA', updating/downdating
- a sparse Cholesky factorization, solving linear systems, updating/downdating
- the solution to the triangular system Lx=b, and many other sparse matrix
- functions for both symmetric and unsymmetric matrices. Its supernodal Cholesky
- factorization relies on LAPACK and the Level-3 BLAS, and obtains a substantial
- fraction of the peak performance of the BLAS.
-
-Package: @CSparse@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: concise sparse matrix library
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The CSparse library provides several matrix algorithms. The focus is on direct
- methods; iterative methods and solvers for eigenvalue problems are beyond the
- scope of this package.
- .
- The performance of the sparse factorization methods in CSparse will not be
- competitive with UMFPACK or CHOLMOD, but the codes are much more concise and
- easy to understand. Other methods are competitive.
-
-Package: @CXSparse@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: concise sparse matrix library (complex, int and long int support)
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The CXSparse library is a version of CSparse (see libcsparse package) that
- operates on both real and complex matrices.
-
-Package: @KLU@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: circuit simulation sparse LU factorization library
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The KLU library provides routines for LU factorization, primarily for circuit
- simulation.
-
-Package: @LDL@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: simple LDL' factorization library for sparse matrices
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The LDL library provides routines for sparse LDL' factorization and solving.
- These routines are not terrifically fast (they do not use dense matrix
- kernels), but the code is very short and concise. The purpose is to illustrate
- the algorithms in a very concise and readable manner, primarily for
- educational purposes.
-
-Package: @UMFPACK@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: sparse LU factorization library
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The UMFPACK library provides a set of routines solving sparse linear systems
- via LU factorization.
-
-Package: @SPQR@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: sparse QR factorization library
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- SuiteSparseQR (SPQR) is a multithreaded, multifrontal, rank-revealing sparse
- QR factorization method.
-
-Package: @SuiteSparse_config@
-Section: libs
-Architecture: any
-Multi-Arch: same
-Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: configuration routines for all SuiteSparse modules
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.
- .
- The SuiteSparse_config library provides configuration routines that are common
- to all SuiteSparse libraries.
-
-Package: libsuitesparse-dev
-Section: libdevel
-Architecture: any
-Multi-Arch: same
-Replaces: libsuitesparse-metis-dev
-Conflicts: libsuitesparse-metis-dev
-Depends: ${misc:Depends},
- @AMD@ (= ${binary:Version}),
- @CAMD@ (= ${binary:Version}),
- @BTF@ (= ${binary:Version}),
- @COLAMD@ (= ${binary:Version}),
- @CCOLAMD@ (= ${binary:Version}),
- @CHOLMOD@ (= ${binary:Version}),
- @CSparse@ (= ${binary:Version}),
- @CXSparse@ (= ${binary:Version}),
- @KLU@ (= ${binary:Version}),
- @LDL@ (= ${binary:Version}),
- @UMFPACK@ (= ${binary:Version}),
- @SPQR@ (= ${binary:Version}),
- @SuiteSparse_config@ (= ${binary:Version}),
- libblas-dev | libblas.so,
- liblapack-dev | liblapack.so
-Description: libraries for sparse matrices computations (development files)
- Suitesparse is a collection of libraries for computations involving
- sparse matrices.  This package includes the following libraries:
- .
- AMD         approximate minimum degree ordering
- .
- CAMD        symmetric approximate minimum degree
- .
- BTF         permutation to block triangular form (beta)
- .
- COLAMD      column approximate minimum degree ordering
- .
- CCOLAMD     constrained column approximate minimum degree ordering
- .
- CHOLMOD     sparse Cholesky factorization
- .
- CSparse     a concise sparse matrix package
- .
- CXSparse    CSparse extended: complex matrix, int and long int support
- .
- KLU         sparse LU factorization, primarily for circuit simulation
- .
- LDL         a simple LDL' factorization
- .
- UMFPACK     sparse LU factorization
- .
- SPQR        sparse QR factorization
- .
- SuiteSparse_config    configuration routines for all the above packages.
- .
- This package contains the static libraries and header files.
-
-Package: libsuitesparse-doc
-Section: doc
-Architecture: all
-Depends: ${misc:Depends}
-Suggests: liblapack-doc, liblapack-doc-man, libatlas-doc
-Description: libraries for sparse matrices computations (documentation)
- Suitesparse is a collection of libraries for computations involving
- sparse matrices. This package contains the user guides for the
- libraries distributed by the SuiteSparse project.
diff --git a/debian/install/AMD b/debian/install/AMD
deleted file mode 100755
index 00f963c..0000000
--- a/debian/install/AMD
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-AMD/Lib/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/install/BTF b/debian/install/BTF
deleted file mode 100755
index 633aa19..0000000
--- a/debian/install/BTF
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-BTF/Lib/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/install/CAMD b/debian/install/CAMD
deleted file mode 100755
index b711176..0000000
--- a/debian/install/CAMD
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-CAMD/Lib/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/install/CCOLAMD b/debian/install/CCOLAMD
deleted file mode 100755
index aac73b5..0000000
--- a/debian/install/CCOLAMD
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-CCOLAMD/Lib/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/install/CHOLMOD b/debian/install/CHOLMOD
deleted file mode 100755
index f933f53..0000000
--- a/debian/install/CHOLMOD
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-CHOLMOD/Lib/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/install/COLAMD b/debian/install/COLAMD
deleted file mode 100755
index df79212..0000000
--- a/debian/install/COLAMD
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-COLAMD/Lib/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/install/CSparse b/debian/install/CSparse
deleted file mode 100755
index b7fbcc0..0000000
--- a/debian/install/CSparse
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-CSparse/Lib/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/install/CXSparse b/debian/install/CXSparse
deleted file mode 100755
index 11e2295..0000000
--- a/debian/install/CXSparse
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-CXSparse/Lib/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/install/KLU b/debian/install/KLU
deleted file mode 100755
index 01bc0e8..0000000
--- a/debian/install/KLU
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-KLU/Lib/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/install/LDL b/debian/install/LDL
deleted file mode 100755
index 4c7edfe..0000000
--- a/debian/install/LDL
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-LDL/Lib/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/install/SPQR b/debian/install/SPQR
deleted file mode 100755
index dfcbf6a..0000000
--- a/debian/install/SPQR
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-SPQR/Lib/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/install/SuiteSparse_config b/debian/install/SuiteSparse_config
deleted file mode 100755
index 69f2ca8..0000000
--- a/debian/install/SuiteSparse_config
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-SuiteSparse_config/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/install/UMFPACK b/debian/install/UMFPACK
deleted file mode 100755
index 462f472..0000000
--- a/debian/install/UMFPACK
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/dh-exec
-
-UMFPACK/Lib/*.so.* /usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/libamd2.install b/debian/libamd2.install
new file mode 100755
index 0000000..ce70f22
--- /dev/null
+++ b/debian/libamd2.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/libamd.so.*
diff --git a/debian/libbtf1.install b/debian/libbtf1.install
new file mode 100755
index 0000000..34d036d
--- /dev/null
+++ b/debian/libbtf1.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/libbtf.so.*
diff --git a/debian/libcamd2.install b/debian/libcamd2.install
new file mode 100755
index 0000000..d4efc9b
--- /dev/null
+++ b/debian/libcamd2.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/libcamd.so.*
diff --git a/debian/libccolamd2.install b/debian/libccolamd2.install
new file mode 100755
index 0000000..97e706c
--- /dev/null
+++ b/debian/libccolamd2.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/libccolamd.so.*
diff --git a/debian/libcholmod3.install b/debian/libcholmod3.install
new file mode 100755
index 0000000..a2244e5
--- /dev/null
+++ b/debian/libcholmod3.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/libcholmod.so.*
diff --git a/debian/libcolamd2.install b/debian/libcolamd2.install
new file mode 100755
index 0000000..54eec1c
--- /dev/null
+++ b/debian/libcolamd2.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/libcolamd.so.*
diff --git a/debian/libcxsparse3.install b/debian/libcxsparse3.install
new file mode 100755
index 0000000..29c75a5
--- /dev/null
+++ b/debian/libcxsparse3.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/libcxsparse.so.*
diff --git a/debian/libklu1.install b/debian/libklu1.install
new file mode 100755
index 0000000..3e18e7a
--- /dev/null
+++ b/debian/libklu1.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/libklu.so.*
diff --git a/debian/libldl2.install b/debian/libldl2.install
new file mode 100755
index 0000000..b5fb95b
--- /dev/null
+++ b/debian/libldl2.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/libldl.so.*
diff --git a/debian/library-soname.pl b/debian/library-soname.pl
deleted file mode 100644
index f840738..0000000
--- a/debian/library-soname.pl
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/perl
-
-%soversion = (
-    AMD, "2.4.1",
-    CAMD, "2.4.1",
-    BTF, "1.2.1",
-    COLAMD, "2.9.1",
-    CCOLAMD, "2.9.1",
-    CHOLMOD, "3.0.6",
-    CSparse, "3.1.4",
-    CXSparse, "3.1.4",
-    KLU, "1.3.3",
-    LDL, "2.2.1",
-    UMFPACK, "5.7.1",
-    SPQR, "2.0.2",
-    SuiteSparse_config, "4.4.6"
-);
-
-die "Usage: $0 LIB\n" if $#ARGV != 0;
-
-my $lib = $ARGV [0];
-die "$0: Unknown library $lib\n" if not exists $soversion {$lib};
-
-my $debpkg = lc ($lib);
-$debpkg =~ s/_//;
-$debpkg = "lib" . $debpkg . $soversion {$lib};
-
-print $debpkg
diff --git a/debian/librbio2.install b/debian/librbio2.install
new file mode 100755
index 0000000..ec1b182
--- /dev/null
+++ b/debian/librbio2.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/librbio.so.*
diff --git a/debian/libspqr2.install b/debian/libspqr2.install
new file mode 100755
index 0000000..9d493ba
--- /dev/null
+++ b/debian/libspqr2.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/libspqr.so.*
diff --git a/debian/libsuitesparse-dev.docs b/debian/libsuitesparse-dev.docs
deleted file mode 100644
index b5ad921..0000000
--- a/debian/libsuitesparse-dev.docs
+++ /dev/null
@@ -1,11 +0,0 @@
-AMD/Doc/AMD_ChangeLog
-CAMD/Doc/CAMD_ChangeLog
-CCOLAMD/Doc/CCOLAMD_ChangeLog
-COLAMD/Doc/COLAMD_ChangeLog
-BTF/Doc/BTF_ChangeLog
-KLU/Doc/KLU_ChangeLog
-LDL/Doc/LDL_ChangeLog
-UMFPACK/Doc/UMFPACK_ChangeLog
-CHOLMOD/Doc/CHOLMOD_ChangeLog
-CSparse/Doc/CSparse_ChangeLog
-CXSparse/Doc/CXSparse_ChangeLog
diff --git a/debian/libsuitesparse-dev.install b/debian/libsuitesparse-dev.install
index 13b5855..92cf0fe 100755
--- a/debian/libsuitesparse-dev.install
+++ b/debian/libsuitesparse-dev.install
@@ -1,42 +1,17 @@
 #!/usr/bin/dh-exec
 
 AMD/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-AMD/Lib/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
-AMD/Include/*.h /usr/include/suitesparse
 CAMD/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-CAMD/Lib/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
-CAMD/Include/*.h /usr/include/suitesparse
 BTF/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-BTF/Lib/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
-BTF/Include/*.h /usr/include/suitesparse
 CCOLAMD/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-CCOLAMD/Lib/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
-CCOLAMD/Include/*.h /usr/include/suitesparse
 COLAMD/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-COLAMD/Lib/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
-COLAMD/Include/*.h /usr/include/suitesparse
 KLU/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-KLU/Lib/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
-KLU/Include/*.h /usr/include/suitesparse
 LDL/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-LDL/Lib/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
-LDL/Include/*.h /usr/include/suitesparse
-CSparse/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-CSparse/Lib/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
-CSparse/Include/*.h /usr/include/suitesparse/csparse/
 CXSparse/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-CXSparse/Lib/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
-CXSparse/Include/*.h /usr/include/suitesparse/cxsparse/
 CHOLMOD/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-CHOLMOD/Lib/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
-CHOLMOD/Include/*.h /usr/include/suitesparse
 UMFPACK/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-UMFPACK/Lib/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
-UMFPACK/Include/*.h /usr/include/suitesparse
-SuiteSparse_config/*.h /usr/include/suitesparse
 SuiteSparse_config/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-SuiteSparse_config/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
 SPQR/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
-SPQR/Lib/*.so /usr/lib/${DEB_HOST_MULTIARCH}/
-SPQR/Include/*.h /usr/include/suitesparse
-SPQR/Include/*.hpp /usr/include/suitesparse
+RBio/Lib/*.a /usr/lib/${DEB_HOST_MULTIARCH}/
+/usr/lib/${DEB_HOST_MULTIARCH}/*.so
+/usr/include/suitesparse
diff --git a/debian/libsuitesparse-dev.links b/debian/libsuitesparse-dev.links
deleted file mode 100644
index ea1ebb1..0000000
--- a/debian/libsuitesparse-dev.links
+++ /dev/null
@@ -1,3 +0,0 @@
-# CSparse and CXSparse both provide a cs.h: symlink to the one from CXSparse
-# from toplevel include directory, for backward compatibility.
-/usr/include/suitesparse/cxsparse/cs.h /usr/include/suitesparse/cs.h
diff --git a/debian/libsuitesparse-doc.docs b/debian/libsuitesparse-doc.docs
new file mode 100644
index 0000000..0638382
--- /dev/null
+++ b/debian/libsuitesparse-doc.docs
@@ -0,0 +1 @@
+debian/tmp/usr/share/doc/suitesparse/*
diff --git a/debian/libsuitesparse-doc.install b/debian/libsuitesparse-doc.install
deleted file mode 100644
index 275b189..0000000
--- a/debian/libsuitesparse-doc.install
+++ /dev/null
@@ -1,14 +0,0 @@
-AMD/Doc/AMD*.pdf /usr/share/doc/libsuitesparse-doc
-AMD/Doc/*.bib /usr/share/doc/libsuitesparse-doc
-LDL/Doc/ldl*.pdf /usr/share/doc/libsuitesparse-doc
-LDL/Doc/ldl*.bib /usr/share/doc/libsuitesparse-doc
-KLU/Doc/KLU*.pdf /usr/share/doc/libsuitesparse-doc
-KLU/Doc/KLU*.bib /usr/share/doc/libsuitesparse-doc
-CAMD/Doc/CAMD*.pdf /usr/share/doc/libsuitesparse-doc
-CAMD/Doc/CAMD*.bib /usr/share/doc/libsuitesparse-doc
-CHOLMOD/Doc/CHOLMOD*.pdf /usr/share/doc/libsuitesparse-doc
-CHOLMOD/Doc/CHOLMOD*.bib /usr/share/doc/libsuitesparse-doc
-UMFPACK/Doc/UMFPACK*.pdf /usr/share/doc/libsuitesparse-doc
-UMFPACK/Doc/UMFPACK*.bib /usr/share/doc/libsuitesparse-doc
-SPQR/Doc/spqr_user_guide.pdf /usr/share/doc/libsuitesparse-doc
-SPQR/Doc/spqr_user_guide.bib /usr/share/doc/libsuitesparse-doc
diff --git a/debian/libsuitesparseconfig4.install b/debian/libsuitesparseconfig4.install
new file mode 100755
index 0000000..b94c0bc
--- /dev/null
+++ b/debian/libsuitesparseconfig4.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/libsuitesparseconfig.so.*
diff --git a/debian/libumfpack5.install b/debian/libumfpack5.install
new file mode 100755
index 0000000..4181e64
--- /dev/null
+++ b/debian/libumfpack5.install
@@ -0,0 +1,3 @@
+#!/usr/bin/dh-exec
+
+/usr/lib/${DEB_HOST_MULTIARCH}/libumfpack.so.*
diff --git a/debian/patches/buildflags.patch b/debian/patches/buildflags.patch
index 42a97cc..e34c6e9 100644
--- a/debian/patches/buildflags.patch
+++ b/debian/patches/buildflags.patch
@@ -1,45 +1,40 @@
 Description: Clean up build flags
+ - remove rpath
  - remove optimization flags because we want to support noopt option
  - remove -fPIC because we don't want to use it for static libraries (and the
    other patches enforce it for dynamic libraries)
 Author: Sébastien Villemot <sebastien at debian.org>
 Forwarded: not-needed
-Last-Update: 2013-04-20
+Last-Update: 2016-04-30
 ---
 This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/CSparse/Lib/Makefile
-+++ b/CSparse/Lib/Makefile
+--- a/CSparse/Demo/Makefile
++++ b/CSparse/Demo/Makefile
 @@ -1,4 +1,4 @@
 -CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O
 +CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH)
  I = -I../Include
+ 
+ LDLIBS += -lm
+--- a/CSparse/Lib/Makefile
++++ b/CSparse/Lib/Makefile
+@@ -16,7 +16,7 @@
+ 
+ LIBRARY = libcsparse
+ 
+-CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O -fPIC
++CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH)
+ I = -I../Include
  RANLIB = ranlib
  ARCHIVE = $(AR) $(ARFLAGS)
 --- a/SuiteSparse_config/SuiteSparse_config.mk
 +++ b/SuiteSparse_config/SuiteSparse_config.mk
-@@ -69,7 +69,7 @@
- # C and C++ compiler flags.  The first three are standard for *.c and *.cpp
- # Add -DNTIMER if you do use any timing routines (otherwise -lrt is required).
- # CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O3 -fexceptions -fPIC -DNTIMER
--  CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O3 -fexceptions -fPIC
-+  CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -fexceptions
- # for the MKL BLAS:
- # CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O3 -fexceptions -fPIC -I$(MKLROOT)/include -D_GNU_SOURCE
- # with no optimization:
-@@ -86,7 +86,7 @@ MV = mv -f
- 
- # Fortran compiler (not required for 'make' or 'make library')
- F77 = gfortran
--F77FLAGS = $(FFLAGS) -O
-+F77FLAGS = $(FFLAGS)
- F77LIB =
+@@ -338,7 +338,7 @@ SUITESPARSE_VERSION = 4.5.2
  
- # C and Fortran libraries.  Remove -lrt if you don't have it.
---- a/CSparse/Demo/Makefile
-+++ b/CSparse/Demo/Makefile
-@@ -1,4 +1,4 @@
--CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O
-+CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH)
- I = -I../Include
+     ifeq ($(UNAME),Linux)
+         # add the realtime library, librt, and SuiteSparse/lib
+-        LDLIBS += -lrt -Wl,-rpath=$(INSTALL_LIB)
++        LDLIBS += -lrt
+     endif
  
- CS = ../Lib/libcsparse.a
+     #---------------------------------------------------------------------------
diff --git a/debian/patches/disable-metis.patch b/debian/patches/disable-metis.patch
deleted file mode 100644
index 691f9ac..0000000
--- a/debian/patches/disable-metis.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Description: Do not use METIS library
-Author: Daniel Rus Morales <danirus at tol-project.org>
-Forwarded: not-needed
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/SuiteSparse_config/SuiteSparse_config.mk
-+++ b/SuiteSparse_config/SuiteSparse_config.mk
-@@ -273,7 +273,7 @@ UMFPACK_CONFIG =
- # -DNSUNPERF        for Solaris only.  If defined, do not use the Sun
- #                   Performance Library
- 
--CHOLMOD_CONFIG = $(GPU_CONFIG)
-+CHOLMOD_CONFIG = $(GPU_CONFIG) -DNPARTITION
- 
- # uncomment this line to compile CHOLMOD without METIS:
- # CHOLMOD_CONFIG = -DNPARTITION
-@@ -289,7 +289,7 @@ CHOLMOD_CONFIG = $(GPU_CONFIG)
- # -DHAVE_TBB        enable the use of Intel's Threading Building Blocks (TBB)
- 
- # default, without timing, without TBB:
--SPQR_CONFIG = $(GPU_CONFIG)
-+SPQR_CONFIG = $(GPU_CONFIG) -DNPARTITION
- # with TBB:
- # SPQR_CONFIG = -DHAVE_TBB
- 
diff --git a/debian/patches/fix-KLU-compilation-ordering.patch b/debian/patches/fix-KLU-compilation-ordering.patch
deleted file mode 100644
index 3c78046..0000000
--- a/debian/patches/fix-KLU-compilation-ordering.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Description: Compile CAMD and CCOLAMD before KLU
- Since KLU depends on these two libraries, they must be compiled before KLU in
- order to create correct dependencies between shared libraries.
-Author: Sébastien Villemot <sebastien at debian.org>
-Forwarded: no
-Last-Update: 2015-01-18
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/KLU/Demo/Makefile
-+++ b/KLU/Demo/Makefile
-@@ -47,9 +47,9 @@ all: $(CLIB) klu_simple $(CHOLMOD_LIB) k
- 	( cd ../../COLAMD ; $(MAKE) library )
- 
- ../../CHOLMOD/Lib/libcholmod.a:
-+	( cd ../../CAMD ; $(MAKE) library )
-+	( cd ../../CCOLAMD ; $(MAKE) library )
- 	( cd ../../CHOLMOD ; $(MAKE) library )
--#	( cd ../../CAMD ; $(MAKE) )
--#	( cd ../../CCOLAMD ; $(MAKE) )
- #	( cd ../../metis-4.0 ; $(MAKE) )
- 
- ../../SuiteSparse_config/libsuitesparseconfig.a:
diff --git a/debian/patches/parallel-build.patch b/debian/patches/parallel-build.patch
deleted file mode 100644
index 506336b..0000000
--- a/debian/patches/parallel-build.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Description: Fix missing dependency in Makefile
- Without this dependency, the parallel build fails.
-Author: Sébastien Villemot <sebastien at debian.org>
-Forwarded: no
-Last-Update: 2013-04-20
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/KLU/Demo/Makefile
-+++ b/KLU/Demo/Makefile
-@@ -64,10 +64,10 @@ distclean: clean
- clean:
- 	- $(RM) $(CLEAN)
- 
--kludemo: kludemo.c Makefile $(CLIB)
-+kludemo: kludemo.c Makefile $(CLIB) $(CHOLMOD_LIB)
- 	$(CC) $(CF) $(I) kludemo.c -o kludemo $(CLIB) $(CHOLMOD) $(LIB)
- 
--kluldemo: kludemo.c Makefile $(CLIB)
-+kluldemo: kludemo.c Makefile $(CLIB) $(CHOLMOD_LIB)
- 	$(CC) $(CF) $(I) kluldemo.c -o kluldemo $(CLIB) $(CHOLMOD) $(LIB)
- 
- klu_simple: klu_simple.c Makefile $(CLIB)
diff --git a/debian/patches/series b/debian/patches/series
index 18d2e8e..896fdf1 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,6 +1 @@
-disable-metis.patch
-use-generic-blas.patch
-shared-libraries.patch
-fix-KLU-compilation-ordering.patch
 buildflags.patch
-parallel-build.patch
diff --git a/debian/patches/shared-libraries.patch b/debian/patches/shared-libraries.patch
deleted file mode 100644
index 02c1336..0000000
--- a/debian/patches/shared-libraries.patch
+++ /dev/null
@@ -1,1982 +0,0 @@
-Description: Build shared version of libraries
-Author: Daniel Rus Morales <danirus at tol-project.org>, Sébastien Villemot <sebastien at debian.org>
-Forwarded: no
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/AMD/Lib/GNUmakefile
-+++ b/AMD/Lib/GNUmakefile
-@@ -2,7 +2,9 @@
- # AMD Makefile for compiling on Unix systems (for GNU make only)
- #-------------------------------------------------------------------------------
- 
--default: libamd.a
-+SOVERSION = $(shell perl ../../debian/library-soname.pl AMD | sed 's/libamd//')
-+
-+default: libamd.a libamd.so.$(SOVERSION)
- 
- include ../../SuiteSparse_config/SuiteSparse_config.mk
- 
-@@ -26,15 +28,22 @@ INC = ../Include/amd.h ../Include/amd_in
- AMDI = $(addsuffix .o, $(subst amd_,amd_i_,$(AMD)))
- AMDL = $(addsuffix .o, $(subst amd_,amd_l_,$(AMD)))
- 
-+AMDI_SL = $(addsuffix .oo, $(subst amd_,amd_i_,$(AMD)))
-+AMDL_SL = $(addsuffix .oo, $(subst amd_,amd_l_,$(AMD)))
-+
- #-------------------------------------------------------------------------------
- # compile each int and long routine (with no real/complex version)
- #-------------------------------------------------------------------------------
- 
- amd_i_%.o: ../Source/amd_%.c $(INC)
- 	$(C) -DDINT -c $< -o $@
-+amd_i_%.oo: ../Source/amd_%.c $(INC)
-+	$(C) -fPIC -DDINT -c $< -o $@
- 
- amd_l_%.o: ../Source/amd_%.c $(INC)
- 	$(C) -DDLONG -c $< -o $@
-+amd_l_%.oo: ../Source/amd_%.c $(INC)
-+	$(C) -fPIC -DDLONG -c $< -o $@
- 
- #-------------------------------------------------------------------------------
- # Create the libamd.a library (C versions only)
-@@ -44,6 +53,10 @@ libamd.a: $(AMDI) $(AMDL)
- 	$(ARCHIVE) libamd.a $^
- 	- $(RANLIB) libamd.a
- 
-+libamd.so.$(SOVERSION): $(AMDI_SL) $(AMDL_SL)
-+	$(CC) $(LDFLAGS) -shared $^ -lm ../../SuiteSparse_config/libsuitesparseconfig.so -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libamd.so
-+
- #-------------------------------------------------------------------------------
- # compile the Fortran versions and the libamdf77.a library
- #-------------------------------------------------------------------------------
---- a/BTF/Lib/Makefile
-+++ b/BTF/Lib/Makefile
-@@ -15,38 +15,58 @@ I = -I../Include -I../../SuiteSparse_con
- 
- all: library
- 
--library: libbtf.a
-+SOVERSION = $(shell perl ../../debian/library-soname.pl BTF | sed 's/libbtf//')
-+
-+library: libbtf.a libbtf.so.$(SOVERSION)
- 
- OBJ = btf_order.o btf_maxtrans.o btf_strongcomp.o \
-     btf_l_order.o btf_l_maxtrans.o btf_l_strongcomp.o
-+OBJ_SL = $(subst .o,.oo,$(OBJ))
- 
- libbtf.a: $(OBJ)
- 	$(ARCHIVE)  libbtf.a $(OBJ)
- 	- $(RANLIB) libbtf.a
- 
--$(OBJ): $(INC)
-+libbtf.so.$(SOVERSION): $(OBJ_SL)
-+	$(CC) $(LDFLAGS) -shared $^ -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libbtf.so
-+
-+$(OBJ) $(OBJ_SL): $(INC)
-+
- 
- #-------------------------------------------------------------------------------
- 
- btf_order.o: ../Source/btf_order.c
- 	$(C) -c $(I) $< -o $@
-+btf_order.oo: ../Source/btf_order.c
-+	$(C) -fPIC  -c $(I) $< -o $@
- 
- btf_maxtrans.o: ../Source/btf_maxtrans.c
- 	$(C) -c $(I) $< -o $@
-+btf_maxtrans.oo: ../Source/btf_maxtrans.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- btf_strongcomp.o: ../Source/btf_strongcomp.c
- 	$(C) -c $(I) $< -o $@
-+btf_strongcomp.oo: ../Source/btf_strongcomp.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- 
- btf_l_order.o: ../Source/btf_order.c
--	$(C) -c $(I) -DDLONG $< -o $@
-+	$(C)  -c $(I) -DDLONG $< -o $@
-+btf_l_order.oo: ../Source/btf_order.c
-+	$(C) -fPIC -c $(I) -DDLONG $< -o $@
- 
- btf_l_maxtrans.o: ../Source/btf_maxtrans.c
- 	$(C) -c $(I) -DDLONG $< -o $@
-+btf_l_maxtrans.oo: ../Source/btf_maxtrans.c
-+	$(C) -fPIC -c $(I) -DDLONG $< -o $@
- 
- btf_l_strongcomp.o: ../Source/btf_strongcomp.c
- 	$(C) -c $(I) -DDLONG $< -o $@
-+btf_l_strongcomp.oo: ../Source/btf_strongcomp.c
-+	$(C) -fPIC -c $(I) -DDLONG $< -o $@
- 
- #-------------------------------------------------------------------------------
- 
---- a/CAMD/Lib/GNUmakefile
-+++ b/CAMD/Lib/GNUmakefile
-@@ -2,7 +2,9 @@
- # CAMD Makefile for compiling on Unix systems (for GNU make only)
- #-------------------------------------------------------------------------------
- 
--default: libcamd.a
-+SOVERSION = $(shell perl ../../debian/library-soname.pl CAMD | sed 's/libcamd//')
-+
-+default: libcamd.a libcamd.so.$(SOVERSION)
- 
- include ../../SuiteSparse_config/SuiteSparse_config.mk
- 
-@@ -25,15 +27,22 @@ INC = ../Include/camd.h ../Include/camd_
- CAMDI = $(addsuffix .o, $(subst camd_,camd_i_,$(CAMD)))
- CAMDL = $(addsuffix .o, $(subst camd_,camd_l_,$(CAMD)))
- 
-+CAMDI_SL = $(addsuffix .oo, $(subst camd_,camd_i_,$(CAMD)))
-+CAMDL_SL = $(addsuffix .oo, $(subst camd_,camd_l_,$(CAMD)))
-+
- #-------------------------------------------------------------------------------
- # compile each int and long routine (with no real/complex version)
- #-------------------------------------------------------------------------------
- 
- camd_i_%.o: ../Source/camd_%.c $(INC)
- 	$(C) -DDINT -c $< -o $@
-+camd_i_%.oo: ../Source/camd_%.c $(INC)
-+	$(C) -fPIC -DDINT -c $< -o $@
- 
- camd_l_%.o: ../Source/camd_%.c $(INC)
- 	$(C) -DDLONG -c $< -o $@
-+camd_l_%.oo: ../Source/camd_%.c $(INC)
-+	$(C) -fPIC -DDLONG -c $< -o $@
- 
- #-------------------------------------------------------------------------------
- # Create the libcamd.a library (C versions only)
-@@ -43,6 +52,10 @@ libcamd.a: $(CAMDI) $(CAMDL)
- 	$(ARCHIVE)  libcamd.a $^
- 	- $(RANLIB) libcamd.a
- 
-+libcamd.so.$(SOVERSION): $(CAMDI_SL) $(CAMDL_SL)
-+	$(CC) $(LDFLAGS) -shared $^ -lm ../../SuiteSparse_config/libsuitesparseconfig.so -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libcamd.so
-+
- #-------------------------------------------------------------------------------
- # Remove all but the files in the original distribution
- #-------------------------------------------------------------------------------
---- a/CCOLAMD/Lib/Makefile
-+++ b/CCOLAMD/Lib/Makefile
-@@ -2,7 +2,9 @@
- # CCOLAMD Makefile
- #-------------------------------------------------------------------------------
- 
--default: libccolamd.a
-+SOVERSION = $(shell perl ../../debian/library-soname.pl CCOLAMD | sed 's/libccolamd//')
-+
-+default: libccolamd.a libccolamd.so.$(SOVERSION)
- 
- include ../../SuiteSparse_config/SuiteSparse_config.mk
- 
-@@ -19,6 +21,12 @@ libccolamd.a:  $(SRC) $(INC)
- 	$(ARCHIVE)  libccolamd.a ccolamd.o ccolamd_l.o
- 	- $(RANLIB) libccolamd.a 
- 
-+libccolamd.so.$(SOVERSION):  $(SRC) $(INC)
-+	$(CC) -fPIC $(CF) $(I) -c ../Source/ccolamd.c -o ccolamd.oo
-+	$(CC) -fPIC $(CF) $(I) -c ../Source/ccolamd.c -DDLONG -o ccolamd_l.oo
-+	$(CC) $(LDFLAGS) -shared *.oo -lm ../../SuiteSparse_config/libsuitesparseconfig.so -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libccolamd.so
-+
- ccode: libccolamd.a
- 
- library: libccolamd.a
---- a/CHOLMOD/Lib/Makefile
-+++ b/CHOLMOD/Lib/Makefile
-@@ -50,7 +50,9 @@ I = -I../../AMD/Include -I../../AMD/Sour
- 
- C = $(CC) $(CF) $(CHOLMOD_CONFIG) $(CONFIG)
- 
--all: libcholmod.a
-+SOVERSION = $(shell perl ../../debian/library-soname.pl CHOLMOD | sed 's/libcholmod//')
-+
-+all: libcholmod.a libcholmod.so.$(SOVERSION)
- 
- library: libcholmod.a
- 
-@@ -91,34 +93,44 @@ CORE = cholmod_aat.o cholmod_add.o cholm
- 	cholmod_memory.o cholmod_sparse.o \
- 	cholmod_transpose.o cholmod_triplet.o \
-         cholmod_version.o
-+CORE_SL = $(subst .o,.oo,$(CORE))
- 
- CHECK = cholmod_check.o cholmod_read.o cholmod_write.o
-+CHECK_SL = $(subst .o,.oo,$(CHECK))
- 
- CHOLESKY = cholmod_amd.o cholmod_analyze.o cholmod_colamd.o \
- 	cholmod_etree.o cholmod_factorize.o cholmod_postorder.o \
- 	cholmod_rcond.o cholmod_resymbol.o cholmod_rowcolcounts.o \
- 	cholmod_rowfac.o cholmod_solve.o cholmod_spsolve.o
-+CHOLESKY_SL = $(subst .o,.oo,$(CHOLESKY))
- 
- MATRIXOPS = cholmod_drop.o cholmod_horzcat.o cholmod_norm.o \
- 	cholmod_scale.o cholmod_sdmult.o cholmod_ssmult.o \
- 	cholmod_submatrix.o cholmod_vertcat.o cholmod_symmetry.o
-+MATRIXOPS_SL = $(subst .o,.oo,$(MATRIXOPS))
- 
- PARTITION = cholmod_ccolamd.o cholmod_csymamd.o \
- 	cholmod_metis.o cholmod_nesdis.o cholmod_camd.o
-+PARTITION_SL = $(subst .o,.oo,$(PARTITION))
- 
- MODIFY = cholmod_rowadd.o cholmod_rowdel.o cholmod_updown.o
-+MODIFY_SL = $(subst .o,.oo,$(MODIFY))
- 
- SUPERNODAL = cholmod_super_numeric.o cholmod_super_solve.o \
- 	cholmod_super_symbolic.o
-+SUPERNODAL_SL = $(subst .o,.oo,$(SUPERNODAL))
- 
- ifneq ($(GPU_CONFIG),)
- GPU = cholmod_gpu.o cholmod_gpu_kernels.o
- else
- GPU =
- endif
-+GPU_SL = $(subst .o,.oo,$(GPU))
- 
- DI = $(CORE) $(CHECK) $(CHOLESKY) $(MATRIXOPS) $(MODIFY) $(SUPERNODAL) \
- 	$(GPU) $(PARTITION) 
-+DI_SL = $(CORE_SL) $(CHECK_SL) $(CHOLESKY_SL) $(MATRIXOPS_SL) $(MODIFY_SL) \
-+	$(SUPERNODAL_SL) $(GPU_SL) $(PARTITION_SL)
- 
- #-------------------------------------------------------------------------------
- # CHOLMOD library modules (long, double)
-@@ -130,45 +142,60 @@ LCORE = cholmod_l_aat.o cholmod_l_add.o
- 	cholmod_l_factor.o cholmod_l_memory.o \
- 	cholmod_l_sparse.o cholmod_l_transpose.o cholmod_l_triplet.o \
-         cholmod_l_version.o
-+LCORE_SL = $(subst .o,.oo,$(LCORE))
- 
- LCHECK = cholmod_l_check.o cholmod_l_read.o cholmod_l_write.o
-+LCHECK_SL = $(subst .o,.oo,$(LCHECK))
- 
- LCHOLESKY = cholmod_l_amd.o cholmod_l_analyze.o cholmod_l_colamd.o \
- 	cholmod_l_etree.o cholmod_l_factorize.o cholmod_l_postorder.o \
- 	cholmod_l_rcond.o cholmod_l_resymbol.o cholmod_l_rowcolcounts.o \
- 	cholmod_l_rowfac.o cholmod_l_solve.o cholmod_l_spsolve.o
-+LCHOLESKY_SL = $(subst .o,.oo,$(LCHOLESKY))
- 
- LMATRIXOPS = cholmod_l_drop.o cholmod_l_horzcat.o cholmod_l_norm.o \
- 	cholmod_l_scale.o cholmod_l_sdmult.o cholmod_l_ssmult.o \
- 	cholmod_l_submatrix.o cholmod_l_vertcat.o cholmod_l_symmetry.o
-+LMATRIXOPS_SL = $(subst .o,.oo,$(LMATRIXOPS))
- 
- LPARTITION = cholmod_l_ccolamd.o cholmod_l_csymamd.o \
- 	cholmod_l_metis.o cholmod_l_nesdis.o cholmod_l_camd.o
-+LPARTITION_SL = $(subst .o,.oo,$(LPARTITION))
- 
- LMODIFY = cholmod_l_rowadd.o cholmod_l_rowdel.o cholmod_l_updown.o
-+LMODIFY_SL = $(subst .o,.oo,$(LMODIFY))
- 
- LSUPERNODAL = cholmod_l_super_numeric.o cholmod_l_super_solve.o \
- 	cholmod_l_super_symbolic.o
-+LSUPERNODAL_SL = $(subst .o,.oo,$(LSUPERNODAL))
- 
- ifneq ($(GPU_CONFIG),)
- LGPU = cholmod_l_gpu.o cholmod_gpu_kernels.o
- else
- LGPU =
- endif
-+LGPU_SL = $(subst .o,.oo,$(LGPU))
- 
- DL = $(LCORE) $(LCHECK) $(LCHOLESKY) $(LMATRIXOPS) $(LMODIFY) $(LSUPERNODAL) \
- 	$(LPARTITION) $(LGPU)
-+DL_SL = $(LCORE_SL) $(LCHECK_SL) $(LCHOLESKY_SL) $(LMATRIXOPS_SL) \
-+	$(LMODIFY_SL) $(LSUPERNODAL_SL) $(LPARTITION_SL) $(LGPU_SL)
- 
- #-------------------------------------------------------------------------------
- 
- # to compile just the double/int version, use OBJ = $(DI)
- OBJ = $(DI) $(DL)
-+OBJ_SL = $(DI_SL) $(DL_SL)
- 
- libcholmod.a: $(OBJ)
- 	$(ARCHIVE)  libcholmod.a $(OBJ)
- 	- $(RANLIB) libcholmod.a
- 
--$(OBJ): $(INC)
-+libcholmod.so.$(SOVERSION): $(OBJ_SL)
-+	$(CC) $(LDFLAGS) -shared $^ -lblas -llapack ../../AMD/Lib/libamd.so ../../COLAMD/Lib/libcolamd.so ../../CAMD/Lib/libcamd.so ../../CCOLAMD/Lib/libccolamd.so -lm ../../SuiteSparse_config/libsuitesparseconfig.so -lrt -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libcholmod.so
-+
-+$(OBJ) $(OBJ_SL): $(INC)
- 
- #-------------------------------------------------------------------------------
- # Check Module:
-@@ -176,23 +203,35 @@ $(OBJ): $(INC)
- 
- cholmod_check.o: ../Check/cholmod_check.c
- 	$(C) -c $(I) $<
-+cholmod_check.oo: ../Check/cholmod_check.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_read.o: ../Check/cholmod_read.c
- 	$(C) -c $(I) $<
-+cholmod_read.oo: ../Check/cholmod_read.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_write.o: ../Check/cholmod_write.c
- 	$(C) -c $(I) $<
-+cholmod_write.oo: ../Check/cholmod_write.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- 
- cholmod_l_check.o: ../Check/cholmod_check.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_check.oo: ../Check/cholmod_check.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_read.o: ../Check/cholmod_read.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_read.oo: ../Check/cholmod_read.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_write.o: ../Check/cholmod_write.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_write.oo: ../Check/cholmod_write.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- 
- #-------------------------------------------------------------------------------
-@@ -201,97 +240,159 @@ cholmod_l_write.o: ../Check/cholmod_writ
- 
- cholmod_common.o: ../Core/cholmod_common.c
- 	$(C) -c $(I) $<
-+cholmod_common.oo: ../Core/cholmod_common.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_dense.o: ../Core/cholmod_dense.c ../Core/t_cholmod_dense.c
- 	$(C) -c $(I) $<
-+cholmod_dense.oo: ../Core/cholmod_dense.c ../Core/t_cholmod_dense.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_factor.o: ../Core/cholmod_factor.c
- 	$(C) -c $(I) $<
-+cholmod_factor.oo: ../Core/cholmod_factor.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_change_factor.o: ../Core/cholmod_change_factor.c \
- 	../Core/t_cholmod_change_factor.c
- 	$(C) -c $(I) $<
-+cholmod_change_factor.oo: ../Core/cholmod_change_factor.c \
-+	../Core/t_cholmod_change_factor.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_memory.o: ../Core/cholmod_memory.c
- 	$(C) -c $(I) $<
-+cholmod_memory.oo: ../Core/cholmod_memory.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_sparse.o: ../Core/cholmod_sparse.c
- 	$(C) -c $(I) $<
-+cholmod_sparse.oo: ../Core/cholmod_sparse.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_complex.o: ../Core/cholmod_complex.c
- 	$(C) -c $(I) $<
-+cholmod_complex.oo: ../Core/cholmod_complex.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_transpose.o: ../Core/cholmod_transpose.c ../Core/t_cholmod_transpose.c
- 	$(C) -c $(I) $<
-+cholmod_transpose.oo: ../Core/cholmod_transpose.c ../Core/t_cholmod_transpose.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_band.o: ../Core/cholmod_band.c
- 	$(C) -c $(I) $<
-+cholmod_band.oo: ../Core/cholmod_band.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_copy.o: ../Core/cholmod_copy.c
- 	$(C) -c $(I) $<
-+cholmod_copy.oo: ../Core/cholmod_copy.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_triplet.o: ../Core/cholmod_triplet.c ../Core/t_cholmod_triplet.c
- 	$(C) -c $(I) $<
-+cholmod_triplet.oo: ../Core/cholmod_triplet.c ../Core/t_cholmod_triplet.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_error.o: ../Core/cholmod_error.c
- 	$(C) -c $(I) $<
-+cholmod_error.oo: ../Core/cholmod_error.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_aat.o: ../Core/cholmod_aat.c
- 	$(C) -c $(I) $<
-+cholmod_aat.oo: ../Core/cholmod_aat.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_add.o: ../Core/cholmod_add.c
- 	$(C) -c $(I) $<
-+cholmod_add.oo: ../Core/cholmod_add.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_version.o: ../Core/cholmod_version.c
- 	$(C) -c $(I) $<
-+cholmod_version.oo: ../Core/cholmod_version.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- 
- cholmod_l_common.o: ../Core/cholmod_common.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_common.oo: ../Core/cholmod_common.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_dense.o: ../Core/cholmod_dense.c ../Core/t_cholmod_dense.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_dense.oo: ../Core/cholmod_dense.c ../Core/t_cholmod_dense.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_factor.o: ../Core/cholmod_factor.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_factor.oo: ../Core/cholmod_factor.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_change_factor.o: ../Core/cholmod_change_factor.c \
- 	../Core/t_cholmod_change_factor.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_change_factor.oo: ../Core/cholmod_change_factor.c \
-+	../Core/t_cholmod_change_factor.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_memory.o: ../Core/cholmod_memory.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_memory.oo: ../Core/cholmod_memory.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_sparse.o: ../Core/cholmod_sparse.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_sparse.oo: ../Core/cholmod_sparse.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_complex.o: ../Core/cholmod_complex.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_complex.oo: ../Core/cholmod_complex.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_transpose.o: ../Core/cholmod_transpose.c ../Core/t_cholmod_transpose.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_transpose.oo: ../Core/cholmod_transpose.c ../Core/t_cholmod_transpose.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_band.o: ../Core/cholmod_band.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_band.oo: ../Core/cholmod_band.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_copy.o: ../Core/cholmod_copy.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_copy.oo: ../Core/cholmod_copy.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_triplet.o: ../Core/cholmod_triplet.c ../Core/t_cholmod_triplet.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_triplet.oo: ../Core/cholmod_triplet.c ../Core/t_cholmod_triplet.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_error.o: ../Core/cholmod_error.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_error.oo: ../Core/cholmod_error.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_aat.o: ../Core/cholmod_aat.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_aat.oo: ../Core/cholmod_aat.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_add.o: ../Core/cholmod_add.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_add.oo: ../Core/cholmod_add.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_version.o: ../Core/cholmod_version.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_version.oo: ../Core/cholmod_version.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- 
- #-------------------------------------------------------------------------------
-@@ -300,79 +401,129 @@ cholmod_l_version.o: ../Core/cholmod_ver
- 
- cholmod_amd.o: ../Cholesky/cholmod_amd.c
- 	$(C) -c $(I) $<
-+cholmod_amd.oo: ../Cholesky/cholmod_amd.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_analyze.o: ../Cholesky/cholmod_analyze.c
- 	$(C) -c $(I) $<
-+cholmod_analyze.oo: ../Cholesky/cholmod_analyze.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_colamd.o: ../Cholesky/cholmod_colamd.c
- 	$(C) -c $(I) $<
-+cholmod_colamd.oo: ../Cholesky/cholmod_colamd.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_etree.o: ../Cholesky/cholmod_etree.c
- 	$(C) -c $(I) $<
-+cholmod_etree.oo: ../Cholesky/cholmod_etree.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_factorize.o: ../Cholesky/cholmod_factorize.c
- 	$(C) -c $(I) $<
-+cholmod_factorize.oo: ../Cholesky/cholmod_factorize.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_postorder.o: ../Cholesky/cholmod_postorder.c
- 	$(C) -c $(I) $<
-+cholmod_postorder.oo: ../Cholesky/cholmod_postorder.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_rcond.o: ../Cholesky/cholmod_rcond.c
- 	$(C) -c $(I) $<
-+cholmod_rcond.oo: ../Cholesky/cholmod_rcond.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_resymbol.o: ../Cholesky/cholmod_resymbol.c
- 	$(C) -c $(I) $<
-+cholmod_resymbol.oo: ../Cholesky/cholmod_resymbol.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_rowcolcounts.o: ../Cholesky/cholmod_rowcolcounts.c
- 	$(C) -c $(I) $<
-+cholmod_rowcolcounts.oo: ../Cholesky/cholmod_rowcolcounts.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_solve.o: ../Cholesky/cholmod_solve.c ../Cholesky/t_cholmod_lsolve.c \
- 	../Cholesky/t_cholmod_ltsolve.c ../Cholesky/t_cholmod_solve.c
- 	$(C) -c $(I) $<
-+cholmod_solve.oo: ../Cholesky/cholmod_solve.c ../Cholesky/t_cholmod_lsolve.c \
-+	../Cholesky/t_cholmod_ltsolve.c ../Cholesky/t_cholmod_solve.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_spsolve.o: ../Cholesky/cholmod_spsolve.c
- 	$(C) -c $(I) $<
-+cholmod_spsolve.oo: ../Cholesky/cholmod_spsolve.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_rowfac.o: ../Cholesky/cholmod_rowfac.c ../Cholesky/t_cholmod_rowfac.c
- 	$(C) -c $(I) $<
-+cholmod_rowfac.oo: ../Cholesky/cholmod_rowfac.c ../Cholesky/t_cholmod_rowfac.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- 
- cholmod_l_amd.o: ../Cholesky/cholmod_amd.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_amd.oo: ../Cholesky/cholmod_amd.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_analyze.o: ../Cholesky/cholmod_analyze.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_analyze.oo: ../Cholesky/cholmod_analyze.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_colamd.o: ../Cholesky/cholmod_colamd.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_colamd.oo: ../Cholesky/cholmod_colamd.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_etree.o: ../Cholesky/cholmod_etree.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_etree.oo: ../Cholesky/cholmod_etree.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_factorize.o: ../Cholesky/cholmod_factorize.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_factorize.oo: ../Cholesky/cholmod_factorize.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_postorder.o: ../Cholesky/cholmod_postorder.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_postorder.oo: ../Cholesky/cholmod_postorder.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_rcond.o: ../Cholesky/cholmod_rcond.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_rcond.oo: ../Cholesky/cholmod_rcond.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_resymbol.o: ../Cholesky/cholmod_resymbol.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_resymbol.oo: ../Cholesky/cholmod_resymbol.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_rowcolcounts.o: ../Cholesky/cholmod_rowcolcounts.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_rowcolcounts.oo: ../Cholesky/cholmod_rowcolcounts.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_solve.o: ../Cholesky/cholmod_solve.c ../Cholesky/t_cholmod_lsolve.c \
- 	../Cholesky/t_cholmod_ltsolve.c ../Cholesky/t_cholmod_solve.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_solve.oo: ../Cholesky/cholmod_solve.c ../Cholesky/t_cholmod_lsolve.c \
-+	../Cholesky/t_cholmod_ltsolve.c ../Cholesky/t_cholmod_solve.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_spsolve.o: ../Cholesky/cholmod_spsolve.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_spsolve.oo: ../Cholesky/cholmod_spsolve.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_rowfac.o: ../Cholesky/cholmod_rowfac.c ../Cholesky/t_cholmod_rowfac.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_rowfac.oo: ../Cholesky/cholmod_rowfac.c ../Cholesky/t_cholmod_rowfac.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- # Partition Module:
-@@ -380,35 +531,55 @@ cholmod_l_rowfac.o: ../Cholesky/cholmod_
- 
- cholmod_ccolamd.o: ../Partition/cholmod_ccolamd.c
- 	$(C) -c $(I) $<
-+cholmod_ccolamd.oo: ../Partition/cholmod_ccolamd.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_csymamd.o: ../Partition/cholmod_csymamd.c
- 	$(C) -c $(I) $<
-+cholmod_csymamd.oo: ../Partition/cholmod_csymamd.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_camd.o: ../Partition/cholmod_camd.c
- 	$(C) -c $(I) $<
-+cholmod_camd.oo: ../Partition/cholmod_camd.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_metis.o: ../Partition/cholmod_metis.c
- 	$(C) -c $(I) $<
-+cholmod_metis.oo: ../Partition/cholmod_metis.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_nesdis.o: ../Partition/cholmod_nesdis.c
- 	$(C) -c $(I) $<
-+cholmod_nesdis.oo: ../Partition/cholmod_nesdis.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- 
- cholmod_l_ccolamd.o: ../Partition/cholmod_ccolamd.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_ccolamd.oo: ../Partition/cholmod_ccolamd.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_csymamd.o: ../Partition/cholmod_csymamd.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_csymamd.oo: ../Partition/cholmod_csymamd.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_camd.o: ../Partition/cholmod_camd.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_camd.oo: ../Partition/cholmod_camd.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_metis.o: ../Partition/cholmod_metis.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_metis.oo: ../Partition/cholmod_metis.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_nesdis.o: ../Partition/cholmod_nesdis.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_nesdis.oo: ../Partition/cholmod_nesdis.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- 
- #-------------------------------------------------------------------------------
-@@ -417,61 +588,99 @@ cholmod_l_nesdis.o: ../Partition/cholmod
- 
- cholmod_horzcat.o: ../MatrixOps/cholmod_horzcat.c
- 	$(C) -c $(I) $<
-+cholmod_horzcat.oo: ../MatrixOps/cholmod_horzcat.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_norm.o: ../MatrixOps/cholmod_norm.c
- 	$(C) -c $(I) $<
-+cholmod_norm.oo: ../MatrixOps/cholmod_norm.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_scale.o: ../MatrixOps/cholmod_scale.c
- 	$(C) -c $(I) $<
-+cholmod_scale.oo: ../MatrixOps/cholmod_scale.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_drop.o: ../MatrixOps/cholmod_drop.c
- 	$(C) -c $(I) $<
-+cholmod_drop.oo: ../MatrixOps/cholmod_drop.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_sdmult.o: ../MatrixOps/cholmod_sdmult.c \
- 	../MatrixOps/t_cholmod_sdmult.c
- 	$(C) -c $(I) $<
-+cholmod_sdmult.oo: ../MatrixOps/cholmod_sdmult.c \
-+	../MatrixOps/t_cholmod_sdmult.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_ssmult.o: ../MatrixOps/cholmod_ssmult.c
- 	$(C) -c $(I) $<
-+cholmod_ssmult.oo: ../MatrixOps/cholmod_ssmult.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_submatrix.o: ../MatrixOps/cholmod_submatrix.c
- 	$(C) -c $(I) $<
-+cholmod_submatrix.oo: ../MatrixOps/cholmod_submatrix.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_vertcat.o: ../MatrixOps/cholmod_vertcat.c
- 	$(C) -c $(I) $<
-+cholmod_vertcat.oo: ../MatrixOps/cholmod_vertcat.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_symmetry.o: ../MatrixOps/cholmod_symmetry.c
- 	$(C) -c $(I) $<
-+cholmod_symmetry.oo: ../MatrixOps/cholmod_symmetry.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- 
- cholmod_l_horzcat.o: ../MatrixOps/cholmod_horzcat.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_horzcat.oo: ../MatrixOps/cholmod_horzcat.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_norm.o: ../MatrixOps/cholmod_norm.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_norm.oo: ../MatrixOps/cholmod_norm.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_scale.o: ../MatrixOps/cholmod_scale.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_scale.oo: ../MatrixOps/cholmod_scale.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_drop.o: ../MatrixOps/cholmod_drop.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_drop.oo: ../MatrixOps/cholmod_drop.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_sdmult.o: ../MatrixOps/cholmod_sdmult.c \
- 	../MatrixOps/t_cholmod_sdmult.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_sdmult.oo: ../MatrixOps/cholmod_sdmult.c \
-+	../MatrixOps/t_cholmod_sdmult.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_ssmult.o: ../MatrixOps/cholmod_ssmult.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_ssmult.oo: ../MatrixOps/cholmod_ssmult.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_submatrix.o: ../MatrixOps/cholmod_submatrix.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_submatrix.oo: ../MatrixOps/cholmod_submatrix.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_vertcat.o: ../MatrixOps/cholmod_vertcat.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_vertcat.oo: ../MatrixOps/cholmod_vertcat.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_symmetry.o: ../MatrixOps/cholmod_symmetry.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_symmetry.oo: ../MatrixOps/cholmod_symmetry.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- # Modify Module:
-@@ -479,25 +688,39 @@ cholmod_l_symmetry.o: ../MatrixOps/cholm
- 
- cholmod_rowadd.o: ../Modify/cholmod_rowadd.c
- 	$(C) -c $(I) $<
-+cholmod_rowadd.oo: ../Modify/cholmod_rowadd.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_rowdel.o: ../Modify/cholmod_rowdel.c
- 	$(C) -c $(I) $<
-+cholmod_rowdel.oo: ../Modify/cholmod_rowdel.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_updown.o: ../Modify/cholmod_updown.c \
- 	../Modify/t_cholmod_updown.c ../Modify/t_cholmod_updown_numkr.c
- 	$(C) -c $(I) $<
-+cholmod_updown.oo: ../Modify/cholmod_updown.c \
-+	../Modify/t_cholmod_updown.c ../Modify/t_cholmod_updown_numkr.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- 
- cholmod_l_rowadd.o: ../Modify/cholmod_rowadd.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_rowadd.oo: ../Modify/cholmod_rowadd.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_rowdel.o: ../Modify/cholmod_rowdel.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_rowdel.oo: ../Modify/cholmod_rowdel.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_updown.o: ../Modify/cholmod_updown.c \
- 	../Modify/t_cholmod_updown.c ../Modify/t_cholmod_updown_numkr.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_updown.oo: ../Modify/cholmod_updown.c \
-+	../Modify/t_cholmod_updown.c ../Modify/t_cholmod_updown_numkr.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- 
- #-------------------------------------------------------------------------------
-@@ -508,26 +731,43 @@ cholmod_super_numeric.o: ../Supernodal/c
-         ../GPU/t_cholmod_gpu.c \
- 	../Supernodal/t_cholmod_super_numeric.c
- 	$(C) -c $(I) $<
-+cholmod_super_numeric.oo: ../Supernodal/cholmod_super_numeric.c \
-+        ../GPU/t_cholmod_gpu.c \
-+	../Supernodal/t_cholmod_super_numeric.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_super_symbolic.o: ../Supernodal/cholmod_super_symbolic.c
- 	$(C) -c $(I) $<
-+cholmod_super_symbolic.oo: ../Supernodal/cholmod_super_symbolic.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_super_solve.o: ../Supernodal/cholmod_super_solve.c \
- 	../Supernodal/t_cholmod_super_solve.c
- 	$(C) -c $(I) $<
-+cholmod_super_solve.oo: ../Supernodal/cholmod_super_solve.c \
-+	../Supernodal/t_cholmod_super_solve.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- 
- cholmod_l_super_numeric.o: ../Supernodal/cholmod_super_numeric.c \
- 	../Supernodal/t_cholmod_super_numeric.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_super_numeric.oo: ../Supernodal/cholmod_super_numeric.c \
-+	../Supernodal/t_cholmod_super_numeric.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_super_symbolic.o: ../Supernodal/cholmod_super_symbolic.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_super_symbolic.oo: ../Supernodal/cholmod_super_symbolic.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- cholmod_l_super_solve.o: ../Supernodal/cholmod_super_solve.c \
- 	../Supernodal/t_cholmod_super_solve.c
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_super_solve.oo: ../Supernodal/cholmod_super_solve.c \
-+	../Supernodal/t_cholmod_super_solve.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- # GPU module
-@@ -535,10 +775,16 @@ cholmod_l_super_solve.o: ../Supernodal/c
- 
- cholmod_gpu_kernels.o: ../GPU/cholmod_gpu_kernels.cu
- 	$(NVCC) -I../../SuiteSparse_config -Xcompiler -fPIC -O3  -gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_30,code=sm_30 -gencode=arch=compute_35,code=sm_35 -c ../GPU/cholmod_gpu_kernels.cu
-+cholmod_gpu_kernels.oo: ../GPU/cholmod_gpu_kernels.cu
-+	$(NVCC) -I../../SuiteSparse_config -Xcompiler -fPIC -O3  -gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_30,code=sm_30 -gencode=arch=compute_35,code=sm_35 -c ../GPU/cholmod_gpu_kernels.cu -o $@
- 
- cholmod_gpu.o: ../GPU/cholmod_gpu.c 
- 	$(C) -c $(I) $<
-+cholmod_gpu.oo: ../GPU/cholmod_gpu.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- cholmod_l_gpu.o: ../GPU/cholmod_gpu.c 
- 	$(C) -DDLONG -c $(I) $< -o $@
-+cholmod_l_gpu.oo: ../GPU/cholmod_gpu.c
-+	$(C) -fPIC -DDLONG -c $(I) $< -o $@
- 
---- a/COLAMD/Lib/Makefile
-+++ b/COLAMD/Lib/Makefile
-@@ -2,7 +2,9 @@
- # COLAMD Makefile
- #-------------------------------------------------------------------------------
- 
--default: libcolamd.a
-+SOVERSION = $(shell perl ../../debian/library-soname.pl COLAMD | sed 's/libcolamd//')
-+
-+default: libcolamd.a libcolamd.so.$(SOVERSION)
- 
- include ../../SuiteSparse_config/SuiteSparse_config.mk
- 
-@@ -19,6 +21,12 @@ libcolamd.a:  $(SRC) $(INC)
- 	$(ARCHIVE)  libcolamd.a colamd.o colamd_l.o
- 	- $(RANLIB) libcolamd.a
- 
-+libcolamd.so.$(SOVERSION):  $(SRC) $(INC)
-+	$(CC) -fPIC $(CF) $(I) -c ../Source/colamd.c -o colamd.oo
-+	$(CC) -fPIC $(CF) $(I) -c ../Source/colamd.c -DDLONG -o colamd_l.oo
-+	$(CC) $(LDFLAGS) -shared *.oo -lm ../../SuiteSparse_config/libsuitesparseconfig.so -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libcolamd.so
-+
- ccode: libcolamd.a
- 
- library: libcolamd.a
---- a/CSparse/Lib/Makefile
-+++ b/CSparse/Lib/Makefile
-@@ -3,7 +3,11 @@ I = -I../Include
- RANLIB = ranlib
- ARCHIVE = $(AR) $(ARFLAGS)
- 
--all: libcsparse.a
-+C = $(CC) $(CF) -I../Include
-+
-+SOVERSION = $(shell perl ../../debian/library-soname.pl CSparse | sed 's/libcsparse//')
-+
-+all: libcsparse.a libcsparse.so.$(SOVERSION)
- 
- CS = cs_add.o cs_amd.o cs_chol.o cs_cholsol.o cs_counts.o cs_cumsum.o \
- 	cs_droptol.o cs_dropzeros.o cs_dupl.o cs_entry.o \
-@@ -14,16 +18,25 @@ CS = cs_add.o cs_amd.o cs_chol.o cs_chol
- 	cs_transpose.o cs_compress.o cs_usolve.o cs_utsolve.o cs_scc.o \
- 	cs_maxtrans.o cs_dmperm.o cs_updown.o cs_print.o cs_norm.o cs_load.o \
- 	cs_dfs.o cs_reach.o cs_spsolve.o cs_ereach.o cs_leaf.o cs_randperm.o
-+CS_SL = $(subst .o,.oo,$(CS))
- 
- $(CS): ../Include/cs.h Makefile
-+$(CS_SL): ../Include/cs.h Makefile
- 
- %.o: ../Source/%.c ../Include/cs.h
--	$(CC) $(CF) $(I) -c $<
-+	$(C) -c $<
-+%.oo: ../Source/%.c ../Include/cs.h
-+	$(C) -fPIC -c $< -o $@
- 
- libcsparse.a: $(CS)
- 	$(ARCHIVE)  libcsparse.a $(CS)
- 	- $(RANLIB) libcsparse.a
- 
-+libcsparse.so.$(SOVERSION): $(CS_SL)
-+	$(CC) $(LDFLAGS) -shared $^ -lm -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libcsparse.so
-+
-+
- clean:
- 	- $(RM) *.o
- 
---- a/CXSparse/Lib/Makefile
-+++ b/CXSparse/Lib/Makefile
-@@ -7,7 +7,9 @@ include ../../SuiteSparse_config/SuiteSp
- 
- I = -I../../SuiteSparse_config -I../Include
- 
--all: libcxsparse.a
-+SOVERSION = $(shell perl ../../debian/library-soname.pl CXSparse | sed 's/libcxsparse//')
-+
-+all: libcxsparse.a libcxsparse.so.$(SOVERSION)
- 
- CS_SOURCE = cs_add.c cs_amd.c cs_chol.c cs_cholsol.c cs_counts.c cs_cumsum.c \
- 	cs_droptol.c cs_dropzeros.c cs_dupl.c cs_entry.c \
-@@ -30,6 +32,7 @@ CS_DI_OBJ =  cs_add_di.o cs_amd_di.o cs_
- 	cs_scc_di.o cs_maxtrans_di.o cs_dmperm_di.o cs_updown_di.o cs_print_di.o \
- 	cs_norm_di.o cs_load_di.o cs_dfs_di.o cs_reach_di.o cs_spsolve_di.o \
- 	cs_leaf_di.o cs_ereach_di.o cs_randperm_di.o
-+CS_DI_OBJ_SL = $(subst .o,.oo,$(CS_DI_OBJ))
- 
- CS_DL_OBJ =  cs_add_dl.o cs_amd_dl.o cs_chol_dl.o cs_cholsol_dl.o cs_counts_dl.o \
- 	cs_cumsum_dl.o cs_droptol_dl.o cs_dropzeros_dl.o cs_dupl_dl.o \
-@@ -42,6 +45,7 @@ CS_DL_OBJ =  cs_add_dl.o cs_amd_dl.o cs_
- 	cs_scc_dl.o cs_maxtrans_dl.o cs_dmperm_dl.o cs_updown_dl.o cs_print_dl.o \
- 	cs_norm_dl.o cs_load_dl.o cs_dfs_dl.o cs_reach_dl.o cs_spsolve_dl.o \
- 	cs_leaf_dl.o cs_ereach_dl.o cs_randperm_dl.o
-+CS_DL_OBJ_SL = $(subst .o,.oo,$(CS_DL_OBJ))
- 
- CS_CI_OBJ =  cs_add_ci.o cs_amd_ci.o cs_chol_ci.o cs_cholsol_ci.o cs_counts_ci.o \
- 	cs_cumsum_ci.o cs_droptol_ci.o cs_dropzeros_ci.o cs_dupl_ci.o \
-@@ -54,6 +58,7 @@ CS_CI_OBJ =  cs_add_ci.o cs_amd_ci.o cs_
- 	cs_scc_ci.o cs_maxtrans_ci.o cs_dmperm_ci.o cs_updown_ci.o cs_print_ci.o \
- 	cs_norm_ci.o cs_load_ci.o cs_dfs_ci.o cs_reach_ci.o cs_spsolve_ci.o \
- 	cs_leaf_ci.o cs_ereach_ci.o cs_randperm_ci.o
-+CS_CI_OBJ_SL = $(subst .o,.oo,$(CS_CI_OBJ))
- 
- CS_CL_OBJ =  cs_add_cl.o cs_amd_cl.o cs_chol_cl.o cs_cholsol_cl.o cs_counts_cl.o \
- 	cs_cumsum_cl.o cs_droptol_cl.o cs_dropzeros_cl.o cs_dupl_cl.o \
-@@ -66,30 +71,47 @@ CS_CL_OBJ =  cs_add_cl.o cs_amd_cl.o cs_
- 	cs_scc_cl.o cs_maxtrans_cl.o cs_dmperm_cl.o cs_updown_cl.o cs_print_cl.o \
- 	cs_norm_cl.o cs_load_cl.o cs_dfs_cl.o cs_reach_cl.o cs_spsolve_cl.o \
- 	cs_leaf_cl.o cs_ereach_cl.o cs_randperm_cl.o
-+CS_CL_OBJ_SL = $(subst .o,.oo,$(CS_CL_OBJ))
- 
- CS = cs_convert.o $(CS_DI_OBJ) $(CS_DL_OBJ) $(CS_CI_OBJ) $(CS_CL_OBJ)
-+CS_SL = cs_convert.oo $(CS_DI_OBJ_SL) $(CS_DL_OBJ_SL) $(CS_CI_OBJ_SL) $(CS_CL_OBJ_SL)
- 
- $(CS): ../Include/cs.h Makefile
- 
- cs_convert.o: ../Source/cs_convert.c
- 	$(CC) $(CF) $(I) -c $< -o $@
-+cs_convert.oo: ../Source/cs_convert.c
-+	$(CC) -fPIC $(CF) $(I) -c $< -o $@
- 
- %_di.o : ../Source/%.c
- 	$(CC) $(CF) $(I) -c $< -o $@
-+%_di.oo : ../Source/%.c
-+	$(CC) -fPIC $(CF) $(I) -c $< -o $@
- 
- %_dl.o : ../Source/%.c
- 	$(CC) $(CF) $(I) -DCS_LONG -c $< -o $@
-+%_dl.oo : ../Source/%.c
-+	$(CC) -fPIC $(CF) $(I) -DCS_LONG -c $< -o $@
- 
- %_ci.o : ../Source/%.c
- 	$(CC) $(CF) $(I) -DCS_COMPLEX -c $< -o $@
-+%_ci.oo : ../Source/%.c
-+	$(CC) -fPIC $(CF) $(I) -DCS_COMPLEX -c $< -o $@
- 
- %_cl.o : ../Source/%.c
- 	$(CC) $(CF) $(I) -DCS_LONG -DCS_COMPLEX -c $< -o $@
-+%_cl.oo : ../Source/%.c
-+	$(CC) -fPIC $(CF) $(I) -DCS_LONG -DCS_COMPLEX -c $< -o $@
- 
- libcxsparse.a: $(CS)
- 	$(ARCHIVE)  libcxsparse.a $(CS)
- 	- $(RANLIB) libcxsparse.a
- 
-+libcxsparse.so.$(SOVERSION): $(CS_SL)
-+	$(CC) $(LDFLAGS) -shared $^ -lm -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libcxsparse.so
-+
-+
- clean:
- 	- $(RM) *.o
- 
---- a/KLU/Lib/Makefile
-+++ b/KLU/Lib/Makefile
-@@ -17,132 +17,202 @@ I = -I../../AMD/Include -I../../COLAMD/I
- 
- all: library
- 
--library: libklu.a
-+SOVERSION = $(shell perl ../../debian/library-soname.pl KLU | sed 's/libklu//')
-+
-+library: libklu.a libklu.so.$(SOVERSION)
- 
- KLU_D = klu_d.o klu_d_kernel.o klu_d_dump.o \
-     klu_d_factor.o klu_d_free_numeric.o klu_d_solve.o \
-     klu_d_scale.o klu_d_refactor.o \
-     klu_d_tsolve.o klu_d_diagnostics.o klu_d_sort.o klu_d_extract.o
-+KLU_D_SL = $(subst .o,.oo,$(KLU_D))
- 
- KLU_Z = klu_z.o klu_z_kernel.o klu_z_dump.o \
-     klu_z_factor.o klu_z_free_numeric.o klu_z_solve.o \
-     klu_z_scale.o klu_z_refactor.o \
-     klu_z_tsolve.o klu_z_diagnostics.o klu_z_sort.o klu_z_extract.o
-+KLU_Z_SL = $(subst .o,.oo,$(KLU_Z))
- 
- KLU_L = klu_l.o klu_l_kernel.o klu_l_dump.o \
-     klu_l_factor.o klu_l_free_numeric.o klu_l_solve.o \
-     klu_l_scale.o klu_l_refactor.o \
-     klu_l_tsolve.o klu_l_diagnostics.o klu_l_sort.o klu_l_extract.o
-+KLU_L_SL = $(subst .o,.oo,$(KLU_L))
- 
- KLU_ZL = klu_zl.o klu_zl_kernel.o klu_zl_dump.o \
-     klu_zl_factor.o klu_zl_free_numeric.o klu_zl_solve.o \
-     klu_zl_scale.o klu_zl_refactor.o \
-     klu_zl_tsolve.o klu_zl_diagnostics.o klu_zl_sort.o klu_zl_extract.o
-+KLU_ZL_SL = $(subst .o,.oo,$(KLU_ZL))
- 
- COMMON = \
-     klu_free_symbolic.o klu_defaults.o klu_analyze_given.o \
-     klu_analyze.o klu_memory.o \
-     klu_l_free_symbolic.o klu_l_defaults.o klu_l_analyze_given.o \
-     klu_l_analyze.o klu_l_memory.o
-+COMMON_SL = $(subst .o,.oo,$(COMMON))
- 
- OBJ = $(COMMON) $(KLU_D) $(KLU_Z) $(KLU_L) $(KLU_ZL)
-+OBJ_SL = $(COMMON_SL) $(KLU_D_SL) $(KLU_Z_SL) $(KLU_L_SL) $(KLU_ZL_SL)
- 
- libklu.a: $(OBJ)
- 	$(ARCHIVE)  libklu.a $(OBJ)
- 	- $(RANLIB) libklu.a
- 
--$(OBJ): $(INC)
-+libklu.so.$(SOVERSION): $(OBJ_SL)
-+	$(CC) $(LDFLAGS) -shared $^ -lm ../../AMD/Lib/libamd.so ../../BTF/Lib/libbtf.so ../../COLAMD/Lib/libcolamd.so ../../SuiteSparse_config/libsuitesparseconfig.so -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libklu.so
-+
-+$(OBJ) $(OBJ_SL): $(INC)
- 
- #-------------------------------------------------------------------------------
- 
- klu_d.o: ../Source/klu.c
- 	$(C) -c $(I) $< -o $@
-+klu_d.oo: ../Source/klu.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_z.o: ../Source/klu.c
- 	$(C) -c -DCOMPLEX $(I) $< -o $@
-+klu_z.oo: ../Source/klu.c
-+	$(C) -fPIC -c -DCOMPLEX $(I) $< -o $@
- 
- klu_d_kernel.o: ../Source/klu_kernel.c
- 	$(C) -c $(I) $< -o $@
-+klu_d_kernel.oo: ../Source/klu_kernel.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_z_kernel.o: ../Source/klu_kernel.c
- 	$(C) -c -DCOMPLEX $(I) $< -o $@
-+klu_z_kernel.oo: ../Source/klu_kernel.c
-+	$(C) -fPIC -c -DCOMPLEX $(I) $< -o $@
- 
- klu_d_sort.o: ../Source/klu_sort.c
- 	$(C) -c $(I) $< -o $@
-+klu_d_sort.oo: ../Source/klu_sort.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_z_sort.o: ../Source/klu_sort.c
- 	$(C) -c -DCOMPLEX $(I) $< -o $@
-+klu_z_sort.oo: ../Source/klu_sort.c
-+	$(C) -fPIC -c -DCOMPLEX $(I) $< -o $@
- 
- klu_d_diagnostics.o: ../Source/klu_diagnostics.c
- 	$(C) -c $(I) $< -o $@
-+klu_d_diagnostics.oo: ../Source/klu_diagnostics.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_z_diagnostics.o: ../Source/klu_diagnostics.c
- 	$(C) -c -DCOMPLEX $(I) $< -o $@
-+klu_z_diagnostics.oo: ../Source/klu_diagnostics.c
-+	$(C) -fPIC -c -DCOMPLEX $(I) $< -o $@
- 
- klu_d_dump.o: ../Source/klu_dump.c
- 	$(C) -c $(I) $< -o $@
-+klu_d_dump.oo: ../Source/klu_dump.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_z_dump.o: ../Source/klu_dump.c
- 	$(C) -c -DCOMPLEX $(I) $< -o $@
-+klu_z_dump.oo: ../Source/klu_dump.c
-+	$(C) -fPIC -c -DCOMPLEX $(I) $< -o $@
- 
- klu_d_factor.o: ../Source/klu_factor.c
- 	$(C) -c $(I) $< -o $@
-+klu_d_factor.oo: ../Source/klu_factor.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_z_factor.o: ../Source/klu_factor.c
- 	$(C) -c -DCOMPLEX $(I) $< -o $@
-+klu_z_factor.oo: ../Source/klu_factor.c
-+	$(C) -fPIC -c -DCOMPLEX $(I) $< -o $@
- 
- klu_d_free_numeric.o: ../Source/klu_free_numeric.c
- 	$(C) -c $(I) $< -o $@
-+klu_d_free_numeric.oo: ../Source/klu_free_numeric.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_z_free_numeric.o: ../Source/klu_free_numeric.c
- 	$(C) -c -DCOMPLEX $(I) $< -o $@
-+klu_z_free_numeric.oo: ../Source/klu_free_numeric.c
-+	$(C) -fPIC -c -DCOMPLEX $(I) $< -o $@
- 
- klu_d_extract.o: ../Source/klu_extract.c
- 	$(C) -c $(I) $< -o $@
-+klu_d_extract.oo: ../Source/klu_extract.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_z_extract.o: ../Source/klu_extract.c
- 	$(C) -c -DCOMPLEX $(I) $< -o $@
-+klu_z_extract.oo: ../Source/klu_extract.c
-+	$(C) -fPIC -c -DCOMPLEX $(I) $< -o $@
- 
- klu_d_refactor.o: ../Source/klu_refactor.c
- 	$(C) -c $(I) $< -o $@
-+klu_d_refactor.oo: ../Source/klu_refactor.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_z_refactor.o: ../Source/klu_refactor.c
- 	$(C) -c -DCOMPLEX $(I) $< -o $@
-+klu_z_refactor.oo: ../Source/klu_refactor.c
-+	$(C) -fPIC -c -DCOMPLEX $(I) $< -o $@
- 
- klu_d_scale.o: ../Source/klu_scale.c
- 	$(C) -c $(I) $< -o $@
-+klu_d_scale.oo: ../Source/klu_scale.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_z_scale.o: ../Source/klu_scale.c
- 	$(C) -c -DCOMPLEX $(I) $< -o $@
-+klu_z_scale.oo: ../Source/klu_scale.c
-+	$(C) -fPIC -c -DCOMPLEX $(I) $< -o $@
- 
- klu_d_solve.o: ../Source/klu_solve.c
- 	$(C) -c $(I) $< -o $@
-+klu_d_solve.oo: ../Source/klu_solve.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_z_solve.o: ../Source/klu_solve.c
- 	$(C) -c -DCOMPLEX $(I) $< -o $@
-+klu_z_solve.oo: ../Source/klu_solve.c
-+	$(C) -fPIC -c -DCOMPLEX $(I) $< -o $@
- 
- klu_d_tsolve.o: ../Source/klu_tsolve.c
- 	$(C) -c $(I) $< -o $@
-+klu_d_tsolve.oo: ../Source/klu_tsolve.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_z_tsolve.o: ../Source/klu_tsolve.c
- 	$(C) -c -DCOMPLEX $(I) $< -o $@
-+klu_z_tsolve.oo: ../Source/klu_tsolve.c
-+	$(C) -fPIC -c -DCOMPLEX $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- 
- klu_analyze.o: ../Source/klu_analyze.c
- 	$(C) -c $(I) $< -o $@
-+klu_analyze.oo: ../Source/klu_analyze.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_analyze_given.o: ../Source/klu_analyze_given.c
- 	$(C) -c $(I) $< -o $@
-+klu_analyze_given.oo: ../Source/klu_analyze_given.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_defaults.o: ../Source/klu_defaults.c
- 	$(C) -c $(I) $< -o $@
-+klu_defaults.oo: ../Source/klu_defaults.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_free_symbolic.o: ../Source/klu_free_symbolic.c
- 	$(C) -c $(I) $< -o $@
-+klu_free_symbolic.oo: ../Source/klu_free_symbolic.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- klu_memory.o: ../Source/klu_memory.c
- 	$(C) -c $(I) $< -o $@
-+klu_memory.oo: ../Source/klu_memory.c
-+	$(C) -fPIC -c $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- 
-@@ -158,91 +228,149 @@ clean:
- 
- klu_l.o: ../Source/klu.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l.oo: ../Source/klu.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_zl.o: ../Source/klu.c
- 	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
-+klu_zl.oo: ../Source/klu.c
-+	$(C) -fPIC -c -DCOMPLEX -DDLONG $(I) $< -o $@
- 
- klu_l_kernel.o: ../Source/klu_kernel.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_kernel.oo: ../Source/klu_kernel.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_zl_kernel.o: ../Source/klu_kernel.c
- 	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
-+klu_zl_kernel.oo: ../Source/klu_kernel.c
-+	$(C) -fPIC -c -DCOMPLEX -DDLONG $(I) $< -o $@
- 
- klu_l_sort.o: ../Source/klu_sort.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_sort.oo: ../Source/klu_sort.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_zl_sort.o: ../Source/klu_sort.c
- 	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
-+klu_zl_sort.oo: ../Source/klu_sort.c
-+	$(C) -fPIC -c -DCOMPLEX -DDLONG $(I) $< -o $@
- 
- klu_l_diagnostics.o: ../Source/klu_diagnostics.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_diagnostics.oo: ../Source/klu_diagnostics.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_zl_diagnostics.o: ../Source/klu_diagnostics.c
- 	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
-+klu_zl_diagnostics.oo: ../Source/klu_diagnostics.c
-+	$(C) -fPIC -c -DCOMPLEX -DDLONG $(I) $< -o $@
- 
- klu_l_dump.o: ../Source/klu_dump.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_dump.oo: ../Source/klu_dump.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_zl_dump.o: ../Source/klu_dump.c
- 	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
-+klu_zl_dump.oo: ../Source/klu_dump.c
-+	$(C) -fPIC -c -DCOMPLEX -DDLONG $(I) $< -o $@
- 
- klu_l_factor.o: ../Source/klu_factor.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_factor.oo: ../Source/klu_factor.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_zl_factor.o: ../Source/klu_factor.c
- 	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
-+klu_zl_factor.oo: ../Source/klu_factor.c
-+	$(C) -fPIC -c -DCOMPLEX -DDLONG $(I) $< -o $@
- 
- klu_l_free_numeric.o: ../Source/klu_free_numeric.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_free_numeric.oo: ../Source/klu_free_numeric.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_zl_free_numeric.o: ../Source/klu_free_numeric.c
- 	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
-+klu_zl_free_numeric.oo: ../Source/klu_free_numeric.c
-+	$(C) -fPIC -c -DCOMPLEX -DDLONG $(I) $< -o $@
- 
- klu_l_extract.o: ../Source/klu_extract.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_extract.oo: ../Source/klu_extract.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_zl_extract.o: ../Source/klu_extract.c
- 	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
-+klu_zl_extract.oo: ../Source/klu_extract.c
-+	$(C) -fPIC -c -DCOMPLEX -DDLONG $(I) $< -o $@
- 
- klu_l_refactor.o: ../Source/klu_refactor.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_refactor.oo: ../Source/klu_refactor.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_zl_refactor.o: ../Source/klu_refactor.c
- 	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
-+klu_zl_refactor.oo: ../Source/klu_refactor.c
-+	$(C) -fPIC -c -DCOMPLEX -DDLONG $(I) $< -o $@
- 
- klu_l_scale.o: ../Source/klu_scale.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_scale.oo: ../Source/klu_scale.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_zl_scale.o: ../Source/klu_scale.c
- 	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
-+klu_zl_scale.oo: ../Source/klu_scale.c
-+	$(C) -fPIC -c -DCOMPLEX -DDLONG $(I) $< -o $@
- 
- klu_l_solve.o: ../Source/klu_solve.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_solve.oo: ../Source/klu_solve.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_zl_solve.o: ../Source/klu_solve.c
- 	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
-+klu_zl_solve.oo: ../Source/klu_solve.c
-+	$(C) -fPIC -c -DCOMPLEX -DDLONG $(I) $< -o $@
- 
- klu_l_tsolve.o: ../Source/klu_tsolve.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_tsolve.oo: ../Source/klu_tsolve.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_zl_tsolve.o: ../Source/klu_tsolve.c
- 	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
-+klu_zl_tsolve.oo: ../Source/klu_tsolve.c
-+	$(C) -fPIC -c -DCOMPLEX -DDLONG $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
- 
- klu_l_analyze.o: ../Source/klu_analyze.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_analyze.oo: ../Source/klu_analyze.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_l_analyze_given.o: ../Source/klu_analyze_given.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_analyze_given.oo: ../Source/klu_analyze_given.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_l_defaults.o: ../Source/klu_defaults.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_defaults.oo: ../Source/klu_defaults.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_l_free_symbolic.o: ../Source/klu_free_symbolic.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_free_symbolic.oo: ../Source/klu_free_symbolic.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- klu_l_memory.o: ../Source/klu_memory.c
- 	$(C) -c -DDLONG $(I) $< -o $@
-+klu_l_memory.oo: ../Source/klu_memory.c
-+	$(C) -fPIC -c -DDLONG $(I) $< -o $@
- 
- #-------------------------------------------------------------------------------
---- a/LDL/Lib/Makefile
-+++ b/LDL/Lib/Makefile
-@@ -10,7 +10,9 @@ I = -I../../SuiteSparse_config -I../Incl
- 
- C = $(CC) $(CF) $(I)
- 
--all: libldl.a
-+SOVERSION = $(shell perl ../../debian/library-soname.pl LDL | sed 's/libldl//')
-+
-+all: libldl.a libldl.so.$(SOVERSION)
- 
- #-------------------------------------------------------------------------------
- # the ldl library:
-@@ -22,6 +24,12 @@ libldl.a: ../Source/ldl.c ../Include/ldl
- 	$(ARCHIVE)  libldl.a ldl.o ldll.o
- 	- $(RANLIB) libldl.a
- 
-+libldl.so.$(SOVERSION): ../Source/ldl.c ../Include/ldl.h
-+	$(C) -fPIC -c ../Source/ldl.c -o ldl.oo
-+	$(C) -fPIC -DLDL_LONG -c ../Source/ldl.c -o ldll.oo
-+	$(C) $(LDFLAGS) -shared *.oo -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libldl.so
-+
- distclean: purge
- 
- purge: clean
---- a/SPQR/Lib/Makefile
-+++ b/SPQR/Lib/Makefile
-@@ -39,7 +39,9 @@ endif
- # 	-Wredundant-decls -Wdisabled-optimization \
- # 	-ansi -fexceptions
- 
--all: libspqr.a
-+SOVERSION = $(shell perl ../../debian/library-soname.pl SPQR | sed 's/libspqr//')
-+
-+all: libspqr.a libspqr.so.$(SOVERSION)
- 
- library: libspqr.a
- 
-@@ -104,7 +106,9 @@ OBJ += \
-     spqrgpu_computeFrontStaging.o
- endif
- 
--$(OBJ): $(INC)
-+OBJ_SL = $(subst .o,.oo,$(OBJ))
-+
-+$(OBJ) $(OBJ_SL): $(INC)
- 
- I = -I../../CHOLMOD/Include -I../../SuiteSparse_config -I../Include
- 
-@@ -120,131 +124,221 @@ libspqr.a: $(OBJ)
- 	$(ARCHIVE)  libspqr.a $(OBJ)
- 	- $(RANLIB) libspqr.a
- 
-+libspqr.so.$(SOVERSION): $(OBJ_SL)
-+	$(CC) $(LDFLAGS) -shared $^ -lm -lblas -llapack ../../CHOLMOD/Lib/libcholmod.so ../../SuiteSparse_config/libsuitesparseconfig.so -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libspqr.so
-+
- spqr_1colamd.o: ../Source/spqr_1colamd.cpp
- 	$(C) -c $<
-+spqr_1colamd.oo: ../Source/spqr_1colamd.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_1factor.o: ../Source/spqr_1factor.cpp
- 	$(C) -c $<
-+spqr_1factor.oo: ../Source/spqr_1factor.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_1fixed.o: ../Source/spqr_1fixed.cpp
- 	$(C) -c $<
-+spqr_1fixed.oo: ../Source/spqr_1fixed.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_analyze.o: ../Source/spqr_analyze.cpp
- 	$(C) -c $<
-+spqr_analyze.oo: ../Source/spqr_analyze.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_parallel.o: ../Source/spqr_parallel.cpp
- 	$(C) -c $<
-+spqr_parallel.oo: ../Source/spqr_parallel.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_kernel.o: ../Source/spqr_kernel.cpp
- 	$(C) -c $<
-+spqr_kernel.oo: ../Source/spqr_kernel.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_append.o: ../Source/spqr_append.cpp
- 	$(C) -c $<
-+spqr_append.oo: ../Source/spqr_append.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_assemble.o: ../Source/spqr_assemble.cpp
- 	$(C) -c $<
-+spqr_assemble.oo: ../Source/spqr_assemble.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_cpack.o: ../Source/spqr_cpack.cpp
- 	$(C) -c $<
-+spqr_cpack.oo: ../Source/spqr_cpack.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_csize.o: ../Source/spqr_csize.cpp
- 	$(C) -c $<
-+spqr_csize.oo: ../Source/spqr_csize.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_cumsum.o: ../Source/spqr_cumsum.cpp
- 	$(C) -c $<
-+spqr_cumsum.oo: ../Source/spqr_cumsum.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_debug.o: ../Source/spqr_debug.cpp
- 	$(C) -c $<
-+spqr_debug.oo: ../Source/spqr_debug.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_factorize.o: ../Source/spqr_factorize.cpp
- 	$(C) -c $<
-+spqr_factorize.oo: ../Source/spqr_factorize.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_fcsize.o: ../Source/spqr_fcsize.cpp
- 	$(C) -c $<
-+spqr_fcsize.oo: ../Source/spqr_fcsize.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_freefac.o: ../Source/spqr_freefac.cpp
- 	$(C) -c $<
-+spqr_freefac.oo: ../Source/spqr_freefac.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_freenum.o: ../Source/spqr_freenum.cpp
- 	$(C) -c $<
-+spqr_freenum.oo: ../Source/spqr_freenum.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_freesym.o: ../Source/spqr_freesym.cpp
- 	$(C) -c $<
-+spqr_freesym.oo: ../Source/spqr_freesym.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_fsize.o: ../Source/spqr_fsize.cpp
- 	$(C) -c $<
-+spqr_fsize.oo: ../Source/spqr_fsize.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_happly.o: ../Source/spqr_happly.cpp
- 	$(C) -c $<
-+spqr_happly.oo: ../Source/spqr_happly.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_panel.o: ../Source/spqr_panel.cpp
- 	$(C) -c $<
-+spqr_panel.oo: ../Source/spqr_panel.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_happly_work.o: ../Source/spqr_happly_work.cpp
- 	$(C) -c $<
-+spqr_happly_work.oo: ../Source/spqr_happly_work.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_hpinv.o: ../Source/spqr_hpinv.cpp
- 	$(C) -c $<
-+spqr_hpinv.oo: ../Source/spqr_hpinv.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_larftb.o: ../Source/spqr_larftb.cpp
- 	$(C) -c $<
-+spqr_larftb.oo: ../Source/spqr_larftb.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_rconvert.o: ../Source/spqr_rconvert.cpp
- 	$(C) -c $<
-+spqr_rconvert.oo: ../Source/spqr_rconvert.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_rcount.o: ../Source/spqr_rcount.cpp
- 	$(C) -c $<
-+spqr_rcount.oo: ../Source/spqr_rcount.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_rhpack.o: ../Source/spqr_rhpack.cpp
- 	$(C) -c $<
-+spqr_rhpack.oo: ../Source/spqr_rhpack.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_rsolve.o: ../Source/spqr_rsolve.cpp
- 	$(C) -c $<
-+spqr_rsolve.oo: ../Source/spqr_rsolve.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_shift.o: ../Source/spqr_shift.cpp
- 	$(C) -c $<
-+spqr_shift.oo: ../Source/spqr_shift.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_stranspose1.o: ../Source/spqr_stranspose1.cpp
- 	$(C) -c $<
-+spqr_stranspose1.oo: ../Source/spqr_stranspose1.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_stranspose2.o: ../Source/spqr_stranspose2.cpp
- 	$(C) -c $<
-+spqr_stranspose2.oo: ../Source/spqr_stranspose2.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_trapezoidal.o: ../Source/spqr_trapezoidal.cpp
- 	$(C) -c $<
-+spqr_trapezoidal.oo: ../Source/spqr_trapezoidal.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_type.o: ../Source/spqr_type.cpp
- 	$(C) -c $<
-+spqr_type.oo: ../Source/spqr_type.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_front.o: ../Source/spqr_front.cpp
- 	$(C) -c $<
-+spqr_front.oo: ../Source/spqr_front.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- SuiteSparseQR_expert.o: ../Source/SuiteSparseQR_expert.cpp
- 	$(C) -c $<
-+SuiteSparseQR_expert.oo: ../Source/SuiteSparseQR_expert.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_maxcolnorm.o: ../Source/spqr_maxcolnorm.cpp
- 	$(C) -c $<
-+spqr_maxcolnorm.oo: ../Source/spqr_maxcolnorm.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- SuiteSparseQR_qmult.o: ../Source/SuiteSparseQR_qmult.cpp
- 	$(C) -c $<
-+SuiteSparseQR_qmult.oo: ../Source/SuiteSparseQR_qmult.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- SuiteSparseQR.o: ../Source/SuiteSparseQR.cpp
- 	$(C) -c $<
-+SuiteSparseQR.oo: ../Source/SuiteSparseQR.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_tol.o: ../Source/spqr_tol.cpp
- 	$(C) -c $<
-+spqr_tol.oo: ../Source/spqr_tol.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- SuiteSparseQR_C.o: ../Source/SuiteSparseQR_C.cpp
- 	$(C) -c $<
-+SuiteSparseQR_C.oo: ../Source/SuiteSparseQR_C.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqr_rmap.o: ../Source/spqr_rmap.cpp
- 	$(C) -c $<
-+spqr_rmap.oo: ../Source/spqr_rmap.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqrgpu_kernel.o: ../SPQRGPU/spqrgpu_kernel.cpp
- 	$(C) -c $<
-+spqrgpu_kernel.oo: ../SPQRGPU/spqrgpu_kernel.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqrgpu_buildAssemblyMaps.o: ../SPQRGPU/spqrgpu_buildAssemblyMaps.cpp
- 	$(C) -c $<
-+spqrgpu_buildAssemblyMaps.oo: ../SPQRGPU/spqrgpu_buildAssemblyMaps.cpp
-+	$(C) -fPIC -c $< -o $@
- 
- spqrgpu_computeFrontStaging.o: ../SPQRGPU/spqrgpu_computeFrontStaging.cpp
- 	$(C) -c $<
-+spqrgpu_computeFrontStaging.oo: ../SPQRGPU/spqrgpu_computeFrontStaging.cpp
-+	$(C) -fPIC -c $< -o $@
---- a/UMFPACK/Lib/GNUmakefile
-+++ b/UMFPACK/Lib/GNUmakefile
-@@ -2,7 +2,9 @@
- # UMFPACK Makefile for compiling on Unix systems (for GNU Make)
- #-------------------------------------------------------------------------------
- 
--default: libumfpack.a
-+SOVERSION = $(shell perl ../../debian/library-soname.pl UMFPACK | sed 's/libumfpack//')
-+
-+default: libumfpack.a libumfpack.so.$(SOVERSION)
- 
- include ../../SuiteSparse_config/SuiteSparse_config.mk
- 
-@@ -96,15 +98,27 @@ II = $(addsuffix .o, $(subst umf_,umf_i_
- LL = $(addsuffix .o, $(subst umf_,umf_l_,$(UMFINT)))
- GN = $(addsuffix .o, $(subst umfpack_,umfpack_gn_,$(GENERIC)))
- 
-+DI_SL = $(addsuffix .oo, $(subst umf_,umf_di_,$(UMF)) $(subst umfpack_,umfpack_di_,$(USER)))
-+DL_SL = $(addsuffix .oo, $(subst umf_,umf_dl_,$(UMF)) $(subst umfpack_,umfpack_dl_,$(USER)))
-+ZI_SL = $(addsuffix .oo, $(subst umf_,umf_zi_,$(UMF)) $(subst umfpack_,umfpack_zi_,$(USER)))
-+ZL_SL = $(addsuffix .oo, $(subst umf_,umf_zl_,$(UMF)) $(subst umfpack_,umfpack_zl_,$(USER)))
-+II_SL = $(addsuffix .oo, $(subst umf_,umf_i_,$(UMFINT)))
-+LL_SL = $(addsuffix .oo, $(subst umf_,umf_l_,$(UMFINT)))
-+GN_SL = $(addsuffix .oo, $(subst umfpack_,umfpack_gn_,$(GENERIC)))
-+
- #-------------------------------------------------------------------------------
- # compile each int and SuiteSparse_long routine (with no real/complex version)
- #-------------------------------------------------------------------------------
- 
- umf_i_%.o: ../Source/umf_%.c $(INC)
- 	$(C) -DDINT -c $< -o $@
-+umf_i_%.oo: ../Source/umf_%.c $(INC)
-+	$(C) -fPIC -DDINT -c $< -o $@
- 
- umf_l_%.o: ../Source/umf_%.c $(INC)
- 	$(C) -DDLONG -c $< -o $@
-+umf_l_%.oo: ../Source/umf_%.c $(INC)
-+	$(C) -fPIC -DDLONG -c $< -o $@
- 
- #-------------------------------------------------------------------------------
- # compile each routine in the DI version
-@@ -112,33 +126,53 @@ umf_l_%.o: ../Source/umf_%.c $(INC)
- 
- umf_di_%.o: ../Source/umf_%.c $(INC)
- 	$(C) -DDINT -c $< -o $@
-+umf_di_%.oo: ../Source/umf_%.c $(INC)
-+	$(C) -fPIC -DDINT -c $< -o $@
- 
- umf_di_%hsolve.o: ../Source/umf_%tsolve.c $(INC)
- 	$(C) -DDINT -DCONJUGATE_SOLVE -c $< -o $@
-+umf_di_%hsolve.oo: ../Source/umf_%tsolve.c $(INC)
-+	$(C) -fPIC -DDINT -DCONJUGATE_SOLVE -c $< -o $@
- 
- umf_di_triplet_map_x.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DDINT -DDO_MAP -DDO_VALUES -c $< -o $@
-+umf_di_triplet_map_x.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DDINT -DDO_MAP -DDO_VALUES -c $< -o $@
- 
- umf_di_triplet_map_nox.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DDINT -DDO_MAP -c $< -o $@
-+umf_di_triplet_map_nox.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DDINT -DDO_MAP -c $< -o $@
- 
- umf_di_triplet_nomap_x.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DDINT -DDO_VALUES -c $< -o $@
-+umf_di_triplet_nomap_x.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DDINT -DDO_VALUES -c $< -o $@
- 
- umf_di_triplet_nomap_nox.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DDINT -c $< -o $@
-+umf_di_triplet_nomap_nox.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DDINT -c $< -o $@
- 
- umf_di_assemble_fixq.o: ../Source/umf_assemble.c $(INC)
- 	$(C) -DDINT -DFIXQ -c $< -o $@
-+umf_di_assemble_fixq.oo: ../Source/umf_assemble.c $(INC)
-+	$(C) -fPIC -DDINT -DFIXQ -c $< -o $@
- 
- umf_di_store_lu_drop.o: ../Source/umf_store_lu.c $(INC)
- 	$(C) -DDINT -DDROP -c $< -o $@
-+umf_di_store_lu_drop.oo: ../Source/umf_store_lu.c $(INC)
-+	$(C) -fPIC -DDINT -DDROP -c $< -o $@
- 
- umfpack_di_wsolve.o: ../Source/umfpack_solve.c $(INC)
- 	$(C) -DDINT -DWSOLVE -c $< -o $@
-+umfpack_di_wsolve.oo: ../Source/umfpack_solve.c $(INC)
-+	$(C) -fPIC -DDINT -DWSOLVE -c $< -o $@
- 
- umfpack_di_%.o: ../Source/umfpack_%.c $(INC)
- 	$(C) -DDINT -c $< -o $@
-+umfpack_di_%.oo: ../Source/umfpack_%.c $(INC)
-+	$(C) -fPIC -DDINT -c $< -o $@
- 
- #-------------------------------------------------------------------------------
- # compile each routine in the DL version
-@@ -146,33 +180,53 @@ umfpack_di_%.o: ../Source/umfpack_%.c $(
- 
- umf_dl_%.o: ../Source/umf_%.c $(INC)
- 	$(C) -DDLONG -c $< -o $@
-+umf_dl_%.oo: ../Source/umf_%.c $(INC)
-+	$(C) -fPIC -DDLONG -c $< -o $@
- 
- umf_dl_%hsolve.o: ../Source/umf_%tsolve.c $(INC)
- 	$(C) -DDLONG -DCONJUGATE_SOLVE -c $< -o $@
-+umf_dl_%hsolve.oo: ../Source/umf_%tsolve.c $(INC)
-+	$(C) -fPIC -DDLONG -DCONJUGATE_SOLVE -c $< -o $@
- 
- umf_dl_triplet_map_x.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DDLONG -DDO_MAP -DDO_VALUES -c $< -o $@
-+umf_dl_triplet_map_x.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DDLONG -DDO_MAP -DDO_VALUES -c $< -o $@
- 
- umf_dl_triplet_map_nox.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DDLONG -DDO_MAP -c $< -o $@
-+umf_dl_triplet_map_nox.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DDLONG -DDO_MAP -c $< -o $@
- 
- umf_dl_triplet_nomap_x.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DDLONG -DDO_VALUES -c $< -o $@
-+umf_dl_triplet_nomap_x.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DDLONG -DDO_VALUES -c $< -o $@
- 
- umf_dl_triplet_nomap_nox.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DDLONG -c $< -o $@
-+umf_dl_triplet_nomap_nox.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DDLONG -c $< -o $@
- 
- umf_dl_assemble_fixq.o: ../Source/umf_assemble.c $(INC)
- 	$(C) -DDLONG -DFIXQ -c $< -o $@
-+umf_dl_assemble_fixq.oo: ../Source/umf_assemble.c $(INC)
-+	$(C) -fPIC -DDLONG -DFIXQ -c $< -o $@
- 
- umf_dl_store_lu_drop.o: ../Source/umf_store_lu.c $(INC)
- 	$(C) -DDLONG -DDROP -c $< -o $@
-+umf_dl_store_lu_drop.oo: ../Source/umf_store_lu.c $(INC)
-+	$(C) -fPIC -DDLONG -DDROP -c $< -o $@
- 
- umfpack_dl_wsolve.o: ../Source/umfpack_solve.c $(INC)
- 	$(C) -DDLONG -DWSOLVE -c $< -o $@
-+umfpack_dl_wsolve.oo: ../Source/umfpack_solve.c $(INC)
-+	$(C) -fPIC -DDLONG -DWSOLVE -c $< -o $@
- 
- umfpack_dl_%.o: ../Source/umfpack_%.c $(INC)
- 	$(C) -DDLONG -c $< -o $@
-+umfpack_dl_%.oo: ../Source/umfpack_%.c $(INC)
-+	$(C) -fPIC -DDLONG -c $< -o $@
- 
- #-------------------------------------------------------------------------------
- # compile each routine in the ZI version
-@@ -180,33 +234,53 @@ umfpack_dl_%.o: ../Source/umfpack_%.c $(
- 
- umf_zi_%.o: ../Source/umf_%.c $(INC)
- 	$(C) -DZINT -c $< -o $@
-+umf_zi_%.oo: ../Source/umf_%.c $(INC)
-+	$(C) -fPIC -DZINT -c $< -o $@
- 
- umf_zi_%hsolve.o: ../Source/umf_%tsolve.c $(INC)
- 	$(C) -DZINT -DCONJUGATE_SOLVE -c $< -o $@
-+umf_zi_%hsolve.oo: ../Source/umf_%tsolve.c $(INC)
-+	$(C) -fPIC -DZINT -DCONJUGATE_SOLVE -c $< -o $@
- 
- umf_zi_triplet_map_x.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DZINT -DDO_MAP -DDO_VALUES -c $< -o $@
-+umf_zi_triplet_map_x.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DZINT -DDO_MAP -DDO_VALUES -c $< -o $@
- 
- umf_zi_triplet_map_nox.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DZINT -DDO_MAP -c $< -o $@
-+umf_zi_triplet_map_nox.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DZINT -DDO_MAP -c $< -o $@
- 
- umf_zi_triplet_nomap_x.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DZINT -DDO_VALUES -c $< -o $@
-+umf_zi_triplet_nomap_x.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DZINT -DDO_VALUES -c $< -o $@
- 
- umf_zi_triplet_nomap_nox.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DZINT -c $< -o $@
-+umf_zi_triplet_nomap_nox.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DZINT -c $< -o $@
- 
- umf_zi_assemble_fixq.o: ../Source/umf_assemble.c $(INC)
- 	$(C) -DZINT -DFIXQ -c $< -o $@
-+umf_zi_assemble_fixq.oo: ../Source/umf_assemble.c $(INC)
-+	$(C) -fPIC -DZINT -DFIXQ -c $< -o $@
- 
- umf_zi_store_lu_drop.o: ../Source/umf_store_lu.c $(INC)
- 	$(C) -DZINT -DDROP -c $< -o $@
-+umf_zi_store_lu_drop.oo: ../Source/umf_store_lu.c $(INC)
-+	$(C) -fPIC -DZINT -DDROP -c $< -o $@
- 
- umfpack_zi_wsolve.o: ../Source/umfpack_solve.c $(INC)
- 	$(C) -DZINT -DWSOLVE -c $< -o $@
-+umfpack_zi_wsolve.oo: ../Source/umfpack_solve.c $(INC)
-+	$(C) -fPIC -DZINT -DWSOLVE -c $< -o $@
- 
- umfpack_zi_%.o: ../Source/umfpack_%.c $(INC)
- 	$(C) -DZINT -c $< -o $@
-+umfpack_zi_%.oo: ../Source/umfpack_%.c $(INC)
-+	$(C) -fPIC -DZINT -c $< -o $@
- 
- #-------------------------------------------------------------------------------
- # compile each routine in the ZL version
-@@ -214,33 +288,53 @@ umfpack_zi_%.o: ../Source/umfpack_%.c $(
- 
- umf_zl_%.o: ../Source/umf_%.c $(INC)
- 	$(C) -DZLONG -c $< -o $@
-+umf_zl_%.oo: ../Source/umf_%.c $(INC)
-+	$(C) -fPIC -DZLONG -c $< -o $@
- 
- umf_zl_%hsolve.o: ../Source/umf_%tsolve.c $(INC)
- 	$(C) -DZLONG -DCONJUGATE_SOLVE -c $< -o $@
-+umf_zl_%hsolve.oo: ../Source/umf_%tsolve.c $(INC)
-+	$(C) -fPIC -DZLONG -DCONJUGATE_SOLVE -c $< -o $@
- 
- umf_zl_triplet_map_x.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DZLONG -DDO_MAP -DDO_VALUES -c $< -o $@
-+umf_zl_triplet_map_x.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DZLONG -DDO_MAP -DDO_VALUES -c $< -o $@
- 
- umf_zl_triplet_map_nox.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DZLONG -DDO_MAP -c $< -o $@
-+umf_zl_triplet_map_nox.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DZLONG -DDO_MAP -c $< -o $@
- 
- umf_zl_triplet_nomap_x.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DZLONG -DDO_VALUES -c $< -o $@
-+umf_zl_triplet_nomap_x.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DZLONG -DDO_VALUES -c $< -o $@
- 
- umf_zl_triplet_nomap_nox.o: ../Source/umf_triplet.c $(INC)
- 	$(C) -DZLONG -c $< -o $@
-+umf_zl_triplet_nomap_nox.oo: ../Source/umf_triplet.c $(INC)
-+	$(C) -fPIC -DZLONG -c $< -o $@
- 
- umf_zl_assemble_fixq.o: ../Source/umf_assemble.c $(INC)
- 	$(C) -DZLONG -DFIXQ -c $< -o $@
-+umf_zl_assemble_fixq.oo: ../Source/umf_assemble.c $(INC)
-+	$(C) -fPIC -DZLONG -DFIXQ -c $< -o $@
- 
- umf_zl_store_lu_drop.o: ../Source/umf_store_lu.c $(INC)
- 	$(C) -DZLONG -DDROP -c $< -o $@
-+umf_zl_store_lu_drop.oo: ../Source/umf_store_lu.c $(INC)
-+	$(C) -fPIC -DZLONG -DDROP -c $< -o $@
- 
- umfpack_zl_wsolve.o: ../Source/umfpack_solve.c $(INC)
- 	$(C) -DZLONG -DWSOLVE -c $< -o $@
-+umfpack_zl_wsolve.oo: ../Source/umfpack_solve.c $(INC)
-+	$(C) -fPIC -DZLONG -DWSOLVE -c $< -o $@
- 
- umfpack_zl_%.o: ../Source/umfpack_%.c $(INC)
- 	$(C) -DZLONG -c $< -o $@
-+umfpack_zl_%.oo: ../Source/umfpack_%.c $(INC)
-+	$(C) -fPIC -DZLONG -c $< -o $@
- 
- #-------------------------------------------------------------------------------
- # Create the generic routines (GN) using a generic rule
-@@ -248,6 +342,8 @@ umfpack_zl_%.o: ../Source/umfpack_%.c $(
- 
- umfpack_gn_%.o: ../Source/umfpack_%.c $(INC)
- 	$(C) -c $< -o $@
-+umfpack_gn_%.oo: ../Source/umfpack_%.c $(INC)
-+	$(C) -fPIC -c $< -o $@
- 
- #-------------------------------------------------------------------------------
- # Create the libumfpack.a library
-@@ -257,8 +353,9 @@ libumfpack.a: $(II) $(LL) $(GN) $(DI) $(
- 	$(ARCHIVE)  libumfpack.a $^
- 	- $(RANLIB) libumfpack.a
- 
--so: $(II) $(LL) $(GN) $(DI) $(DL) $(ZI) $(ZL)
--	gcc -shared -Wl,-soname,libumfpack.so -o libumfpack.so $^
-+libumfpack.so.$(SOVERSION): $(II_SL) $(LL_SL) $(GN_SL) $(DI_SL) $(DL_SL) $(ZI_SL) $(ZL_SL)
-+	$(CC) $(LDFLAGS) -shared $^ -lm -lblas ../../AMD/Lib/libamd.so ../../CHOLMOD/Lib/libcholmod.so ../../SuiteSparse_config/libsuitesparseconfig.so -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libumfpack.so
- 
- #-------------------------------------------------------------------------------
- # Remove all but the files in the original distribution
---- a/SuiteSparse_config/Makefile
-+++ b/SuiteSparse_config/Makefile
-@@ -4,11 +4,13 @@
- 
- VERSION = 4.4.6
- 
-+SOVERSION = $(shell perl ../debian/library-soname.pl SuiteSparse_config | sed 's/libsuitesparseconfig//')
-+
- default: ccode
- 
- include SuiteSparse_config.mk
- 
--ccode: libsuitesparseconfig.a
-+ccode: libsuitesparseconfig.a libsuitesparseconfig.so.$(SOVERSION)
- 
- all: libsuitesparseconfig.a
- 
-@@ -20,6 +22,12 @@ libsuitesparseconfig.a: SuiteSparse_conf
- 	$(RANLIB) libsuitesparseconfig.a
- 	- $(RM) SuiteSparse_config.o
- 
-+libsuitesparseconfig.so.$(SOVERSION): SuiteSparse_config.c SuiteSparse_config.h
-+	$(CC) $(CF) -fPIC -o SuiteSparse_config.oo -c SuiteSparse_config.c
-+	$(CC) $(LDFLAGS) -shared SuiteSparse_config.oo -Wl,-soname -Wl,$@ -o $@ -lm
-+	ln -s $@ libsuitesparseconfig.so
-+	- $(RM) SuiteSparse_config.oo
-+
- distclean: purge
- 
- purge: clean
diff --git a/debian/patches/use-generic-blas.patch b/debian/patches/use-generic-blas.patch
deleted file mode 100644
index e2c12c2..0000000
--- a/debian/patches/use-generic-blas.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Description: Use generic BLAS implementation
- In Debian, we use the alternatives mechanism to swith between BLAS
- implementations.
-Author: Sébastien Villemot <sebastien at debian.org>
-Forwarded: not-needed
-Last-Update: 2015-01-18
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/SuiteSparse_config/SuiteSparse_config.mk
-+++ b/SuiteSparse_config/SuiteSparse_config.mk
-@@ -119,7 +119,7 @@ INSTALL_INCLUDE = /usr/local/include
- # naming the BLAS and LAPACK library (*.a or *.so) files.
- 
- # This is probably slow ... it might connect to the Standard Reference BLAS:
--# BLAS = -lblas -lgfortran
-+  BLAS = -lblas
-   LAPACK = -llapack
- 
- # MKL 
-@@ -131,7 +131,7 @@ INSTALL_INCLUDE = /usr/local/include
- # LAPACK =
- 
- # OpenBLAS
--  BLAS = -lopenblas
-+# BLAS = -lopenblas
- # LAPACK = 
- 
- # NOTE: this next option for the "Goto BLAS" has nothing to do with a "goto"
diff --git a/debian/rules b/debian/rules
index 684ab4e..d45c0f3 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,86 +1,27 @@
 #!/usr/bin/make -f
 
-include /usr/share/cdbs/1/class/makefile.mk
-include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/dpkg/buildflags.mk
 
-DEB_AUTO_CLEANUP_RCS	:= yes
-DEB_SRCDIR 		:= $(CURDIR)/
-DEB_BUILDDIR 		:= $(DEB_SRCDIR)/
+COMMON_FLAGS := OPTIMIZATION= BLAS=-lblas MY_METIS_LIB=-lmetis
 
-DEB_MAKE_CLEAN_TARGET    := clean
-DEB_MAKE_BUILD_TARGET    := default
-DEB_COMPRESS_EXCLUDE_ALL := .pdf
-DEB_DH_STRIP_ARGS        := --dbgsym-migration='libsuitesparse-dbg (<< 1:4.4.6-1~)'
+%:
+	dh $@ --parallel
 
-# List of libraries provided by SuiteSparse
-LIBRARIES = AMD CAMD BTF COLAMD CCOLAMD CHOLMOD CSparse CXSparse KLU LDL UMFPACK SPQR SuiteSparse_config
-# Generate variables like "AMD = libamd<soversion>"
-$(foreach lib, $(LIBRARIES), $(eval $(lib) = $(shell perl debian/library-soname.pl $(lib))))
-# Lists of lib*.install files
-INSTALL_FILES = $(foreach lib, $(LIBRARIES), debian/$($(lib)).install)
+# LD_LIBRARY_PATH needed to make tests work (since buildflags.patch removes the -rpath)
+override_dh_auto_build:
+	LD_LIBRARY_PATH=$$(pwd)/lib dh_auto_build -- $(COMMON_FLAGS)
 
-# Generate rules for debian/lib*.install
-$(foreach lib, $(LIBRARIES), $(eval debian/$($(lib)).%: debian/%/$(lib) ; cp $$< $$@))
+override_dh_auto_install:
+	make install $(COMMON_FLAGS) INSTALL=$$(pwd)/debian/tmp/usr INSTALL_LIB=$$(pwd)/debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/ INSTALL_INCLUDE=$$(pwd)/debian/tmp/usr/include/suitesparse INSTALL_DOC=$$(pwd)/debian/tmp/usr/share/doc/suitesparse
 
-makebuilddir:: $(INSTALL_FILES) debian/control
+override_dh_auto_clean:
+	make purge
 
-common-build-arch::
-	-( cd AMD/Doc      && mv ChangeLog AMD_ChangeLog )
-	-( cd CAMD/Doc     && mv ChangeLog CAMD_ChangeLog )
-	-( cd CCOLAMD/Doc  && mv ChangeLog CCOLAMD_ChangeLog )
-	-( cd COLAMD/Doc   && mv ChangeLog COLAMD_ChangeLog )
-	-( cd BTF/Doc      && mv ChangeLog BTF_ChangeLog )
-	-( cd KLU/Doc      && mv ChangeLog KLU_ChangeLog )
-	-( cd LDL/Doc      && mv ChangeLog LDL_ChangeLog )
-	-( cd UMFPACK/Doc  && mv ChangeLog UMFPACK_ChangeLog )
-	-( cd CHOLMOD/Doc  && mv ChangeLog CHOLMOD_ChangeLog )
-	-( cd CSparse/Doc  && mv ChangeLog CSparse_ChangeLog )
-	-( cd CXSparse/Doc && mv ChangeLog CXSparse_ChangeLog )
-	-( cd SPQR/Doc     && mv ChangeLog SPQR_ChangeLog )
+override_dh_strip:
+	dh_strip --dbgsym-migration='libsuitesparse-dbg (<< 1:4.4.6-1~)'
 
-build/libsuitesparse-doc::
-	-( cd CHOLMOD/Doc && mv UserGuide.pdf CHOLMOD_UserGuide.pdf && mv UserGuide.bib CHOLMOD_UserGuide.bib )
-	-( cd UMFPACK/Doc && mv UserGuide.pdf UMFPACK_UserGuide.pdf && mv UserGuide.bib UMFPACK_UserGuide.bib )
-	-( cd UMFPACK/Doc && mv QuickStart.pdf UMFPACK_QuickStart.pdf )
-
-cleanbuilddir::
-	-( cd AMD/Doc      && mv AMD_ChangeLog ChangeLog )
-	-( cd CAMD/Doc     && mv CAMD_ChangeLog ChangeLog )
-	-( cd CCOLAMD/Doc  && mv CCOLAMD_ChangeLog ChangeLog )
-	-( cd COLAMD/Doc   && mv COLAMD_ChangeLog ChangeLog )
-	-( cd BTF/Doc      && mv BTF_ChangeLog ChangeLog )
-	-( cd KLU/Doc      && mv KLU_ChangeLog ChangeLog )
-	-( cd LDL/Doc      && mv LDL_ChangeLog ChangeLog )
-	-( cd UMFPACK/Doc  && mv UMFPACK_ChangeLog ChangeLog )
-	-( cd CHOLMOD/Doc  && mv CHOLMOD_ChangeLog ChangeLog )
-	-( cd CSparse/Doc  && mv CSparse_ChangeLog ChangeLog )
-	-( cd CXSparse/Doc && mv CXSparse_ChangeLog ChangeLog )
-	-( cd SPQR/Doc     && mv SPQR_ChangeLog ChangeLog )
-
-cleanbuilddir/libsuitesparse-doc::
-	-( cd CHOLMOD/Doc && mv CHOLMOD_UserGuide.pdf UserGuide.pdf && mv CHOLMOD_UserGuide.bib UserGuide.bib )
-	-( cd UMFPACK/Doc && mv UMFPACK_UserGuide.pdf UserGuide.pdf && mv UMFPACK_UserGuide.bib UserGuide.bib )
-	-( cd UMFPACK/Doc && mv UMFPACK_QuickStart.pdf QuickStart.pdf )
-
-clean::
-	-make purge
-	-find $(DEB_BUILDDIR) -name "*.a" | xargs rm
-	-find $(DEB_BUILDDIR) -name "*.so*" | xargs rm
-	-find $(DEB_BUILDDIR) -name "*.oo" | xargs rm
-	rm -f $(INSTALL_FILES)
-
-	# Regenerate debian/control from debian/control.in. Note that this
-	# should not be automatized during the build (see
-	# http://ftp-master.debian.org/REJECT-FAQ.html), but doing it in the
-	# clean rule seems ok (this is done by gnome-pkg-tools).
-	{ \
-	  echo "# This file is autogenerated. DO NOT EDIT!" ; \
-	  echo "#" ; \
-	  echo "# Modifications should be made to debian/control.in instead." ; \
-	  echo "# This file is regenerated automatically in the clean target." ; \
-	  echo ; \
-	  sed "$(foreach lib, $(LIBRARIES), s/@$(lib)@/$($(lib))/g;)" debian/control.in ; } \
-	> debian/control
+override_dh_compress:
+	dh_compress -X.pdf
 
 get-orig-source:
 	uscan --force-download --rename --destdir .

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/suitesparse.git



More information about the debian-science-commits mailing list