[suitesparse] 03/04: Update patches.

Sébastien Villemot sebastien at debian.org
Sun Jan 18 20:13:34 UTC 2015


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

sebastien pushed a commit to branch master
in repository suitesparse.

commit a9835cf94a61199aef0621f2a8be0d001525811a
Author: Sébastien Villemot <sebastien at debian.org>
Date:   Sun Jan 18 21:13:06 2015 +0100

    Update patches.
    
     + Merge all patches related to shared libraries building in
       shared_libraries.patch.
     + Separate patch for BLAS library (use-generic-blas.patch) from the one
       disabling METIS (disable-metis.patch).
     + Give more explicit names to remaining patches, and use the .patch
       extension.
---
 debian/patches/AMD_Lib_GNUmakefile.diff            |   66 -
 debian/patches/BTF_Lib_Makefile.diff               |   75 -
 debian/patches/CAMD_Lib_GNUmakefile.diff           |   65 -
 debian/patches/CCOLAMD_Lib_Makefile.diff           |   40 -
 debian/patches/CHOLMOD_Lib_Makefile.diff           |  683 -------
 debian/patches/COLAMD_Lib_Makefile.diff            |   40 -
 debian/patches/CSparse_Lib_Makefile.diff           |   51 -
 debian/patches/CXSparse_Lib_Makefile.diff          |   94 -
 debian/patches/KLU_Lib_Makefile.diff               |  361 ----
 debian/patches/LDL_Lib_Makefile.diff               |   38 -
 debian/patches/SPQR_Lib_Makefile.diff              |  245 ---
 .../SuiteSparse_config_SuiteSparse_config_mk.diff  |   46 -
 debian/patches/UMFPACK_Lib_GNUmakefile.diff        |  289 ---
 .../patches/{buildflags.diff => buildflags.patch}  |   10 +-
 debian/patches/disable-metis.patch                 |   25 +
 ...ile.diff => fix-KLU-compilation-ordering.patch} |    6 +-
 ...iff => libsuitesparse_config-pic-version.patch} |    0
 .../{parallel-build.diff => parallel-build.patch}  |    6 +-
 debian/patches/series                              |   24 +-
 debian/patches/shared-libraries.patch              | 1952 ++++++++++++++++++++
 debian/patches/use-generic-blas.patch              |   28 +
 21 files changed, 2023 insertions(+), 2121 deletions(-)

diff --git a/debian/patches/AMD_Lib_GNUmakefile.diff b/debian/patches/AMD_Lib_GNUmakefile.diff
deleted file mode 100644
index 5bd0bc1..0000000
--- a/debian/patches/AMD_Lib_GNUmakefile.diff
+++ /dev/null
@@ -1,66 +0,0 @@
-Description: Build shared version of AMD library
-Author: Daniel Rus Morales <danirus at tol-project.org>
----
-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,18 +28,27 @@
- 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_global.o: ../Source/amd_global.c $(INC)
- 	$(C) -c $< -o $@
-+amd_global.oo: ../Source/amd_global.c $(INC)
-+	$(C) -fPIC -c $< -o $@
- 
- 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)
-@@ -47,6 +58,10 @@
- 	$(ARCHIVE) libamd.a $^
- 	- $(RANLIB) libamd.a
- 
-+libamd.so.$(SOVERSION): amd_global.oo $(AMDI_SL) $(AMDL_SL)
-+	$(CC) $(LDFLAGS) -shared $^ -lm -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libamd.so
-+
- #-------------------------------------------------------------------------------
- # compile the Fortran versions and the libamdf77.a library
- #-------------------------------------------------------------------------------
-@@ -71,6 +86,9 @@
- 
- clean:
- 	- $(RM) $(CLEAN)
-+	-$(RM) *.oo
-+	-$(RM) *.a
-+	-$(RM) *.so*
- 
- purge: distclean
- 
diff --git a/debian/patches/BTF_Lib_Makefile.diff b/debian/patches/BTF_Lib_Makefile.diff
deleted file mode 100644
index 0bee8ca..0000000
--- a/debian/patches/BTF_Lib_Makefile.diff
+++ /dev/null
@@ -1,75 +0,0 @@
-Description: Build shared version of BTF library
-Author: Daniel Rus Morales <danirus at tol-project.org>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/BTF/Lib/Makefile
-+++ b/BTF/Lib/Makefile
-@@ -15,38 +15,58 @@
- 
- 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 $@
- 
- #-------------------------------------------------------------------------------
- 
-@@ -57,3 +77,6 @@
- 
- clean:
- 	- $(RM) $(CLEAN)
-+	-$(RM) *.oo
-+	-$(RM) *.a
-+	-$(RM) *.so*
diff --git a/debian/patches/CAMD_Lib_GNUmakefile.diff b/debian/patches/CAMD_Lib_GNUmakefile.diff
deleted file mode 100644
index e59d02d..0000000
--- a/debian/patches/CAMD_Lib_GNUmakefile.diff
+++ /dev/null
@@ -1,65 +0,0 @@
-Description: Build shared version of CAMD library
-Author: Daniel Rus Morales <danirus at tol-project.org>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- 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,18 +27,27 @@
- 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_global.o: ../Source/camd_global.c $(INC)
- 	$(C) -c $< -o $@
-+camd_global.oo: ../Source/camd_global.c $(INC)
-+	$(C) -fPIC -c $< -o $@
- 
- 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)
-@@ -46,12 +57,19 @@
- 	$(ARCHIVE)  libcamd.a $^
- 	- $(RANLIB) libcamd.a
- 
-+libcamd.so.$(SOVERSION): camd_global.oo $(CAMDI_SL) $(CAMDL_SL)
-+	$(CC) $(LDFLAGS) -shared $^ -lm -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libcamd.so
-+
- #-------------------------------------------------------------------------------
- # Remove all but the files in the original distribution
- #-------------------------------------------------------------------------------
- 
- clean:
- 	- $(RM) $(CLEAN)
-+	-$(RM) *.oo
-+	-$(RM) *.a
-+	-$(RM) *.so*
- 
- purge: distclean
- 
diff --git a/debian/patches/CCOLAMD_Lib_Makefile.diff b/debian/patches/CCOLAMD_Lib_Makefile.diff
deleted file mode 100644
index a98bed1..0000000
--- a/debian/patches/CCOLAMD_Lib_Makefile.diff
+++ /dev/null
@@ -1,40 +0,0 @@
-Description: Build shared version of CCOLAMD library
-Author: Daniel Rus Morales <danirus at tol-project.org>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- 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
- 
-@@ -20,12 +22,22 @@
- 	$(ARCHIVE)  libccolamd.a ccolamd.o ccolamd_l.o ccolamd_global.o
- 	- $(RANLIB) libccolamd.a 
- 
-+libccolamd.so.$(SOVERSION):  $(SRC) $(INC)
-+	$(CC) -fPIC $(CF) $(I) -c ../Source/ccolamd_global.c -o ccolamd_global.oo
-+	$(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 -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libccolamd.so
-+
- ccode: libccolamd.a
- 
- library: libccolamd.a
- 
- clean:
- 	- $(RM) $(CLEAN)
-+	-$(RM) *.oo
-+	-$(RM) *.a
-+	-$(RM) *.so*
- 
- purge: distclean
- 
diff --git a/debian/patches/CHOLMOD_Lib_Makefile.diff b/debian/patches/CHOLMOD_Lib_Makefile.diff
deleted file mode 100644
index c0f098c..0000000
--- a/debian/patches/CHOLMOD_Lib_Makefile.diff
+++ /dev/null
@@ -1,683 +0,0 @@
-Description: Build shared version of CHOLMOD library
-Author: Daniel Rus Morales <danirus at tol-project.org>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/CHOLMOD/Lib/Makefile
-+++ b/CHOLMOD/Lib/Makefile
-@@ -50,7 +50,9 @@
- 
- 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
- 
-@@ -61,6 +63,9 @@
- 
- clean:
- 	- $(RM) $(CLEAN)
-+	-$(RM) *.oo
-+	-$(RM) *.a
-+	-$(RM) *.so*
- 
- #-------------------------------------------------------------------------------
- # ../Include/ directory contains all include files:
-@@ -90,28 +95,37 @@
- 	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))
- 
- DI = $(CORE) $(CHECK) $(CHOLESKY) $(MATRIXOPS) $(MODIFY) $(SUPERNODAL) \
- 	$(PARTITION)
-+DI_SL = $(CORE_SL) $(CHECK_SL) $(CHOLESKY_SL) $(MATRIXOPS_SL) $(MODIFY_SL) \
-+	$(SUPERNODAL_SL) $(PARTITION_SL)
- 
- #-------------------------------------------------------------------------------
- # CHOLMOD library modules (long, double)
-@@ -123,39 +137,53 @@
- 	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))
- 
- DL = $(LCORE) $(LCHECK) $(LCHOLESKY) $(LMATRIXOPS) $(LMODIFY) $(LSUPERNODAL) \
- 	$(LPARTITION)
-+DL_SL = $(LCORE_SL) $(LCHECK_SL) $(LCHOLESKY_SL) $(LMATRIXOPS_SL) \
-+	$(LMODIFY_SL) $(LSUPERNODAL_SL) $(LPARTITION_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_pic.a -lrt -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libcholmod.so
-+
-+$(OBJ) $(OBJ_SL): $(INC)
- 
- #-------------------------------------------------------------------------------
- # Check Module:
-@@ -163,23 +191,35 @@
- 
- 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 $@
- 
- 
- #-------------------------------------------------------------------------------
-@@ -188,97 +228,159 @@
- 
- 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 $@
- 
- 
- #-------------------------------------------------------------------------------
-@@ -287,79 +389,129 @@
- 
- 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:
-@@ -367,35 +519,55 @@
- 
- 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 $@
- 
- 
- #-------------------------------------------------------------------------------
-@@ -404,61 +576,99 @@
- 
- 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:
-@@ -466,25 +676,39 @@
- 
- 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 $@
- 
- 
- #-------------------------------------------------------------------------------
-@@ -495,23 +719,40 @@
-         ../Supernodal/t_cholmod_gpu.c \
- 	../Supernodal/t_cholmod_super_numeric.c
- 	$(C) -c $(I) $<
-+cholmod_super_numeric.oo: ../Supernodal/cholmod_super_numeric.c \
-+        ../Supernodal/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 $@
diff --git a/debian/patches/COLAMD_Lib_Makefile.diff b/debian/patches/COLAMD_Lib_Makefile.diff
deleted file mode 100644
index bd09515..0000000
--- a/debian/patches/COLAMD_Lib_Makefile.diff
+++ /dev/null
@@ -1,40 +0,0 @@
-Description: Build shared version of COLAMD library
-Author: Daniel Rus Morales <danirus at tol-project.org>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- 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
- 
-@@ -20,12 +22,22 @@
- 	$(ARCHIVE)  libcolamd.a colamd.o colamd_l.o colamd_global.o
- 	- $(RANLIB) libcolamd.a
- 
-+libcolamd.so.$(SOVERSION):  $(SRC) $(INC)
-+	$(CC) -fPIC $(CF) $(I) -c ../Source/colamd_global.c -o colamd_global.oo
-+	$(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 -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libcolamd.so
-+
- ccode: libcolamd.a
- 
- library: libcolamd.a
- 
- clean:
- 	- $(RM) $(CLEAN)
-+	-$(RM) *.oo
-+	-$(RM) *.a
-+	-$(RM) *.so*
- 
- purge: distclean
- 
diff --git a/debian/patches/CSparse_Lib_Makefile.diff b/debian/patches/CSparse_Lib_Makefile.diff
deleted file mode 100644
index fb46bb1..0000000
--- a/debian/patches/CSparse_Lib_Makefile.diff
+++ /dev/null
@@ -1,51 +0,0 @@
-Description: Build shared version of CSparse library
-Author: Daniel Rus Morales <danirus at tol-project.org>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/CSparse/Lib/Makefile
-+++ b/CSparse/Lib/Makefile
-@@ -3,7 +3,11 @@
- 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,18 +18,29 @@
- 	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
-+	- $(RM) *.o *.oo
-+	-$(RM) *.a
-+	-$(RM) *.so*
- 
- purge: distclean
- 
diff --git a/debian/patches/CXSparse_Lib_Makefile.diff b/debian/patches/CXSparse_Lib_Makefile.diff
deleted file mode 100644
index 7c9618b..0000000
--- a/debian/patches/CXSparse_Lib_Makefile.diff
+++ /dev/null
@@ -1,94 +0,0 @@
-Description: Build shared version of CXSparse library
-Author: Daniel Rus Morales <danirus at tol-project.org>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/CXSparse/Lib/Makefile
-+++ b/CXSparse/Lib/Makefile
-@@ -7,7 +7,9 @@
- 
- 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_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_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_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,32 +71,51 @@
- 	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
-+	- $(RM) *.o *.oo
-+	-$(RM) *.a
-+	-$(RM) *.so*
- 
- purge: distclean
- 
diff --git a/debian/patches/KLU_Lib_Makefile.diff b/debian/patches/KLU_Lib_Makefile.diff
deleted file mode 100644
index 8afcafd..0000000
--- a/debian/patches/KLU_Lib_Makefile.diff
+++ /dev/null
@@ -1,361 +0,0 @@
-Description: Build shared version of KLU library
-Author: Daniel Rus Morales <danirus at tol-project.org>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/KLU/Lib/Makefile
-+++ b/KLU/Lib/Makefile
-@@ -17,132 +17,202 @@
- 
- 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 -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 @@
- 
- 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 $@
- 
- #-------------------------------------------------------------------------------
diff --git a/debian/patches/LDL_Lib_Makefile.diff b/debian/patches/LDL_Lib_Makefile.diff
deleted file mode 100644
index 4456561..0000000
--- a/debian/patches/LDL_Lib_Makefile.diff
+++ /dev/null
@@ -1,38 +0,0 @@
-Description: Build shared version of LDL library
-Author: Daniel Rus Morales <danirus at tol-project.org>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/LDL/Lib/Makefile
-+++ b/LDL/Lib/Makefile
-@@ -10,7 +10,9 @@
- 
- 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 @@
- 	$(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
-@@ -29,4 +37,6 @@
- 
- clean:
- 	- $(RM) $(CLEAN)
--
-+	-$(RM) *.oo
-+	-$(RM) *.a
-+	-$(RM) *.so*
diff --git a/debian/patches/SPQR_Lib_Makefile.diff b/debian/patches/SPQR_Lib_Makefile.diff
deleted file mode 100644
index 80d336e..0000000
--- a/debian/patches/SPQR_Lib_Makefile.diff
+++ /dev/null
@@ -1,245 +0,0 @@
-Description: Build shared version of SPQR library
-Author: Sébastien Villemot <sebastien at debian.org>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/SPQR/Lib/Makefile
-+++ b/SPQR/Lib/Makefile
-@@ -37,7 +37,9 @@
- # 	-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
- 
-@@ -48,6 +50,9 @@
- 
- clean:
- 	- $(RM) $(CLEAN)
-+	-$(RM) *.oo
-+	-$(RM) *.a
-+	-$(RM) *.so*
- 
- INC = ../Include/spqr.hpp ../Include/SuiteSparseQR_C.h \
- 	../Include/SuiteSparseQR_definitions.h \
-@@ -95,7 +100,9 @@
-     spqr_type.o \
-     spqr_tol.o
- 
--$(OBJ): $(INC)
-+OBJ_SL = $(subst .o,.oo,$(OBJ))
-+
-+$(OBJ) $(OBJ_SL): $(INC)
- 
- I = -I../../CHOLMOD/Include -I../../SuiteSparse_config -I../Include
- 
-@@ -105,122 +112,206 @@
- 	$(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.a -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 $@
diff --git a/debian/patches/SuiteSparse_config_SuiteSparse_config_mk.diff b/debian/patches/SuiteSparse_config_SuiteSparse_config_mk.diff
deleted file mode 100644
index 5295e07..0000000
--- a/debian/patches/SuiteSparse_config_SuiteSparse_config_mk.diff
+++ /dev/null
@@ -1,46 +0,0 @@
-Description: Customize the package configuration
- - Do not use metis library
- - Drop the fortran libraries from linking options
-Author: Daniel Rus Morales <danirus at tol-project.org>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/SuiteSparse_config/SuiteSparse_config.mk
-+++ b/SuiteSparse_config/SuiteSparse_config.mk
-@@ -106,7 +106,7 @@
- # 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
- 
- # NOTE: this next option for the "Goto BLAS" has nothing to do with a "goto"
-@@ -162,8 +162,8 @@
- # The path is relative to where it is used, in CHOLMOD/Lib, CHOLMOD/MATLAB, etc.
- # You may wish to use an absolute path.  METIS is optional.  Compile
- # CHOLMOD with -DNPARTITION if you do not wish to use METIS.
--METIS_PATH = ../../metis-4.0
--METIS = ../../metis-4.0/libmetis.a
-+#METIS_PATH = ../../metis-4.0
-+#METIS = ../../metis-4.0/libmetis.a
- 
- #------------------------------------------------------------------------------
- # UMFPACK configuration:
-@@ -223,7 +223,7 @@
- # -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
-@@ -239,7 +239,7 @@
- # -DHAVE_TBB        enable the use of Intel's Threading Building Blocks (TBB)
- 
- # default, without timing, without TBB:
--SPQR_CONFIG =
-+SPQR_CONFIG = -DNPARTITION
- # with TBB:
- # SPQR_CONFIG = -DHAVE_TBB
- 
diff --git a/debian/patches/UMFPACK_Lib_GNUmakefile.diff b/debian/patches/UMFPACK_Lib_GNUmakefile.diff
deleted file mode 100644
index 85a7c38..0000000
--- a/debian/patches/UMFPACK_Lib_GNUmakefile.diff
+++ /dev/null
@@ -1,289 +0,0 @@
-Description: Build shared version of UMFPACK library
-Author: Daniel Rus Morales <danirus at tol-project.org>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- 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 @@
- 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_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 @@
- 
- 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 @@
- 
- 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 @@
- 
- 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_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 @@
- 	$(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_pic.a -Wl,-soname -Wl,$@ -o $@
-+	ln -s $@ libumfpack.so
- 
- #-------------------------------------------------------------------------------
- # Remove all but the files in the original distribution
-@@ -269,3 +366,6 @@
- 
- clean:
- 	- $(RM) $(CLEAN)
-+	-$(RM) *.oo
-+	-$(RM) *.a
-+	-$(RM) *.so*
diff --git a/debian/patches/buildflags.diff b/debian/patches/buildflags.patch
similarity index 88%
rename from debian/patches/buildflags.diff
rename to debian/patches/buildflags.patch
index 4e80f1a..42a97cc 100644
--- a/debian/patches/buildflags.diff
+++ b/debian/patches/buildflags.patch
@@ -17,16 +17,16 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
  ARCHIVE = $(AR) $(ARFLAGS)
 --- a/SuiteSparse_config/SuiteSparse_config.mk
 +++ b/SuiteSparse_config/SuiteSparse_config.mk
-@@ -60,7 +60,7 @@
+@@ -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
- 
- # ranlib, and ar, for generating libraries.  If you don't need ranlib,
- # just change it to RANLAB = echo
-@@ -73,7 +73,7 @@
+ # 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
diff --git a/debian/patches/disable-metis.patch b/debian/patches/disable-metis.patch
new file mode 100644
index 0000000..691f9ac
--- /dev/null
+++ b/debian/patches/disable-metis.patch
@@ -0,0 +1,25 @@
+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/KLU_Demo_Makefile.diff b/debian/patches/fix-KLU-compilation-ordering.patch
similarity index 87%
rename from debian/patches/KLU_Demo_Makefile.diff
rename to debian/patches/fix-KLU-compilation-ordering.patch
index bb140e2..3c78046 100644
--- a/debian/patches/KLU_Demo_Makefile.diff
+++ b/debian/patches/fix-KLU-compilation-ordering.patch
@@ -2,13 +2,13 @@ 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: not-needed
-Last-Update: 2013-04-29
+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
-@@ -42,9 +42,9 @@
+@@ -47,9 +47,9 @@ all: $(CLIB) klu_simple $(CHOLMOD_LIB) k
  	( cd ../../COLAMD ; $(MAKE) library )
  
  ../../CHOLMOD/Lib/libcholmod.a:
diff --git a/debian/patches/Suitesparse_config_Makefile.diff b/debian/patches/libsuitesparse_config-pic-version.patch
similarity index 100%
rename from debian/patches/Suitesparse_config_Makefile.diff
rename to debian/patches/libsuitesparse_config-pic-version.patch
diff --git a/debian/patches/parallel-build.diff b/debian/patches/parallel-build.patch
similarity index 80%
rename from debian/patches/parallel-build.diff
rename to debian/patches/parallel-build.patch
index 705b368..506336b 100644
--- a/debian/patches/parallel-build.diff
+++ b/debian/patches/parallel-build.patch
@@ -7,16 +7,16 @@ 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
-@@ -59,10 +59,10 @@
+@@ -64,10 +64,10 @@ distclean: clean
  clean:
  	- $(RM) $(CLEAN)
  
 -kludemo: kludemo.c Makefile $(CLIB)
-+kludemo: kludemo.c Makefile $(CLIB) $(CHOLMOD)
++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)
++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 5f67e67..15a6c4e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,20 +1,10 @@
-SuiteSparse_config_SuiteSparse_config_mk.diff
-AMD_Lib_GNUmakefile.diff
-CAMD_Lib_GNUmakefile.diff
-CCOLAMD_Lib_Makefile.diff
-COLAMD_Lib_Makefile.diff
-BTF_Lib_Makefile.diff
-KLU_Lib_Makefile.diff
-LDL_Lib_Makefile.diff
-CSparse_Lib_Makefile.diff
-CXSparse_Lib_Makefile.diff
-UMFPACK_Lib_GNUmakefile.diff
-CHOLMOD_Lib_Makefile.diff
-SPQR_Lib_Makefile.diff
-Suitesparse_config_Makefile.diff
-KLU_Demo_Makefile.diff
-buildflags.diff
-parallel-build.diff
+disable-metis.patch
+use-generic-blas.patch
+shared-libraries.patch
+libsuitesparse_config-pic-version.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
new file mode 100644
index 0000000..81a5fa8
--- /dev/null
+++ b/debian/patches/shared-libraries.patch
@@ -0,0 +1,1952 @@
+Description: Build shared version of libraries
+Author: Daniel Rus Morales <danirus at tol-project.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 -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 -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 -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_pic.a -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 -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 -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.a -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_pic.a -Wl,-soname -Wl,$@ -o $@
++	ln -s $@ libumfpack.so
+ 
+ #-------------------------------------------------------------------------------
+ # Remove all but the files in the original distribution
diff --git a/debian/patches/use-generic-blas.patch b/debian/patches/use-generic-blas.patch
new file mode 100644
index 0000000..e2c12c2
--- /dev/null
+++ b/debian/patches/use-generic-blas.patch
@@ -0,0 +1,28 @@
+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"

-- 
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