[packages/SuiteSparse] - SuiteSparse with all components in single package, ready for upgrades (split packages no longer re

qboosh qboosh at pld-linux.org
Sun Jan 8 19:16:58 CET 2023


commit a992b9a70b953fac53bf0a7b16b753634ec3a065
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sun Jan 8 19:17:53 2023 +0100

    - SuiteSparse with all components in single package, ready for upgrades (split packages no longer released)
    - patches collected from AMD+CAMD+COLAMD+CCOLAMD+CHOLMOD+BTF+KLU+LDL+UMFPACK+RBio+SPQR+CXSparse packages
    - added ILP32 patch to fix non-ignored AMD check containing LP64-specific results

 SuiteSparse-ILP32.patch   |   20 +
 SuiteSparse-config.patch  |   44 +
 SuiteSparse-externc.patch |  595 ++++++++++
 SuiteSparse-metis.patch   |  249 ++++
 SuiteSparse-shared.patch  | 2833 +++++++++++++++++++++++++++++++++++++++++++++
 SuiteSparse.spec          | 1139 ++++++++++++++++++
 6 files changed, 4880 insertions(+)
---
diff --git a/SuiteSparse.spec b/SuiteSparse.spec
new file mode 100644
index 0000000..852ba88
--- /dev/null
+++ b/SuiteSparse.spec
@@ -0,0 +1,1139 @@
+#
+# Conditional build:
+%bcond_with	metis		# build with partition support (using metis lib)
+
+%define		suite_ver	4.3.1
+%define		amd_ver		2.4.0
+%define		btf_ver		1.2.0
+%define		camd_ver	2.4.0
+%define		ccolamd_ver	2.9.0
+%define		colamd_ver	2.9.0
+%define		cholmod_ver	3.0.1
+%define		csparse_ver	3.1.3
+%define		cxsparse_ver	3.1.3
+%define		klu_ver		1.3.0
+%define		ldl_ver		2.2.0
+%define		rbio_ver	2.2.0
+%define		spqr_ver	1.3.3
+%define		umfpack_ver	5.7.0
+
+Summary:	A Suite of Sparse matrix packages
+Summary(pl.UTF-8):	Zbiór pakietów do operacji na macierzach rzadkich
+Name:		SuiteSparse
+Version:	%{suite_ver}
+Release:	7
+License:	LGPL v2.1+, GPL v2+
+Group:		Libraries
+Source0:	https://people.engr.tamu.edu/davis/SuiteSparse/%{name}-%{version}.tar.gz
+# Source0-md5:	f8f26a3b1c7f82444c0db0b375215287
+Patch0:		%{name}-config.patch
+Patch1:		%{name}-shared.patch
+Patch2:		%{name}-externc.patch
+Patch3:		%{name}-metis.patch
+Patch4:		%{name}-ILP32.patch
+URL:		http://suitesparse.com/
+BuildRequires:	blas-devel
+BuildRequires:	gcc-fortran
+BuildRequires:	lapack-devel
+BuildRequires:	libstdc++-devel
+BuildRequires:	libtool >= 2:1.5
+%if %{with metis}
+BuildRequires:	metis-devel >= 5
+%endif
+BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+A Suite of Sparse matrix packages.
+
+%description -l pl.UTF-8
+Suite Sparse to zbiór pakietów do operacji na macierzach rzadkich.
+
+%package config
+Summary:	SuiteSparse_config development files
+Summary(pl.UTF-8):	Pliki programistyczne SuiteSparse_config
+License:	no restrictions
+Group:		Development
+Obsoletes:	SuiteSparse_config < 4.4
+
+%description config
+SuiteSparse_config is required by nearly all sparse matrix packages
+that are authored by Timothy A. Davis.
+
+Before version 4, SuiteSparse_config used to be named UFconfig.
+
+%description config -l pl.UTF-8
+SuiteSparse_config jest wymagany przez prawie wszystkie pakiety do
+obliczeń na macierzach rzadkich autorstwa Timothy'ego A. Davisa.
+
+SuiteSparse_config przed wersją 4 nazywał się UFconfig.
+
+%package config-libs
+Summary:	SuiteSparse_config shared library
+Summary(pl.UTF-8):	Biblioteka współdzielona SuiteSparse_config
+License:	no restrictions
+Group:		Libraries
+Obsoletes:	SuiteSparse_config-libs < 4.4
+
+%description config-libs
+SuiteSparse_config shared library, containing malloc/free wrappers.
+
+%description config-libs -l pl.UTF-8
+Biblioteka współdzielona SuiteSparse_config, zawierająca funkcje
+obudowujące malloc/free.
+
+%package config-devel
+Summary:	Development files for SuiteSparse_config library
+Summary(pl.UTF-8):	Pliki programistyczne biblioteki SuiteSparse_config
+License:	no restrictions
+Group:		Development/Libraries
+Requires:	%{name}-config = %{suite_ver}-%{release}
+Requires:	%{name}-config-libs = %{suite_ver}-%{release}
+Obsoletes:	SuiteSparse_config-devel < 4.4
+
+%description config-devel
+Development files for SuiteSparse_config library.
+
+%description config-devel -l pl.UTF-8
+Pliki programistyczne biblioteki SuiteSparse_config.
+
+%package config-static
+Summary:	SuiteSparse_config static library
+Summary(pl.UTF-8):	Biblioteka statyczna SuiteSparse_config
+License:	no restrictions
+Group:		Libraries
+Requires:	%{name}-config-devel = %{suite_ver}-%{release}
+Obsoletes:	SuiteSparse_config-static < 4.4
+
+%description config-static
+SuiteSparse_config static library.
+
+%description config-static -l pl.UTF-8
+Biblioteka statyczna SuiteSparse_config.
+
+%package AMD
+Summary:	AMD: Approximate Minimum Degree
+Summary(pl.UTF-8):	AMD - przybliżony algorytm minimalnego stopnia
+Version:	%{amd_ver}
+License:	LGPL v2.1+
+Group:		Libraries
+Requires:	%{name}-config-libs = %{suite_ver}-%{release}
+Obsoletes:	AMD < 2.4.0-5
+
+%description AMD
+AMD is a set of routines for ordering a sparse matrix prior to
+Cholesky factorization (or for LU factorization with diagonal
+pivoting). There are versions in both C and Fortran. A MATLAB
+interface is provided. Note that this software has nothing to do with
+AMD the company.
+
+%description AMD -l pl.UTF-8
+AMD to zbiór procedur do porządkowania macierzy rzadkich przed
+rozkładem Cholesky'ego (lub do rozkładu LU z obrotami diagonalnymi).
+Istnieją wersje zarówno w C, jak i Fortranie. Dostępny jest interfejs
+do MATLAB-a. Uwaga: to oprogramowanie nie ma nic wspólnego z firmą
+AMD.
+
+%package AMD-devel
+Summary:	Header files for AMD library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki AMD
+Version:	%{amd_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-AMD = %{amd_ver}-%{release}
+Requires:	%{name}-config = %{suite_ver}-%{release}
+Obsoletes:	AMD-devel < 2.4.0-5
+
+%description AMD-devel
+Header files for AMD library.
+
+%description AMD-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki AMD.
+
+%package AMD-static
+Summary:	Static AMD library
+Summary(pl.UTF-8):	Statyczna biblioteka AMD
+Version:	%{amd_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-devel = %{amd_ver}-%{release}
+Obsoletes:	AMD-static < 2.4.0-5
+
+%description AMD-static
+Static AMD library.
+
+%description AMD-static -l pl.UTF-8
+Statyczna biblioteka AMD.
+
+%package AMD-fortran
+Summary:	Fortran version of AMD library
+Summary(pl.UTF-8):	Wersja biblioteki AMD dla programów w Fortranie
+Version:	%{amd_ver}
+License:	LGPL v2.1+
+Group:		Libraries
+Obsoletes:	AMD-fortran < 2.4.0-5
+
+%description AMD-fortran
+Fortran version of AMD library.
+
+%description AMD-fortran -l pl.UTF-8
+Wersja biblioteki AMD dla programów napisanych w Fortranie.
+
+%package AMD-fortran-devel
+Summary:	Fortran version of AMD library - development files
+Summary(pl.UTF-8):	Wersja biblioteki AMD dla programów w Fortranie - pliki programistyczne
+Version:	%{amd_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-AMD-fortran = %{amd_ver}-%{release}
+Obsoletes:	AMD-fortran-devel < 2.4.0-5
+
+%description AMD-fortran-devel
+Fortran version of AMD library - development files.
+
+%description AMD-fortran-devel -l pl.UTF-8
+Wersja biblioteki AMD dla programów w Fortranie - pliki
+programistyczne.
+
+%package AMD-fortran-static
+Summary:	Fortran version of AMD static library
+Summary(pl.UTF-8):	Wersja statycznej biblioteki AMD dla programów w Fortranie
+Version:	%{amd_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-AMD-fortran-devel = %{amd_ver}-%{release}
+Obsoletes:	AMD-fortran-static < 2.4.0-5
+
+%description AMD-fortran-static
+Fortran version of AMD static library.
+
+%description AMD-fortran-static -l pl.UTF-8
+Wersja statycznej biblioteki AMD dla programów napisanych w Fortranie.
+
+%package BTF
+Summary:	BTF: permutation to block triangular form
+Summary(pl.UTF-8):	BTF - permutacja do postaci blokowo trójkątnej
+Version:	%{btf_ver}
+License:	LGPL v2.1+
+Group:		Libraries
+Obsoletes:	BTF < 1.2.0-3
+
+%description BTF
+BTF permutes an unsymmetric matrix (square or rectangular) into its
+block upper triangular form (more precisely, it computes a
+Dulmage-Mendelsohn decomposition). BTF is required by the KLU package.
+
+%description BTF -l pl.UTF-8
+BTF permutuje macierz niesymetryczną (kwadratową lub prostokątną) do
+postaci górnej blokowo trójkątnej (ściślej mówiąc, oblicza rozkład
+Dulmage'a-Mendelsohna). Pakiet BTF jest wymagany przez pakiet KLU.
+
+%package BTF-devel
+Summary:	Header files for BTF library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki BTF
+Version:	%{btf_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-BTF = %{btf_ver}-%{release}
+Requires:	%{name}-config = %{suite_ver}-%{release}
+Obsoletes:	BTF-devel < 1.2.0-3
+
+%description BTF-devel
+Header files for BTF library.
+
+%description BTF-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki BTF.
+
+%package BTF-static
+Summary:	Static BTF library
+Summary(pl.UTF-8):	Statyczna biblioteka BTF
+Version:	%{btf_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-BTF-devel = %{btf_ver}-%{release}
+Obsoletes:	BTF-static < 1.2.0-3
+
+%description BTF-static
+Static BTF library.
+
+%description BTF-static -l pl.UTF-8
+Statyczna biblioteka BTF.
+
+%package CAMD
+Summary:	CAMD: Constrainted Approximate Minimum Degree
+Summary(pl.UTF-8):	CAMD - przybliżony ograniczony algorytm minimalnego stopnia
+Version:	%{camd_ver}
+License:	LGPL v2.1+
+Group:		Libraries
+Requires:	SuiteSparse-config-libs = %{suite_ver}-%{release}
+Obsoletes:	CAMD < 2.4.0-4
+
+%description CAMD
+CAMD is a set of routines for ordering a sparse matrix prior to
+Cholesky factorization (or for LU factorization with diagonal
+pivoting).
+
+%description CAMD -l pl.UTF-8
+CAMD to zbiór procedur do porządkowania macierzy rzadkich przed
+rozkładem Cholesky'ego (lub do rozkładu LU z obrotami diagonalnymi).
+
+%package CAMD-devel
+Summary:	Header files for CAMD library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki CAMD
+Version:	%{camd_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-CAMD = %{camd_ver}-%{release}
+Requires:	SuiteSparse-config-devel = %{suite_ver}-%{release}
+Obsoletes:	CAMD-devel < 2.4.0-4
+
+%description CAMD-devel
+Header files for CAMD library.
+
+%description CAMD-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki CAMD.
+
+%package CAMD-static
+Summary:	Static CAMD library
+Summary(pl.UTF-8):	Statyczna biblioteka CAMD
+Version:	%{camd_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-CAMD-devel = %{camd_ver}-%{release}
+Obsoletes:	CAMD-static < 2.4.0-4
+
+%description CAMD-static
+Static CAMD library.
+
+%description CAMD-static -l pl.UTF-8
+Statyczna biblioteka CAMD.
+
+%package CCOLAMD
+Summary:	CCOLAMD: constrained column approximate minimum degree
+Summary(pl.UTF-8):	CCOLAMD - przybliżony ograniczony algorytm minimalnego stopnia dla kolumn
+Version:	%{ccolamd_ver}
+License:	LGPL v2.1+
+Group:		Libraries
+Obsoletes:	CCOLAMD < 2.9.0-4
+
+%description CCOLAMD
+The CCOLAMD column approximate minimum degree ordering algorithm
+computes a permutation vector P such that the LU factorization of A
+(:,P) tends to be sparser than that of A. The Cholesky factorization
+of (A (:,P))'*(A (:,P)) will also tend to be sparser than that of
+A'*A. CSYMAMD is a symmetric minimum degree ordering method based on
+CCOLAMD, available as a MATLAB-callable function. It constructs a
+matrix M such that M'*M has the same pattern as A, and then uses
+CCOLAMD to compute a column ordering of M.
+
+%description CCOLAMD -l pl.UTF-8
+Przybliżony algorytm porządkowania minimalnego stopnia dla kolumn
+CCOLAMD oblicza wektor permutacji P taki, że rozkład LU A (:,P) jest
+bardziej rzadki niż A. Rozkład Cholesky'ego (A (:,P))'*(A (:,P)) także
+jest rzadszy niż A'*A. CSYMAND to przybliżony algorytm porządkowania
+minimalnego stopnia dla macierzy symetrycznych oparty na CCOLAMD,
+dostępny jako funkcja do wywołania z MATLAB-a. Tworzy macierz M taką,
+że M'*M ma ten sam wzór co A, a następnie używa algorytmu CCOLAMD do
+obliczenia porządku kolumn M.
+
+%package CCOLAMD-devel
+Summary:	Header files for CCOLAMD library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki CCOLAMD
+Version:	%{ccolamd_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-CCOLAMD = %{ccolamd_ver}-%{release}
+Requires:	%{name}-config = %{suite_ver}-%{release}
+Obsoletes:	CCOLAMD < 2.9.0-4
+
+%description CCOLAMD-devel
+Header files for CCOLAMD library.
+
+%description CCOLAMD-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki CCOLAMD.
+
+%package CCOLAMD-static
+Summary:	Static CCOLAMD library
+Summary(pl.UTF-8):	Statyczna biblioteka CCOLAMD
+Version:	%{ccolamd_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-CCOLAMD-devel = %{ccolamd_ver}-%{release}
+Obsoletes:	CCOLAMD < 2.9.0-4
+
+%description CCOLAMD-static
+Static CCOLAMD library.
+
+%description CCOLAMD-static -l pl.UTF-8
+Statyczna biblioteka CCOLAMD.
+
+%package COLAMD
+Summary:	COLAMD: column approximate minimum degree
+Summary(pl.UTF-8):	COLAMD - przybliżony algorytm minimalnego stopnia dla kolumn
+Version:	%{colamd_ver}
+License:	LGPL v2.1+
+Group:		Libraries
+Requires:	%{name}-config-libs = %{suite_ver}-%{release}
+Obsoletes:	COLAMD < 2.9.0-4
+Obsoletes:	colamd < 2.7
+
+%description COLAMD
+The COLAMD column approximate minimum degree ordering algorithm
+computes a permutation vector P such that the LU factorization of A
+(:,P) tends to be sparser than that of A. The Cholesky factorization
+of (A (:,P))'*(A (:,P)) will also tend to be sparser than that of
+A'*A. SYMAMD is a symmetric minimum degree ordering method based on
+COLAMD, available as a MATLAB-callable function. It constructs a
+matrix M such that M'*M has the same pattern as A, and then uses
+COLAMD to compute a column ordering of M. Colamd and symamd tend to be
+faster and generate better orderings than their MATLAB counterparts,
+colmmd and symmmd.
+
+%description COLAMD -l pl.UTF-8
+Przybliżony algorytm porządkowania minimalnego stopnia dla kolumn
+(COLAMD) oblicza wektor permutacji P taki, że rozkład LU A (:,P) jest
+bardziej rzadki niż A. Rozkład Cholesky'ego (A (:,P))'*(A (:,P)) także
+jest rzadszy niż A'*A. SYMAND to przybliżony algorytm porządkowania
+minimalnego stopnia dla macierzy symetrycznych oparty na COLAMD,
+dostępny jako funkcja do wywołania z MATLAB-a. Tworzy macierz M taką,
+że M'*M ma ten sam wzór co A, a następnie używa algorytmu COLAMD do
+obliczenia porządku kolumn M. COLAMD i SYMAMD są szybsze i generują
+lepsze uporządkowania niż ich odpowiedniki z MATLAB-a: colmmd i
+symmmd.
+
+%package COLAMD-devel
+Summary:	Header files for COLAMD library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki COLAMD
+Version:	%{colamd_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-COLAMD = %{colamd_ver}-%{release}
+Requires:	%{name}-config-devel = %{suite_ver}-%{release}
+Obsoletes:	COLAMD-devel < 2.9.0-4
+Obsoletes:	colamd-devel < 2.7
+
+%description COLAMD-devel
+Header files for COLAMD library.
+
+%description COLAMD-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki COLAMD.
+
+%package COLAMD-static
+Summary:	Static COLAMD library
+Summary(pl.UTF-8):	Statyczna biblioteka COLAMD
+Version:	%{colamd_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-COLAMD-devel = %{colamd_ver}-%{release}
+Obsoletes:	COLAMD-static < 2.9.0-4
+Obsoletes:	colamd-static < 2.7
+
+%description COLAMD-static
+Static COLAMD library.
+
+%description COLAMD-static -l pl.UTF-8
+Statyczna biblioteka COLAMD.
+
+%package CHOLMOD
+Summary:	CHOLMOD: sparse supernodal Cholesky factorization and update/downdate
+Summary(pl.UTF-8):	CHOLMOD - rzadki wielowęzłowy rozkład Cholesky'ego z poprawianiem
+Version:	%{cholmod_ver}
+License:	GPL v2+ (some parts LGPL v2.1+)
+Group:		Libraries
+Requires:	%{name}-config-libs = %{suite_ver}-%{release}
+Obsoletes:	CHOLMOD < 3.0.1-6
+
+%description CHOLMOD
+CHOLMOD is a set of ANSI C routines for sparse Cholesky
+factorization and update/downdate.
+
+%description CHOLMOD -l pl.UTF-8
+CHOLMOD to zbiór procedur ANSI C do rzadkiego rozkładu Cholesky'ego z
+poprawianiem.
+
+%package CHOLMOD-devel
+Summary:	Header files for CHOLMOD library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki CHOLMOD
+Version:	%{cholmod_ver}
+License:	GPL v2+ (some parts LGPL v2.1+)
+Group:		Development/Libraries
+Requires:	%{name}-config-devel = %{suite_ver}-%{release}
+Requires:	%{name}-AMD-devel = %{amd_ver}-%{release}
+Requires:	%{name}-CAMD-devel = %{camd_ver}-%{release}
+Requires:	%{name}-CCOLAMD-devel = %{ccolamd_ver}-%{release}
+Requires:	%{name}-CHOLMOD = %{cholmod_ver}-%{release}
+Requires:	%{name}-COLAMD-devel = %{colamd_ver}-%{release}
+Requires:	blas-devel
+Requires:	lapack-devel
+%if %{with metis}
+Requires:	metis-devel >= 5
+%endif
+Obsoletes:	CHOLMOD-devel < 3.0.1-6
+
+%description CHOLMOD-devel
+Header files for CHOLMOD library.
+
+%description CHOLMOD-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki CHOLMOD.
+
+%package CHOLMOD-static
+Summary:	Static CHOLMOD library
+Summary(pl.UTF-8):	Statyczna biblioteka CHOLMOD
+Version:	%{cholmod_ver}
+License:	GPL v2+ (some parts LGPL v2.1+)
+Group:		Development/Libraries
+Requires:	%{name}-CHOLMOD-devel = %{cholmod_ver}-%{release}
+Obsoletes:	CHOLMOD-static < 3.0.1-6
+
+%description CHOLMOD-static
+Static CHOLMOD library.
+
+%description CHOLMOD-static -l pl.UTF-8
+Statyczna biblioteka CHOLMOD.
+
+%package CXSparse
+Summary:	CXSparse: extended version of a concise sparse matrix package
+Summary(pl.UTF-8):	CXSparse - rozszerzona wersja zwięzłego pakietu do macierzy rzadkich
+Version:	%{cxsparse_ver}
+License:	LGPL v2.1+
+Group:		Libraries
+Obsoletes:	CXSparse < 0.1
+
+%description CXSparse
+CXSparse is an extended version of CSparse - a small yet feature-rich
+sparse matrix package, with support for double or complex matrices,
+with int or long integers.
+
+%description CXSparse -l pl.UTF-8
+CXSparse to rozszerzona wersja CSparse - małego, ale mającego wiele
+możliwości pakietu do macierzy rzadkich z obsługą macierzy typu double
+i zespolonych, z liczbami int i long.
+
+%package CXSparse-devel
+Summary:	Header files for CXSparse library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki CXSparse
+Version:	%{cxsparse_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-CXSparse = %{cxsparse_ver}-%{release}
+Requires:	%{name}-config = %{suite_ver}-%{release}
+Obsoletes:	CXSparse-devel < 0.1
+
+%description CXSparse-devel
+Header files for CXSparse library.
+
+%description CXSparse-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki CXSparse.
+
+%package CXSparse-static
+Summary:	Static CXSparse library
+Summary(pl.UTF-8):	Statyczna biblioteka CXSparse
+Version:	%{cxsparse_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-CXSparse-devel = %{cxsparse_ver}-%{release}
+Obsoletes:	CXSparse-static < 0.1
+
+%description CXSparse-static
+Static CXSparse library.
+
+%description CXSparse-static -l pl.UTF-8
+Statyczna biblioteka CXSparse.
+
+%package KLU
+Summary:	KLU: sparse LU factorization, for circuit simulation
+Summary(pl.UTF-8):	KLU - rzadki rozkład LU na potrzeby symulacji obwodów
+Version:	%{klu_ver}
+License:	LGPL v2.1+
+Group:		Libraries
+Requires:	%{name}-AMD = %{amd_ver}-%{release}
+Requires:	%{name}-BTF = %{btf_ver}-%{release}
+Requires:	%{name}-COLAMD = %{colamd_ver}-%{release}
+Requires:	%{name}-config-libs = %{suite_ver}-%{release}
+Obsoletes:	KLU < 1.3.0-3
+
+%description KLU
+KLU is a sparse LU factorization algorithm well-suited for use in
+circuit simulation.
+
+%description KLU -l pl.UTF-8
+KLU to algorytm rozkładu LU macierzy rzadkich dobrze pasujący do
+zastosowań w symulacji obwodów.
+
+%package KLU-devel
+Summary:	Header files for KLU library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki KLU
+Version:	%{klu_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-KLU = %{klu_ver}-%{release}
+Requires:	%{name}-AMD-devel = %{amd_ver}-%{release}
+Requires:	%{name}-BTF-devel = %{btf_ver}-%{release}
+Requires:	%{name}-COLAMD-devel = %{colamd_ver}-%{release}
+Requires:	%{name}-config-devel = %{suite_ver}-%{release}
+Obsoletes:	KLU-devel < 1.3.0-3
+
+%description KLU-devel
+Header files for KLU library.
+
+%description KLU-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki KLU.
+
+%package KLU-static
+Summary:	Static KLU library
+Summary(pl.UTF-8):	Statyczna biblioteka KLU
+Version:	%{klu_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-KLU-devel = %{version}-%{release}
+Obsoletes:	KLU-static < 1.3.0-3
+
+%description KLU-static
+Static KLU library.
+
+%description KLU-static -l pl.UTF-8
+Statyczna biblioteka KLU.
+
+%package LDL
+Summary:	LDL: a simple LDL^T factorization for sparse matrices
+Summary(pl.UTF-8):	LDL - prosty rozkład LDL^T dla macierzy rzadkich
+Version:	%{ldl_ver}
+License:	LGPL v2.1+
+Group:		Libraries
+Obsoletes:	LDL < 2.2.0-2
+
+%description LDL
+LDL is a set of concise routines for factorizing symmetric
+positive-definite sparse matrices, with some applicability to
+symmetric indefinite matrices. Its primary purpose is to illustrate
+much of the basic theory of sparse matrix algorithms in as concise a
+code as possible, including an elegant new method of sparse symmetric
+factorization that computes the factorization row-by-row but stores it
+column-by-column. The entire symbolic and numeric factorization
+consists of a total of only 49 lines of code. The package is written
+in C, and includes a MATLAB interface.
+
+%description LDL -l pl.UTF-8
+LDL to zbiór zwięzłych procedur do dokonywania rozkładów
+symetrycznych, dodatnio określonych macierzy rzadkich, z częściową
+możliwością stosowania do macierzy symetrycznych nieokreślonych.
+Główny cel tych procedur to zademonstrowanie dużej części podstawowej
+teorii algorytmów dla macierzy rzadkich w jak najbardziej zwięzłym
+kodzie, w tym eleganckiej nowej metody rozkładu symetrycznych macierzy
+rzadkich, liczącej rozkład wierszami, ale zapisującej go kolumnami.
+Cały rozkład symboliczny i numeryczny składa się z jedynie 49 linii
+kodu. Pakiet został napisany w C i zawiera interfejs dla MATLAB-a.
+
+%package LDL-devel
+Summary:	Header files for LDL library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki LDL
+Version:	%{ldl_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-LDL = %{ldl_ver}-%{release}
+Requires:	%{name}-config = %{suite_ver}-%{release}
+Obsoletes:	LDL-devel < 2.2.0-2
+
+%description LDL-devel
+Header files for LDL library.
+
+%description LDL-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki LDL.
+
+%package LDL-static
+Summary:	Static LDL library
+Summary(pl.UTF-8):	Statyczna biblioteka LDL
+Version:	%{ldl_ver}
+License:	LGPL v2.1+
+Group:		Development/Libraries
+Requires:	%{name}-LDL-devel = %{ldl_ver}-%{release}
+Obsoletes:	LDL-static < 2.2.0-2
+
+%description LDL-static
+Static LDL library.
+
+%description LDL-static -l pl.UTF-8
+Statyczna biblioteka LDL.
+
+%package RBio
+Summary:	RBio: read/write matrices in Rutherford/Boeing format
+Summary(pl.UTF-8):	RBio: odczyt/zapis macierzy zapisanych w formacie Rutherforda-Boeinga
+Version:	%{rbio_ver}
+License:	GPL v2+
+Group:		Libraries
+Requires:	%{name}-config-libs = %{suite_ver}-%{release}
+Obsoletes:	RBio < 2.2.0-2
+
+%description RBio
+RBio - MATLAB toolbox for reading/writing sparse matrices in the
+Rutherford/Boeing format, and for reading/writing problems in the UF
+Sparse Matrix Collection from/to a set of files in a directory.
+Version 2.0 is written in C. Older versions were in Fortran.
+
+%description RBio -l pl.UTF-8
+RBio to narzędzia MATLAB-a do odczytu/zapisu macierzy rzadkich w
+formacie Rutherforda-Boeinga oraz odczytu/zapisu problemów dla
+oprogramowania UF Sparse Matrix Collection z/do zbioru plików w
+katalogu. Wersja 2.0 została napisana w C; wcześniejsze wersje były w
+Fortranie.
+
+%package RBio-devel
+Summary:	Header files for RBio library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki RBio
+Version:	%{rbio_ver}
+License:	GPL v2+
+Group:		Development/Libraries
+Requires:	%{name}-RBio = %{rbio_ver}-%{release}
+Requires:	%{name}-config-devel = %{suite_ver}-%{release}
+Obsoletes:	RBio-devel < 2.2.0-2
+
+%description RBio-devel
+Header files for RBio library.
+
+%description RBio-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki RBio.
+
+%package RBio-static
+Summary:	Static RBio library
+Summary(pl.UTF-8):	Statyczna biblioteka RBio
+Version:	%{rbio_ver}
+License:	GPL v2+
+Group:		Development/Libraries
+Requires:	%{name}-RBio-devel = %{rbio_ver}-%{release}
+Obsoletes:	RBio-static < 2.2.0-2
+
+%description RBio-static
+Static RBio library.
+
+%description RBio-static -l pl.UTF-8
+Statyczna biblioteka RBio.
+
+%package SPQR
+Summary:	SuiteSparseQR: multithreaded multifrontal sparse QR factorization
+Summary(pl.UTF-8):	SuiteSparseQR - wielowątkowy, wielofrontalny rozkład QR dla macierzy rzadkich
+Version:	%{spqr_ver}
+License:	GPL v2+
+Group:		Libraries
+Requires:	%{name}-CHOLMOD = %{cholmod_ver}-%{release}
+Requires:	%{name}-config-libs = %{suite_ver}-%{release}
+Obsoletes:	SPQR < 1.3.3-5
+
+%description SPQR
+SuiteSparseQR is an implementation of the multifrontal sparse QR
+factorization method. Parallelism is exploited both in the BLAS and
+across different frontal matrices using Intel's Threading Building
+Blocks, a shared-memory programming model for modern multicore
+architectures. It can obtain a substantial fraction of the theoretical
+peak performance of a multicore computer. The package is written in
+C++ with user interfaces for MATLAB, C, and C++.
+
+%description SPQR -l pl.UTF-8
+SuiteSparseQR to implementacja wielofrontalnej metody rozkładu QR dla
+macierzy rzadkich. Równoległość jest wykorzystywna zarówno w BLAS, jak
+i poprzez różne macierze frontalne przy użyciu Threading Building
+Blocks Intela - model programowania ze współdzieloną pamięcią dla
+architektur wielordzeniowych. Dzięki temu możliwe jest osiągnięcie
+znaczącej części teoretycznej maksymalnej wydajności na komputerze
+wielordzeniowym. Pakiet jest napisany w C++ z interfejsami dla
+MATLAB-a, C i C++.
+
+%package SPQR-devel
+Summary:	Header files for SPQR library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki SPQR
+Version:	%{spqr_ver}
+License:	GPL v2+
+Group:		Development/Libraries
+Requires:	%{name}-CHOLMOD-devel = %{cholmod_ver}-%{release}
+Requires:	%{name}-SPQR = %{spqr_ver}-%{release}
+Requires:	%{name}-config-devel = %{suite_ver}-%{release}
+Requires:	libstdc++-devel
+Obsoletes:	SPQR-devel < 1.3.3-5
+
+%description SPQR-devel
+Header files for SPQR library.
+
+%description SPQR-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki SPQR.
+
+%package SPQR-static
+Summary:	Static SPQR library
+Summary(pl.UTF-8):	Statyczna biblioteka SPQR
+Version:	%{spqr_ver}
+License:	GPL v2+
+Group:		Development/Libraries
+Requires:	%{name}-SPQR-devel = %{spqr_ver}-%{release}
+Obsoletes:	SPQR-static < 1.3.3-5
+
+%description SPQR-static
+Static SPQR library.
+
+%description SPQR-static -l pl.UTF-8
+Statyczna biblioteka SPQR.
+
+%package UMFPACK
+Summary:	UMFPACK: sparse multifrontal LU factorization
+Summary(pl.UTF-8):	UMFPACK - wielofrontalny rozkład LU macierzy rzadkich
+Version:	%{umfpack_ver}
+License:	GPL v2+
+Group:		Libraries
+Requires:	%{name}-CHOLMOD = %{cholmod_ver}-%{release}
+Obsoletes:	UMFPACK < 5.7.0-7
+
+%description UMFPACK
+UMFPACK is a set of routines for solving unsymmetric sparse linear
+systems, Ax=b, using the Unsymmetric MultiFrontal method. Written in
+ANSI/ISO C, with a MATLAB (Version 6.0 and later) interface. Appears
+as a built-in routine (for lu, backslash, and forward slash) in
+MATLAB. Includes a MATLAB interface, a C-callable interface, and a
+Fortran-callable interface. Note that "UMFPACK" is pronounced in two
+syllables, "Umph Pack". It is not "You Em Ef Pack".
+
+%description UMFPACK -l pl.UTF-8
+UMFPACK to zbiór procedur do rozwiązywania niesymetrycznych rzadkich
+układów równań liniowych Ax=b przy użyciu metody UMF (Unsymmetric
+MultiFrontal). Jest napisany w ANSI/ISO C z interfejsem do MATLAB-a
+(w wersji 6.0 i nowszych). W MATLAB-ie jest dostępny jako wbudowana
+procedura (dla lu, backslasha i slasha). Oprócz interfejsu dla
+MATLAB-a dostępny jest interfejs dostępny z C i Fortranu. Uwaga:
+"UMFPACK" powinno się wymawiać jako dwie sylaby: "Umf Pak"; nie jako
+"U Em Ef Pak".
+
+%package UMFPACK-devel
+Summary:	Header files for UMFPACK library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki UMFPACK
+Version:	%{umfpack_ver}
+License:	GPL v2+
+Group:		Development/Libraries
+Requires:	%{name}-UMFPACK = %{umfpack_ver}-%{release}
+Requires:	%{name}-CHOLMOD-devel = %{cholmod_ver}-%{release}
+Requires:	%{name}-config = %{suite_ver}-%{release}
+Obsoletes:	UMFPACK-devel < 5.7.0-7
+
+%description UMFPACK-devel
+Header files for UMFPACK library.
+
+%description UMFPACK-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki UMFPACK.
+
+%package UMFPACK-static
+Summary:	Static UMFPACK library
+Summary(pl.UTF-8):	Statyczna biblioteka UMFPACK
+Version:	%{umfpack_ver}
+License:	GPL v2+
+Group:		Development/Libraries
+Requires:	%{name}-UMFPACK-devel = %{umfpack_ver}-%{release}
+Obsoletes:	UMFPACK-static < 5.7.0-7
+
+%description UMFPACK-static
+Static UMFPACK library.
+
+%description UMFPACK-static -l pl.UTF-8
+Statyczna biblioteka UMFPACK.
+
+%prep
+%setup -q -n %{name}
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%ifnarch %{x8664} aarch64 alpha mips64 ppc64 s390x sparc64
+%patch4 -p1
+%endif
+
+%build
+%{__make} -j1 \
+	CC="%{__cc}" \
+	CXX="%{__cxx}" \
+	CFLAGS="%{rpmcflags}" \
+	CXXFLAGS="%{rpmcxxflags}" \
+	LDFLAGS="%{rpmldflags}" \
+	%{!?with_metis:CHOLMOD_CONFIG=-DNPARTITION} \
+	%{?with_metis:WITH_METIS=1} \
+	LIB_SUBDIR=%{_lib}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT{%{_libdir},%{_includedir}/suitesparse,%{_datadir}/misc}
+
+%{__make} -j1 install \
+	DESTDIR=$RPM_BUILD_ROOT \
+	LIB_SUBDIR=%{_lib}
+
+cp -p SuiteSparse_config/SuiteSparse_config.mk $RPM_BUILD_ROOT%{_datadir}/misc
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post	config-libs -p /sbin/ldconfig
+%postun	config-libs -p /sbin/ldconfig
+
+%post	AMD -p /sbin/ldconfig
+%postun	AMD -p /sbin/ldconfig
+
+%post	BTF -p /sbin/ldconfig
+%postun	BTF -p /sbin/ldconfig
+
+%post	CAMD -p /sbin/ldconfig
+%postun	CAMD -p /sbin/ldconfig
+
+%post	CCOLAMD -p /sbin/ldconfig
+%postun	CCOLAMD -p /sbin/ldconfig
+
+%post	COLAMD -p /sbin/ldconfig
+%postun	COLAMD -p /sbin/ldconfig
+
+%post	CHOLMOD -p /sbin/ldconfig
+%postun	CHOLMOD -p /sbin/ldconfig
+
+%post	CXSparse -p /sbin/ldconfig
+%postun	CXSparse -p /sbin/ldconfig
+
+%post	KLU -p /sbin/ldconfig
+%postun	KLU -p /sbin/ldconfig
+
+%post	LDL -p /sbin/ldconfig
+%postun	LDL -p /sbin/ldconfig
+
+%post	RBio -p /sbin/ldconfig
+%postun	RBio -p /sbin/ldconfig
+
+%post	SPQR -p /sbin/ldconfig
+%postun	SPQR -p /sbin/ldconfig
+
+%post	UMFPACK -p /sbin/ldconfig
+%postun	UMFPACK -p /sbin/ldconfig
+
+%files config
+%defattr(644,root,root,755)
+%doc README.txt
+%dir %{_includedir}/suitesparse
+%{_includedir}/suitesparse/SuiteSparse_config.h
+%{_datadir}/misc/SuiteSparse_config.mk
+
+%files config-libs
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libsuitesparseconfig.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libsuitesparseconfig.so.0
+
+%files config-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libsuitesparseconfig.so
+%{_libdir}/libsuitesparseconfig.la
+
+%files config-static
+%defattr(644,root,root,755)
+%{_libdir}/libsuitesparseconfig.a
+
+%files AMD
+%defattr(644,root,root,755)
+%doc AMD/README.txt AMD/Doc/{ChangeLog,License}
+%attr(755,root,root) %{_libdir}/libamd.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libamd.so.0
+
+%files AMD-devel
+%defattr(644,root,root,755)
+%doc AMD/Doc/AMD_UserGuide.pdf
+%attr(755,root,root) %{_libdir}/libamd.so
+%{_libdir}/libamd.la
+%{_includedir}/suitesparse/amd.h
+
+%files AMD-static
+%defattr(644,root,root,755)
+%{_libdir}/libamd.a
+
+%files AMD-fortran
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libamdf77.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libamdf77.so.0
+
+%files AMD-fortran-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libamdf77.so
+%{_libdir}/libamdf77.la
+
+%files AMD-fortran-static
+%defattr(644,root,root,755)
+%{_libdir}/libamdf77.a
+
+%files BTF
+%defattr(644,root,root,755)
+%doc BTF/README.txt BTF/Doc/ChangeLog
+%attr(755,root,root) %{_libdir}/libbtf.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libbtf.so.0
+
+%files BTF-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libbtf.so
+%{_libdir}/libbtf.la
+%{_includedir}/suitesparse/btf.h
+
+%files BTF-static
+%defattr(644,root,root,755)
+%{_libdir}/libbtf.a
+
+%files CAMD
+%defattr(644,root,root,755)
+%doc CAMD/README.txt CAMD/Doc/{ChangeLog,License}
+%attr(755,root,root) %{_libdir}/libcamd.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libcamd.so.0
+
+%files CAMD-devel
+%defattr(644,root,root,755)
+%doc CAMD/Doc/CAMD_UserGuide.pdf
+%attr(755,root,root) %{_libdir}/libcamd.so
+%{_libdir}/libcamd.la
+%{_includedir}/suitesparse/camd.h
+
+%files CAMD-static
+%defattr(644,root,root,755)
+%{_libdir}/libcamd.a
+
+%files CCOLAMD
+%defattr(644,root,root,755)
+%doc CCOLAMD/README.txt CCOLAMD/Doc/ChangeLog
+%attr(755,root,root) %{_libdir}/libccolamd.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libccolamd.so.0
+
+%files CCOLAMD-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libccolamd.so
+%{_libdir}/libccolamd.la
+%{_includedir}/suitesparse/ccolamd.h
+
+%files CCOLAMD-static
+%defattr(644,root,root,755)
+%{_libdir}/libccolamd.a
+
+%files COLAMD
+%defattr(644,root,root,755)
+%doc COLAMD/README.txt COLAMD/Doc/ChangeLog
+%attr(755,root,root) %{_libdir}/libcolamd.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libcolamd.so.0
+
+%files COLAMD-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libcolamd.so
+%{_libdir}/libcolamd.la
+%{_includedir}/suitesparse/colamd.h
+
+%files COLAMD-static
+%defattr(644,root,root,755)
+%{_libdir}/libcolamd.a
+
+%files CHOLMOD
+%defattr(644,root,root,755)
+%doc CHOLMOD/README.txt CHOLMOD/Doc/ChangeLog
+%attr(755,root,root) %{_libdir}/libcholmod.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libcholmod.so.0
+
+%files CHOLMOD-devel
+%defattr(644,root,root,755)
+%doc CHOLMOD/Doc/UserGuide.pdf
+%attr(755,root,root) %{_libdir}/libcholmod.so
+%{_libdir}/libcholmod.la
+%{_includedir}/suitesparse/cholmod*.h
+
+%files CHOLMOD-static
+%defattr(644,root,root,755)
+%{_libdir}/libcholmod.a
+
+%files CXSparse
+%defattr(644,root,root,755)
+%doc CXSparse/README.txt CXSparse/Doc/{ChangeLog,License.txt}
+%attr(755,root,root) %{_libdir}/libcxsparse.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libcxsparse.so.0
+
+%files CXSparse-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libcxsparse.so
+%{_libdir}/libcxsparse.la
+%{_includedir}/suitesparse/cs.h
+
+%files CXSparse-static
+%defattr(644,root,root,755)
+%{_libdir}/libcxsparse.a
+
+%files KLU
+%defattr(644,root,root,755)
+%doc KLU/README.txt KLU/Doc/ChangeLog
+%attr(755,root,root) %{_libdir}/libklu.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libklu.so.0
+
+%files KLU-devel
+%defattr(644,root,root,755)
+%doc KLU/Doc/{KLU_UserGuide,palamadai_e}.pdf
+%attr(755,root,root) %{_libdir}/libklu.so
+%{_libdir}/libklu.la
+%{_includedir}/suitesparse/klu.h
+
+%files KLU-static
+%defattr(644,root,root,755)
+%{_libdir}/libklu.a
+
+%files LDL
+%defattr(644,root,root,755)
+%doc LDL/README.txt LDL/Doc/ChangeLog
+%attr(755,root,root) %{_libdir}/libldl.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libldl.so.0
+
+%files LDL-devel
+%defattr(644,root,root,755)
+%doc LDL/Doc/ldl_userguide.pdf
+%attr(755,root,root) %{_libdir}/libldl.so
+%{_libdir}/libldl.la
+%{_includedir}/suitesparse/ldl.h
+
+%files LDL-static
+%defattr(644,root,root,755)
+%{_libdir}/libldl.a
+
+%files RBio
+%defattr(644,root,root,755)
+%doc RBio/README.txt RBio/Doc/{ChangeLog,License.txt}
+%attr(755,root,root) %{_libdir}/librbio.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/librbio.so.0
+
+%files RBio-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/librbio.so
+%{_libdir}/librbio.la
+%{_includedir}/suitesparse/RBio.h
+
+%files RBio-static
+%defattr(644,root,root,755)
+%{_libdir}/librbio.a
+
+%files SPQR
+%defattr(644,root,root,755)
+%doc SPQR/README.txt SPQR/Doc/ChangeLog
+%attr(755,root,root) %{_libdir}/libspqr.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libspqr.so.0
+
+%files SPQR-devel
+%defattr(644,root,root,755)
+%doc SPQR/Doc/{algo_spqr,spqr,spqr_user_guide}.pdf
+%attr(755,root,root) %{_libdir}/libspqr.so
+%{_libdir}/libspqr.la
+%{_includedir}/suitesparse/SuiteSparseQR.hpp
+%{_includedir}/suitesparse/SuiteSparseQR*.h
+%{_includedir}/suitesparse/spqr.hpp
+
+%files SPQR-static
+%defattr(644,root,root,755)
+%{_libdir}/libspqr.a
+
+%files UMFPACK
+%defattr(644,root,root,755)
+%doc UMFPACK/README.txt UMFPACK/Doc/{ChangeLog,License}
+%attr(755,root,root) %{_libdir}/libumfpack.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libumfpack.so.0
+
+%files UMFPACK-devel
+%defattr(644,root,root,755)
+%doc UMFPACK/Doc/{QuickStart,UserGuide}.pdf
+%attr(755,root,root) %{_libdir}/libumfpack.so
+%{_libdir}/libumfpack.la
+%{_includedir}/suitesparse/umfpack*.h
+
+%files UMFPACK-static
+%defattr(644,root,root,755)
+%{_libdir}/libumfpack.a
diff --git a/SuiteSparse-ILP32.patch b/SuiteSparse-ILP32.patch
new file mode 100644
index 0000000..35de673
--- /dev/null
+++ b/SuiteSparse-ILP32.patch
@@ -0,0 +1,20 @@
+--- SuiteSparse/AMD/Demo/amd_l_demo.out.orig	2014-03-21 20:21:58.000000000 +0100
++++ SuiteSparse/AMD/Demo/amd_l_demo.out	2023-01-08 19:10:17.659993999 +0100
+@@ -6,7 +6,7 @@ AMD version 2.4.0, July 31, 2013: approx
+     (rows with more than max (10 * sqrt (n), 16) entries are
+     considered "dense", and placed last in output permutation)
+     aggressive absorption:  yes
+-    size of AMD integer: 8
++    size of AMD integer: 4
+ 
+ 
+ Input matrix:  24-by-24, with 160 entries.
+@@ -123,7 +123,7 @@ AMD version 2.4.0, July 31, 2013, result
+     number of nonzeros on diagonal:                     24
+     nonzeros in pattern of A+A' (excl. diagonal):       136
+     # dense rows/columns of A+A':                       0
+-    memory used, in bytes:                              3032
++    memory used, in bytes:                              1516
+     # of memory compactions:                            0
+ 
+     The following approximate statistics are for a subsequent
diff --git a/SuiteSparse-config.patch b/SuiteSparse-config.patch
new file mode 100644
index 0000000..f188f71
--- /dev/null
+++ b/SuiteSparse-config.patch
@@ -0,0 +1,44 @@
+--- SuiteSparse/SuiteSparse_config/SuiteSparse_config.mk.orig	2014-08-16 21:22:58.000000000 +0200
++++ SuiteSparse/SuiteSparse_config/SuiteSparse_config.mk	2023-01-03 21:21:55.047555049 +0100
+@@ -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) -fPIC
+ # for the MKL BLAS:
+ # CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O3 -fexceptions -fPIC -I$(MKLROOT)/include -D_GNU_SOURCE
+ 
+@@ -84,7 +84,7 @@ MV = mv -f
+ 
+ # Fortran compiler (not required for 'make' or 'make library')
+ F77 = gfortran
+-F77FLAGS = $(FFLAGS) -O
++F77FLAGS = $(FFLAGS)
+ F77LIB =
+ 
+ # C and Fortran libraries.  Remove -lrt if you don't have it.
+@@ -93,8 +93,10 @@ F77LIB =
+ # LIB = -lm
+ 
+ # For "make install"
+-INSTALL_LIB = /usr/local/lib
+-INSTALL_INCLUDE = /usr/local/include
++INSTALL_PREFIX = /usr
++LIB_SUBDIR = lib
++INSTALL_LIB = $(INSTALL_PREFIX)/$(LIB_SUBDIR)
++INSTALL_INCLUDE = $(INSTALL_PREFIX)/include/suitesparse
+ 
+ # Which version of MAKE you are using (default is "make")
+ # MAKE = make
+@@ -210,8 +212,8 @@ XERBLA =
+ # 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 = /usr/include/metis
++METIS = -lmetis
+ 
+ #------------------------------------------------------------------------------
+ # UMFPACK configuration:
diff --git a/SuiteSparse-externc.patch b/SuiteSparse-externc.patch
new file mode 100644
index 0000000..1e82b1f
--- /dev/null
+++ b/SuiteSparse-externc.patch
@@ -0,0 +1,595 @@
+--- SuiteSparse/SuiteSparse_config/SuiteSparse_config.h.orig	2014-07-16 23:35:20.000000000 +0200
++++ SuiteSparse/SuiteSparse_config/SuiteSparse_config.h	2023-01-03 21:51:47.241179236 +0100
+@@ -38,14 +38,14 @@
+ #ifndef SUITESPARSE_CONFIG_H
+ #define SUITESPARSE_CONFIG_H
+ 
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+ #include <limits.h>
+ #include <stdlib.h>
+ #include <math.h>
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* ========================================================================== */
+ /* === SuiteSparse_long ===================================================== */
+ /* ========================================================================== */
+--- SuiteSparse/AMD/Include/amd.h.orig	2014-03-21 20:21:57.000000000 +0100
++++ SuiteSparse/AMD/Include/amd.h	2023-01-04 20:58:16.230505798 +0100
+@@ -35,16 +35,16 @@
+ #ifndef AMD_H
+ #define AMD_H
+ 
++/* get the definition of size_t: */
++#include <stddef.h>
++
++#include "SuiteSparse_config.h"
++
+ /* make it easy for C++ programs to include AMD */
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+-/* get the definition of size_t: */
+-#include <stddef.h>
+-
+-#include "SuiteSparse_config.h"
+-
+ int amd_order                  /* returns AMD_OK, AMD_OK_BUT_JUMBLED,
+                                 * AMD_INVALID, or AMD_OUT_OF_MEMORY */
+ (
+--- SuiteSparse/BTF/Include/btf.h.orig	2023-01-05 21:42:08.734841990 +0100
++++ SuiteSparse/BTF/Include/btf.h	2023-01-05 21:42:11.574826604 +0100
+@@ -88,13 +88,13 @@
+ #ifndef _BTF_H
+ #define _BTF_H
+ 
++#include "SuiteSparse_config.h"
++
+ /* make it easy for C++ programs to include BTF */
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+-#include "SuiteSparse_config.h"
+-
+ int btf_maxtrans    /* returns # of columns matched */
+ (
+     /* --- input, not modified: --- */
+--- SuiteSparse/CAMD/Include/camd.h.orig	2014-03-21 20:21:51.000000000 +0100
++++ SuiteSparse/CAMD/Include/camd.h	2023-01-07 11:34:30.942879513 +0100
+@@ -23,16 +23,16 @@
+ #ifndef CAMD_H
+ #define CAMD_H
+ 
+-/* make it easy for C++ programs to include CAMD */
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+ /* get the definition of size_t: */
+ #include <stddef.h>
+ 
+ #include "SuiteSparse_config.h"
+ 
++/* make it easy for C++ programs to include CAMD */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ int camd_order              /* returns CAMD_OK, CAMD_OK_BUT_JUMBLED,
+                              * CAMD_INVALID, or CAMD_OUT_OF_MEMORY */
+ (
+--- SuiteSparse/CCOLAMD/Include/ccolamd.h.orig	2014-03-21 20:21:07.000000000 +0100
++++ SuiteSparse/CCOLAMD/Include/ccolamd.h	2023-01-07 14:56:06.067354598 +0100
+@@ -16,14 +16,14 @@
+ #ifndef CCOLAMD_H
+ #define CCOLAMD_H
+ 
++/* for size_t definition: */
++#include <stdlib.h>
++
+ /* make it easy for C++ programs to include CCOLAMD */
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+-/* for size_t definition: */
+-#include <stdlib.h>
+-
+ /* ========================================================================== */
+ /* === CCOLAMD version ====================================================== */
+ /* ========================================================================== */
+--- SuiteSparse/COLAMD/Include/colamd.h.orig	2014-03-21 20:13:38.000000000 +0100
++++ SuiteSparse/COLAMD/Include/colamd.h	2023-01-07 16:11:41.276118597 +0100
+@@ -44,17 +44,17 @@
+ #ifndef COLAMD_H
+ #define COLAMD_H
+ 
+-/* make it easy for C++ programs to include COLAMD */
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+ /* ========================================================================== */
+ /* === Include files ======================================================== */
+ /* ========================================================================== */
+ 
+ #include <stdlib.h>
+ 
++/* make it easy for C++ programs to include COLAMD */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* ========================================================================== */
+ /* === COLAMD version ======================================================= */
+ /* ========================================================================== */
+--- SuiteSparse/CHOLMOD/Include/cholmod_blas.h.orig	2023-01-07 17:06:54.181504381 +0100
++++ SuiteSparse/CHOLMOD/Include/cholmod_blas.h	2023-01-07 17:06:58.504814293 +0100
+@@ -15,6 +15,11 @@
+ #ifndef CHOLMOD_BLAS_H
+ #define CHOLMOD_BLAS_H
+ 
++/* make it easy for C++ programs to include CHOLMOD */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* ========================================================================== */
+ /* === Architecture ========================================================= */
+ /* ========================================================================== */
+@@ -452,4 +457,8 @@ void BLAS_ZGER (BLAS_INT *m, BLAS_INT *n
+     } \
+ }
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+--- SuiteSparse/CHOLMOD/Include/cholmod_camd.h.orig	2014-03-21 20:11:21.000000000 +0100
++++ SuiteSparse/CHOLMOD/Include/cholmod_camd.h	2023-01-07 17:07:49.154539900 +0100
+@@ -31,6 +31,10 @@
+ 
+ #include "cholmod_core.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* -------------------------------------------------------------------------- */
+ /* cholmod_ccolamd */
+ /* -------------------------------------------------------------------------- */
+@@ -99,4 +103,8 @@ int cholmod_camd
+ int cholmod_l_camd (cholmod_sparse *, SuiteSparse_long *, size_t,
+     SuiteSparse_long *, SuiteSparse_long *, cholmod_common *) ;
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+--- SuiteSparse/CHOLMOD/Include/cholmod_check.h.orig	2014-03-21 20:11:21.000000000 +0100
++++ SuiteSparse/CHOLMOD/Include/cholmod_check.h	2023-01-07 17:08:22.791024342 +0100
+@@ -69,6 +69,11 @@
+ #include "cholmod_core.h"
+ #include <stdio.h>
+ 
++/* make it easy for C++ programs to include CHOLMOD */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* -------------------------------------------------------------------------- */
+ /* cholmod_check_common:  check the Common object */
+ /* -------------------------------------------------------------------------- */
+@@ -424,4 +429,9 @@ int cholmod_write_dense
+ 
+ int cholmod_l_write_dense (FILE *, cholmod_dense *, const char *,
+     cholmod_common *) ;
++
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+--- SuiteSparse/CHOLMOD/Include/cholmod_cholesky.h.orig	2014-06-04 21:33:21.000000000 +0200
++++ SuiteSparse/CHOLMOD/Include/cholmod_cholesky.h	2023-01-07 17:09:00.270821296 +0100
+@@ -67,6 +67,11 @@
+ #include "cholmod_supernodal.h"
+ #endif
+ 
++/* make it easy for C++ programs to include CHOLMOD */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* -------------------------------------------------------------------------- */
+ /* cholmod_analyze:  order and analyze (simplicial or supernodal) */
+ /* -------------------------------------------------------------------------- */
+@@ -584,4 +589,8 @@ SuiteSparse_long cholmod_postorder	/* re
+ SuiteSparse_long cholmod_l_postorder (SuiteSparse_long *, size_t,
+     SuiteSparse_long *, SuiteSparse_long *, cholmod_common *) ;
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+--- SuiteSparse/CHOLMOD/Include/cholmod_core.h.orig	2014-07-15 00:01:23.000000000 +0200
++++ SuiteSparse/CHOLMOD/Include/cholmod_core.h	2023-01-07 17:11:23.860043407 +0100
+@@ -294,6 +294,11 @@
+ 
+ 
+ 
++/* make it easy for C++ programs to include CHOLMOD */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* ========================================================================== */
+ /* === CHOLMOD objects ====================================================== */
+ /* ========================================================================== */
+@@ -2432,4 +2437,8 @@ int cholmod_l_version (int version [3])
+ 
+ #endif
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+--- SuiteSparse/CHOLMOD/Include/cholmod_gpu.h.orig	2014-03-24 15:11:20.000000000 +0100
++++ SuiteSparse/CHOLMOD/Include/cholmod_gpu.h	2023-01-07 17:13:58.369206359 +0100
+@@ -23,6 +23,11 @@
+ #include <fenv.h>
+ #endif
+ 
++/* make it easy for C++ programs to include CHOLMOD */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* CHOLMOD_GPU_PRINTF: for printing GPU debug error messages */
+ /*
+ #define CHOLMOD_GPU_PRINTF(args) printf args
+@@ -77,4 +82,8 @@ void cholmod_l_gpu_end ( cholmod_common
+ int cholmod_gpu_allocate   ( cholmod_common *Common ) ;
+ int cholmod_l_gpu_allocate ( cholmod_common *Common ) ;
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+--- SuiteSparse/CHOLMOD/Include/cholmod_gpu_kernels.h.orig	2014-03-23 01:15:27.000000000 +0100
++++ SuiteSparse/CHOLMOD/Include/cholmod_gpu_kernels.h	2023-01-07 17:14:19.432425583 +0100
+@@ -19,13 +19,13 @@
+ #ifndef CHOLMODGPUKERNELS_H
+ #define CHOLMODGPUKERNELS_H
+ 
++#include "SuiteSparse_config.h"
++
+ /* make it easy for C++ programs to include CHOLMOD */
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+-#include "SuiteSparse_config.h"
+-
+ int createMapOnDevice ( Int *d_Map, Int *d_Ls, Int psi, Int nsrow ); 
+ 
+ int createRelativeMapOnDevice ( Int *d_Map, Int *d_Ls, Int *d_RelativeMap,
+--- SuiteSparse/CHOLMOD/Include/cholmod_matrixops.h.orig	2014-03-21 20:11:19.000000000 +0100
++++ SuiteSparse/CHOLMOD/Include/cholmod_matrixops.h	2023-01-07 17:19:34.947382958 +0100
+@@ -37,6 +37,11 @@
+ 
+ #include "cholmod_core.h"
+ 
++/* make it easy for C++ programs to include CHOLMOD */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* -------------------------------------------------------------------------- */
+ /* cholmod_drop:  drop entries with small absolute value */
+ /* -------------------------------------------------------------------------- */
+@@ -234,4 +239,8 @@ int cholmod_l_symmetry (cholmod_sparse *
+     SuiteSparse_long *, SuiteSparse_long *, SuiteSparse_long *,
+     cholmod_common *) ;
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+--- SuiteSparse/CHOLMOD/Include/cholmod_modify.h.orig	2014-06-04 21:44:15.000000000 +0200
++++ SuiteSparse/CHOLMOD/Include/cholmod_modify.h	2023-01-07 17:20:07.183874985 +0100
+@@ -47,6 +47,11 @@
+ 
+ #include "cholmod_core.h"
+ 
++/* make it easy for C++ programs to include CHOLMOD */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* -------------------------------------------------------------------------- */
+ /* cholmod_updown:  multiple rank update/downdate */
+ /* -------------------------------------------------------------------------- */
+@@ -324,4 +329,8 @@ int cholmod_l_rowdel_mark (size_t, cholm
+     SuiteSparse_long *, cholmod_factor *, cholmod_dense *, cholmod_dense *,
+     cholmod_common *) ;
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+--- SuiteSparse/CHOLMOD/Include/cholmod_partition.h.orig	2014-03-21 20:11:21.000000000 +0100
++++ SuiteSparse/CHOLMOD/Include/cholmod_partition.h	2023-01-07 17:20:32.837069343 +0100
+@@ -40,6 +40,11 @@
+ #include "cholmod_core.h"
+ #include "cholmod_camd.h"
+ 
++/* make it easy for C++ programs to include CHOLMOD */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* -------------------------------------------------------------------------- */
+ /* cholmod_nested_dissection */
+ /* -------------------------------------------------------------------------- */
+@@ -163,4 +168,8 @@ SuiteSparse_long cholmod_collapse_septre
+ SuiteSparse_long cholmod_l_collapse_septree (size_t, size_t, double, size_t,
+     SuiteSparse_long *, SuiteSparse_long *, cholmod_common *) ;
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+--- SuiteSparse/CHOLMOD/Include/cholmod_supernodal.h.orig	2014-03-21 20:11:21.000000000 +0100
++++ SuiteSparse/CHOLMOD/Include/cholmod_supernodal.h	2023-01-07 17:21:07.966879028 +0100
+@@ -49,6 +49,11 @@
+ 
+ #include "cholmod_core.h"
+ 
++/* make it easy for C++ programs to include CHOLMOD */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* -------------------------------------------------------------------------- */
+ /* cholmod_super_symbolic */
+ /* -------------------------------------------------------------------------- */
+@@ -169,4 +174,8 @@ int cholmod_super_ltsolve
+ int cholmod_l_super_ltsolve (cholmod_factor *, cholmod_dense *, cholmod_dense *,
+     cholmod_common *) ;
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+--- SuiteSparse/CHOLMOD/Include/cholmod.h.orig	2014-07-14 21:46:58.000000000 +0200
++++ SuiteSparse/CHOLMOD/Include/cholmod.h	2023-01-07 17:21:32.796744513 +0100
+@@ -79,11 +79,6 @@
+ #include <cuda_runtime.h>
+ #endif
+ 
+-/* make it easy for C++ programs to include CHOLMOD */
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+ /* assume large file support.  If problems occur, compile with -DNLARGEFILE */
+ #include "cholmod_io64.h"
+ 
+@@ -126,8 +121,4 @@ extern "C" {
+ #include "cholmod_gpu.h"
+ #endif
+ 
+-#ifdef __cplusplus
+-}
+-#endif
+-
+ #endif
+--- SuiteSparse/CSparse/Include/cs.h.orig	2014-03-25 15:57:25.000000000 +0100
++++ SuiteSparse/CSparse/Include/cs.h	2023-01-07 18:34:53.096239378 +0100
+@@ -14,6 +14,10 @@
+ #define CS_DATE "Mar 26, 2014"    /* CSparse release date */
+ #define CS_COPYRIGHT "Copyright (c) Timothy A. Davis, 2006-2014"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ #ifdef MATLAB_MEX_FILE
+ #undef csi
+ #define csi mwSignedIndex
+@@ -149,4 +153,9 @@ csn *cs_ndone (csn *N, cs *C, void *w, v
+ #define CS_MARK(w,j) { w [j] = CS_FLIP (w [j]) ; }
+ #define CS_CSC(A) (A && (A->nz == -1))
+ #define CS_TRIPLET(A) (A && (A->nz >= 0))
++
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+--- SuiteSparse/CXSparse/Include/cs.h.orig	2014-03-25 15:57:05.000000000 +0100
++++ SuiteSparse/CXSparse/Include/cs.h	2023-01-07 20:23:44.164190879 +0100
+@@ -14,7 +14,6 @@
+ #include <complex>
+ typedef std::complex<double> cs_complex_t ;
+ #endif
+-extern "C" {
+ #else
+ #ifndef NCOMPLEX
+ #include <complex.h>
+@@ -34,6 +33,10 @@ extern "C" {
+ #define cs_long_t_id    SuiteSparse_long_id
+ #define cs_long_t_max   SuiteSparse_long_max
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* -------------------------------------------------------------------------- */
+ /* double/int version of CXSparse */
+ /* -------------------------------------------------------------------------- */
+--- SuiteSparse/KLU/Include/klu.h.orig	2014-03-21 20:21:26.000000000 +0100
++++ SuiteSparse/KLU/Include/klu.h	2023-01-07 19:11:09.271116694 +0100
+@@ -7,15 +7,15 @@
+ #ifndef _KLU_H
+ #define _KLU_H
+ 
++#include "amd.h"
++#include "colamd.h"
++#include "btf.h"
++
+ /* make it easy for C++ programs to include KLU */
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+-#include "amd.h"
+-#include "colamd.h"
+-#include "btf.h"
+-
+ /* -------------------------------------------------------------------------- */
+ /* Symbolic object - contains the pre-ordering computed by klu_analyze */
+ /* -------------------------------------------------------------------------- */
+--- SuiteSparse/LDL/Include/ldl.h.orig	2014-03-21 20:21:11.000000000 +0100
++++ SuiteSparse/LDL/Include/ldl.h	2023-01-07 20:22:25.274618261 +0100
+@@ -38,6 +38,10 @@
+ 
+ #endif
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* ========================================================================== */
+ /* === int version ========================================================== */
+ /* ========================================================================== */
+@@ -110,3 +114,6 @@ SuiteSparse_long ldl_l_valid_matrix ( Su
+ #define LDL_SUBSUB_VERSION 0
+ #define LDL_VERSION LDL_VERSION_CODE(LDL_MAIN_VERSION,LDL_SUB_VERSION)
+ 
++#ifdef __cplusplus
++}
++#endif
+--- SuiteSparse/RBio/Include/RBio.h.orig	2014-03-21 20:22:01.000000000 +0100
++++ SuiteSparse/RBio/Include/RBio.h	2023-01-07 20:55:56.607055271 +0100
+@@ -46,10 +46,6 @@
+ 
+ #include "SuiteSparse_config.h"
+ 
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+ #include <stddef.h>
+ #include <string.h>
+ #include <stdio.h>
+@@ -60,6 +56,10 @@ extern "C" {
+ #include "mex.h"
+ #endif
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* -------------------------------------------------------------------------- */
+ /* error codes */
+ /* -------------------------------------------------------------------------- */
+--- SuiteSparse/SPQR/Include/SuiteSparseQR_C.h.orig	2012-05-28 01:00:20.000000000 +0200
++++ SuiteSparse/SPQR/Include/SuiteSparseQR_C.h	2023-01-07 21:28:30.366470847 +0100
+@@ -11,7 +11,6 @@
+ /* If included by a C++ program, the Complex type is std::complex<double> */
+ #include <complex>
+ #define Complex std::complex<double>
+-extern "C" {
+ #endif
+ 
+ #include "cholmod.h"
+@@ -22,6 +21,8 @@ extern "C" {
+    size n, which the C code must then interpret as double array of size 2*n,
+    with real and imaginary parts interleaved. */
+ #define Complex double
++#else
++extern "C" {
+ #endif
+ 
+ /* ========================================================================== */
+--- SuiteSparse/SPQR/Include/SuiteSparseQR.hpp.orig	2014-03-19 20:35:43.000000000 +0100
++++ SuiteSparse/SPQR/Include/SuiteSparseQR.hpp	2023-01-07 21:29:05.256281833 +0100
+@@ -11,11 +11,8 @@
+ // include files
+ // -----------------------------------------------------------------------------
+ 
+-extern "C"
+-{
+ #include "cholmod.h"
+ #include "SuiteSparseQR_definitions.h"
+-}
+ 
+ // =============================================================================
+ // === spqr_symbolic ===========================================================
+--- SuiteSparse/SPQR/Include/spqr.hpp.orig	2014-03-19 20:39:23.000000000 +0100
++++ SuiteSparse/SPQR/Include/spqr.hpp	2023-01-07 21:29:30.076147372 +0100
+@@ -1015,9 +1015,7 @@ inline Long spqr_mult (Long a, Long b, i
+ // To compile SuiteSparseQR with 64-bit BLAS, use -DBLAS64.  See also
+ // CHOLMOD/Include/cholmod_blas.h
+ 
+-extern "C" {
+ #include "cholmod_blas.h"
+-}
+ 
+ #undef CHECK_BLAS_INT
+ #undef EQ
+--- SuiteSparse/UMFPACK/Include/umfpack.h.orig	2014-03-21 20:16:08.000000000 +0100
++++ SuiteSparse/UMFPACK/Include/umfpack.h	2023-01-07 21:59:54.662929404 +0100
+@@ -22,10 +22,6 @@
+ /* Make it easy for C++ programs to include UMFPACK */
+ /* -------------------------------------------------------------------------- */
+ 
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+ #include "SuiteSparse_config.h"
+ 
+ /* -------------------------------------------------------------------------- */
+@@ -42,6 +38,13 @@ extern "C" {
+ /* User-callable routines */
+ /* -------------------------------------------------------------------------- */
+ 
++/* AMD */
++#include "amd.h"
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* Primary routines: */
+ #include "umfpack_symbolic.h"
+ #include "umfpack_numeric.h"
+@@ -85,9 +88,6 @@ extern "C" {
+ #include "umfpack_timer.h"
+ #include "umfpack_tictoc.h"
+ 
+-/* AMD */
+-#include "amd.h"
+-
+ /* global function pointers */
+ #include "umfpack_global.h"
+ 
diff --git a/SuiteSparse-metis.patch b/SuiteSparse-metis.patch
new file mode 100644
index 0000000..41b4091
--- /dev/null
+++ b/SuiteSparse-metis.patch
@@ -0,0 +1,249 @@
+--- SuiteSparse/CHOLMOD/Partition/cholmod_metis.c.orig	2012-05-29 17:02:05.000000000 +0200
++++ SuiteSparse/CHOLMOD/Partition/cholmod_metis.c	2012-06-27 18:05:33.131952214 +0200
+@@ -75,7 +75,7 @@
+ #ifdef DUMP_GRAPH
+ #include <stdio.h>
+ /* After dumping the graph with this routine, run "onmetis metisgraph" */
+-static void dumpgraph (idxtype *Mp, idxtype *Mi, SuiteSparse_long n,
++static void dumpgraph (idx_t *Mp, idx_t *Mi, SuiteSparse_long n,
+     cholmod_common *Common)
+ {
+     SuiteSparse_long i, j, p, nz ;
+@@ -161,7 +161,7 @@
+     s = GUESS ((double) nz, (double) n) ;
+     s *= Common->metis_memory ;
+ 
+-    if (s * sizeof (idxtype) >= ((double) Size_max))
++    if (s * sizeof (idx_t) >= ((double) Size_max))
+     {
+ 	/* don't even attempt to malloc such a large block */
+ 	return (FALSE) ;
+@@ -172,7 +172,7 @@
+     metis_guard *= Common->metis_memory ;
+ 
+     /* attempt to malloc the block */
+-    p = CHOLMOD(malloc) (metis_guard, sizeof (idxtype), Common) ;
++    p = CHOLMOD(malloc) (metis_guard, sizeof (idx_t), Common) ;
+     if (p == NULL)
+     {
+ 	/* failure - return out-of-memory condition */
+@@ -180,7 +180,7 @@
+     }
+ 
+     /* success - free the block */
+-    CHOLMOD(free) (metis_guard, sizeof (idxtype), p, Common) ;
++    CHOLMOD(free) (metis_guard, sizeof (idx_t), p, Common) ;
+     return (TRUE) ;
+ }
+ 
+@@ -210,7 +210,7 @@
+ )
+ {
+     Int *Ap, *Ai ;
+-    idxtype *Mp, *Mi, *Mnw, *Mew, *Mpart ;
++    idx_t *Mp, *Mi, *Mnw, *Mew, *Mpart ;
+     Int n, nleft, nright, j, p, csep, total_weight, lightest, nz ;
+     int Opt [8], nn, csp ;
+     size_t n1 ;
+@@ -259,7 +259,7 @@
+     /* ---------------------------------------------------------------------- */
+ 
+ #ifdef LONG
+-    if (sizeof (Int) > sizeof (idxtype) && MAX (n,nz) > INT_MAX / sizeof (int))
++    if (sizeof (Int) > sizeof (idx_t) && MAX (n,nz) > INT_MAX / sizeof (int))
+     {
+ 	/* CHOLMOD's matrix is too large for METIS */
+ 	return (EMPTY) ;
+@@ -282,34 +282,34 @@
+     DEBUG (for (j = 0 ; j < n ; j++) ASSERT (Anw [j] > 0)) ;
+ 
+     /* ---------------------------------------------------------------------- */
+-    /* copy Int to METIS idxtype, if necessary */
++    /* copy Int to METIS idx_t, if necessary */
+     /* ---------------------------------------------------------------------- */
+ 
+     DEBUG (for (j = 0 ; j < nz ; j++) ASSERT (Aew [j] > 0)) ;
+-    if (sizeof (Int) == sizeof (idxtype))
++    if (sizeof (Int) == sizeof (idx_t))
+     {
+ 	/* this is the typical case */
+-	Mi    = (idxtype *) Ai ;
+-	Mew   = (idxtype *) Aew ;
+-	Mp    = (idxtype *) Ap ;
+-	Mnw   = (idxtype *) Anw ;
+-	Mpart = (idxtype *) Partition ;
++	Mi    = (idx_t *) Ai ;
++	Mew   = (idx_t *) Aew ;
++	Mp    = (idx_t *) Ap ;
++	Mnw   = (idx_t *) Anw ;
++	Mpart = (idx_t *) Partition ;
+     }
+     else
+     {
+-	/* idxtype and Int differ; copy the graph into the METIS idxtype */
+-	Mi    = CHOLMOD(malloc) (nz, sizeof (idxtype), Common) ;
+-	Mew   = CHOLMOD(malloc) (nz, sizeof (idxtype), Common) ;
+-	Mp    = CHOLMOD(malloc) (n1, sizeof (idxtype), Common) ;
+-	Mnw   = CHOLMOD(malloc) (n,  sizeof (idxtype), Common) ;
+-	Mpart = CHOLMOD(malloc) (n,  sizeof (idxtype), Common) ;
++	/* idx_t and Int differ; copy the graph into the METIS idx_t */
++	Mi    = CHOLMOD(malloc) (nz, sizeof (idx_t), Common) ;
++	Mew   = CHOLMOD(malloc) (nz, sizeof (idx_t), Common) ;
++	Mp    = CHOLMOD(malloc) (n1, sizeof (idx_t), Common) ;
++	Mnw   = CHOLMOD(malloc) (n,  sizeof (idx_t), Common) ;
++	Mpart = CHOLMOD(malloc) (n,  sizeof (idx_t), Common) ;
+ 	if (Common->status < CHOLMOD_OK)
+ 	{
+-	    CHOLMOD(free) (nz, sizeof (idxtype), Mi,    Common) ;
+-	    CHOLMOD(free) (nz, sizeof (idxtype), Mew,   Common) ;
+-	    CHOLMOD(free) (n1, sizeof (idxtype), Mp,    Common) ;
+-	    CHOLMOD(free) (n,  sizeof (idxtype), Mnw,   Common) ;
+-	    CHOLMOD(free) (n,  sizeof (idxtype), Mpart, Common) ;
++	    CHOLMOD(free) (nz, sizeof (idx_t), Mi,    Common) ;
++	    CHOLMOD(free) (nz, sizeof (idx_t), Mew,   Common) ;
++	    CHOLMOD(free) (n1, sizeof (idx_t), Mp,    Common) ;
++	    CHOLMOD(free) (n,  sizeof (idx_t), Mnw,   Common) ;
++	    CHOLMOD(free) (n,  sizeof (idx_t), Mpart, Common) ;
+ 	    return (EMPTY) ;
+ 	}
+ 	for (p = 0 ; p < nz ; p++)
+@@ -337,13 +337,13 @@
+     if (!metis_memory_ok (n, nz, Common))
+     {
+ 	/* METIS might ask for too much memory and thus terminate the program */
+-	if (sizeof (Int) != sizeof (idxtype))
++	if (sizeof (Int) != sizeof (idx_t))
+ 	{
+-	    CHOLMOD(free) (nz, sizeof (idxtype), Mi,    Common) ;
+-	    CHOLMOD(free) (nz, sizeof (idxtype), Mew,   Common) ;
+-	    CHOLMOD(free) (n1, sizeof (idxtype), Mp,    Common) ;
+-	    CHOLMOD(free) (n,  sizeof (idxtype), Mnw,   Common) ;
+-	    CHOLMOD(free) (n,  sizeof (idxtype), Mpart, Common) ;
++	    CHOLMOD(free) (nz, sizeof (idx_t), Mi,    Common) ;
++	    CHOLMOD(free) (nz, sizeof (idx_t), Mew,   Common) ;
++	    CHOLMOD(free) (n1, sizeof (idx_t), Mp,    Common) ;
++	    CHOLMOD(free) (n,  sizeof (idx_t), Mnw,   Common) ;
++	    CHOLMOD(free) (n,  sizeof (idx_t), Mpart, Common) ;
+ 	}
+ 	return (EMPTY) ;
+     }
+@@ -369,27 +369,27 @@
+ #endif
+ 
+     nn = n ;
+-    METIS_NodeComputeSeparator (&nn, Mp, Mi, Mnw, Mew, Opt, &csp, Mpart) ;
++    METIS_ComputeVertexSeparator (&nn, Mp, Mi, Mnw, Opt, &csp, Mpart) ;
+     n = nn ;
+     csep = csp ;
+ 
+     PRINT1 (("METIS csep "ID"\n", csep)) ;
+ 
+     /* ---------------------------------------------------------------------- */
+-    /* copy the results back from idxtype, if required */
++    /* copy the results back from idx_t, if required */
+     /* ---------------------------------------------------------------------- */
+ 
+-    if (sizeof (Int) != sizeof (idxtype))
++    if (sizeof (Int) != sizeof (idx_t))
+     {
+ 	for (j = 0 ; j < n ; j++)
+ 	{
+ 	    Partition [j] = Mpart [j] ;
+ 	}
+-	CHOLMOD(free) (nz, sizeof (idxtype), Mi,    Common) ;
+-	CHOLMOD(free) (nz, sizeof (idxtype), Mew,   Common) ;
+-	CHOLMOD(free) (n1, sizeof (idxtype), Mp,    Common) ;
+-	CHOLMOD(free) (n,  sizeof (idxtype), Mnw,   Common) ;
+-	CHOLMOD(free) (n,  sizeof (idxtype), Mpart, Common) ;
++	CHOLMOD(free) (nz, sizeof (idx_t), Mi,    Common) ;
++	CHOLMOD(free) (nz, sizeof (idx_t), Mew,   Common) ;
++	CHOLMOD(free) (n1, sizeof (idx_t), Mp,    Common) ;
++	CHOLMOD(free) (n,  sizeof (idx_t), Mnw,   Common) ;
++	CHOLMOD(free) (n,  sizeof (idx_t), Mpart, Common) ;
+     }
+ 
+     /* ---------------------------------------------------------------------- */
+@@ -507,7 +507,7 @@
+ {
+     double d ;
+     Int *Iperm, *Iwork, *Bp, *Bi ;
+-    idxtype *Mp, *Mi, *Mperm, *Miperm ;
++    idx_t *Mp, *Mi, *Mperm, *Miperm ;
+     cholmod_sparse *B ;
+     Int i, j, n, nz, p, identity, uncol ;
+     int Opt [8], nn, zero = 0 ;
+@@ -600,7 +600,7 @@
+     /* ---------------------------------------------------------------------- */
+ 
+ #ifdef LONG
+-    if (sizeof (Int) > sizeof (idxtype) && MAX (n,nz) > INT_MAX / sizeof (int))
++    if (sizeof (Int) > sizeof (idx_t) && MAX (n,nz) > INT_MAX / sizeof (int))
+     {
+ 	/* CHOLMOD's matrix is too large for METIS */
+ 	CHOLMOD(free_sparse) (&B, Common) ;
+@@ -629,29 +629,29 @@
+     /* allocate the METIS input arrays, if needed */
+     /* ---------------------------------------------------------------------- */
+ 
+-    if (sizeof (Int) == sizeof (idxtype))
++    if (sizeof (Int) == sizeof (idx_t))
+     {
+ 	/* This is the typical case. */
+-	Miperm = (idxtype *) Iperm ;
+-	Mperm  = (idxtype *) Perm ;
+-	Mp     = (idxtype *) Bp ;
+-	Mi     = (idxtype *) Bi ;
++	Miperm = (idx_t *) Iperm ;
++	Mperm  = (idx_t *) Perm ;
++	Mp     = (idx_t *) Bp ;
++	Mi     = (idx_t *) Bi ;
+     }
+     else
+     {
+-	/* allocate graph for METIS only if Int and idxtype differ */
+-	Miperm = CHOLMOD(malloc) (n,  sizeof (idxtype), Common) ;
+-	Mperm  = CHOLMOD(malloc) (n,  sizeof (idxtype), Common) ;
+-	Mp     = CHOLMOD(malloc) (n1, sizeof (idxtype), Common) ;
+-	Mi     = CHOLMOD(malloc) (nz, sizeof (idxtype), Common) ;
++	/* allocate graph for METIS only if Int and idx_t differ */
++	Miperm = CHOLMOD(malloc) (n,  sizeof (idx_t), Common) ;
++	Mperm  = CHOLMOD(malloc) (n,  sizeof (idx_t), Common) ;
++	Mp     = CHOLMOD(malloc) (n1, sizeof (idx_t), Common) ;
++	Mi     = CHOLMOD(malloc) (nz, sizeof (idx_t), Common) ;
+ 	if (Common->status < CHOLMOD_OK)
+ 	{
+ 	    /* out of memory */
+ 	    CHOLMOD(free_sparse) (&B, Common) ;
+-	    CHOLMOD(free) (n,  sizeof (idxtype), Miperm, Common) ;
+-	    CHOLMOD(free) (n,  sizeof (idxtype), Mperm, Common) ;
+-	    CHOLMOD(free) (n1, sizeof (idxtype), Mp, Common) ;
+-	    CHOLMOD(free) (nz, sizeof (idxtype), Mi, Common) ;
++	    CHOLMOD(free) (n,  sizeof (idx_t), Miperm, Common) ;
++	    CHOLMOD(free) (n,  sizeof (idx_t), Mperm, Common) ;
++	    CHOLMOD(free) (n1, sizeof (idx_t), Mp, Common) ;
++	    CHOLMOD(free) (nz, sizeof (idx_t), Mi, Common) ;
+ 	    return (FALSE) ;
+ 	}
+ 	for (j = 0 ; j <= n ; j++)
+@@ -740,16 +740,16 @@
+     /* free the METIS input arrays */
+     /* ---------------------------------------------------------------------- */
+ 
+-    if (sizeof (Int) != sizeof (idxtype))
++    if (sizeof (Int) != sizeof (idx_t))
+     {
+ 	for (i = 0 ; i < n ; i++)
+ 	{
+ 	    Perm [i] = (Int) (Mperm [i]) ;
+ 	}
+-	CHOLMOD(free) (n,   sizeof (idxtype), Miperm, Common) ;
+-	CHOLMOD(free) (n,   sizeof (idxtype), Mperm, Common) ;
+-	CHOLMOD(free) (n+1, sizeof (idxtype), Mp, Common) ;
+-	CHOLMOD(free) (nz,  sizeof (idxtype), Mi, Common) ;
++	CHOLMOD(free) (n,   sizeof (idx_t), Miperm, Common) ;
++	CHOLMOD(free) (n,   sizeof (idx_t), Mperm, Common) ;
++	CHOLMOD(free) (n+1, sizeof (idx_t), Mp, Common) ;
++	CHOLMOD(free) (nz,  sizeof (idx_t), Mi, Common) ;
+     }
+ 
+     CHOLMOD(free_sparse) (&B, Common) ;
diff --git a/SuiteSparse-shared.patch b/SuiteSparse-shared.patch
new file mode 100644
index 0000000..c13e9e0
--- /dev/null
+++ b/SuiteSparse-shared.patch
@@ -0,0 +1,2833 @@
+--- SuiteSparse/Makefile.orig	2014-07-14 22:11:15.000000000 +0200
++++ SuiteSparse/Makefile	2023-01-04 06:22:56.515276025 +0100
+@@ -6,9 +6,7 @@ include SuiteSparse_config/SuiteSparse_c
+ 
+ # Compile the default rules for each package
+ default:
+-	( cd SuiteSparse_config/xerbla && $(MAKE) )
+ 	( cd SuiteSparse_config && $(MAKE) )
+-	- ( cd metis-4.0 && $(MAKE) )
+ 	( cd AMD && $(MAKE) )
+ 	( cd CAMD && $(MAKE) )
+ 	( cd COLAMD && $(MAKE) )
+--- SuiteSparse/SuiteSparse_config/Makefile.orig	2014-07-14 21:59:09.000000000 +0200
++++ SuiteSparse/SuiteSparse_config/Makefile	2023-01-03 21:39:35.228478223 +0100
+@@ -8,17 +8,15 @@ default: ccode
+ 
+ include SuiteSparse_config.mk
+ 
+-ccode: libsuitesparseconfig.a
++ccode: libsuitesparseconfig.la
+ 
+-all: libsuitesparseconfig.a
++all: libsuitesparseconfig.la
+ 
+-library: libsuitesparseconfig.a
++library: libsuitesparseconfig.la
+ 
+-libsuitesparseconfig.a: SuiteSparse_config.c SuiteSparse_config.h
+-	$(CC) $(CF) -c SuiteSparse_config.c
+-	$(ARCHIVE) libsuitesparseconfig.a SuiteSparse_config.o
+-	$(RANLIB) libsuitesparseconfig.a
+-	- $(RM) SuiteSparse_config.o
++libsuitesparseconfig.la: SuiteSparse_config.c SuiteSparse_config.h
++	libtool --mode=compile --tag=CC $(CC) $(CF) -c SuiteSparse_config.c
++	libtool --mode=link --tag=CC $(CC) $(LDFLAGS) $(CFLAGS) -o libsuitesparseconfig.la SuiteSparse_config.lo -lrt -lm -rpath $(INSTALL_LIB)
+ 
+ distclean: purge
+ 
+@@ -30,16 +28,14 @@ clean:
+ 
+ # install SuiteSparse_config
+ install:
+-	$(CP) libsuitesparseconfig.a $(INSTALL_LIB)/libsuitesparseconfig.$(VERSION).a
+-	( cd $(INSTALL_LIB) ; ln -sf libsuitesparseconfig.$(VERSION).a libsuitesparseconfig.a )
+-	$(CP) SuiteSparse_config.h $(INSTALL_INCLUDE)
+-	chmod 644 $(INSTALL_LIB)/libsuitesparseconfig*.a
+-	chmod 644 $(INSTALL_INCLUDE)/SuiteSparse_config.h
++	libtool --mode=install $(CP) libsuitesparseconfig.la $(DESTDIR)$(INSTALL_LIB)
++	$(CP) SuiteSparse_config.h $(DESTDIR)$(INSTALL_INCLUDE)
++	chmod 644 $(DESTDIR)$(INSTALL_INCLUDE)/SuiteSparse_config.h
+ 
+ # uninstall SuiteSparse_config
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/libsuitesparseconfig*.a
+-	$(RM) $(INSTALL_INCLUDE)/SuiteSparse_config.h
++	$(RM) $(DESTDIR)$(INSTALL_LIB)/libsuitesparseconfig.la
++	$(RM) $(DESTDIR)$(INSTALL_INCLUDE)/SuiteSparse_config.h
+ 
+ dif:
+ 	- diff SuiteSparse_config.mk SuiteSparse_config_linux.mk
+--- SuiteSparse/AMD/Demo/Makefile.orig	2023-01-04 20:55:29.531408884 +0100
++++ SuiteSparse/AMD/Demo/Makefile	2023-01-04 20:55:33.198055687 +0100
+@@ -10,7 +10,7 @@ C = $(CC) $(CF) -I../Include -I../../Sui
+ 
+ INC = ../Include/amd.h ../../SuiteSparse_config/SuiteSparse_config.h
+ 
+-LIB2 = ../../SuiteSparse_config/libsuitesparseconfig.a $(LIB)
++LIB2 = ../../SuiteSparse_config/libsuitesparseconfig.la $(LIB)
+ 
+ library:
+ 	( cd ../../SuiteSparse_config ; $(MAKE) )
+@@ -26,22 +26,22 @@ f77lib:
+ dist:
+ 
+ amd_demo: amd_demo.c library $(INC)
+-	$(C) -o amd_demo amd_demo.c ../Lib/libamd.a $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o amd_demo amd_demo.c ../Lib/libamd.la $(LIB2)
+ 	./amd_demo > my_amd_demo.out
+ 	- diff amd_demo.out my_amd_demo.out
+ 
+ amd_l_demo: amd_l_demo.c library $(INC)
+-	$(C) -o amd_l_demo amd_l_demo.c ../Lib/libamd.a $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o amd_l_demo amd_l_demo.c ../Lib/libamd.la $(LIB2)
+ 	./amd_l_demo > my_amd_l_demo.out
+ 	- diff amd_l_demo.out my_amd_l_demo.out
+ 
+ amd_demo2: amd_demo2.c library $(INC)
+-	$(C) -o amd_demo2 amd_demo2.c ../Lib/libamd.a $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o amd_demo2 amd_demo2.c ../Lib/libamd.la $(LIB2)
+ 	./amd_demo2 > my_amd_demo2.out
+ 	- diff amd_demo2.out my_amd_demo2.out
+ 
+ amd_simple: amd_simple.c library $(INC)
+-	$(C) -o amd_simple amd_simple.c ../Lib/libamd.a $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o amd_simple amd_simple.c ../Lib/libamd.la $(LIB2)
+ 	./amd_simple > my_amd_simple.out
+ 	- diff amd_simple.out my_amd_simple.out
+ 
+@@ -54,23 +54,23 @@ fortran: amd_f77demo amd_f77simple
+ cross: amd_f77cross
+ 
+ amd_f77demo: amd_f77demo.f f77lib
+-	$(F77) $(F77FLAGS) -o amd_f77demo amd_f77demo.f ../Lib/libamdf77.a \
++	libtool --tag=F77 --mode=link $(F77) $(LDFLAGS) $(F77FLAGS) -o amd_f77demo amd_f77demo.f ../Lib/libamdf77.la \
+ 	    $(F77LIB)
+ 	./amd_f77demo > my_amd_f77demo.out
+ 	- diff amd_f77demo.out my_amd_f77demo.out
+ 
+ amd_f77simple: amd_f77simple.f f77lib
+-	$(F77) $(F77FLAGS) -o amd_f77simple amd_f77simple.f \
+-	    ../Lib/libamdf77.a $(F77LIB)
++	libtool --tag=F77 --mode=link $(F77) $(LDFLAGS) $(F77FLAGS) -o amd_f77simple amd_f77simple.f \
++	    ../Lib/libamdf77.la $(F77LIB)
+ 	./amd_f77simple > my_amd_f77simple.out
+ 	- diff amd_f77simple.out my_amd_f77simple.out
+ 
+ amd_f77wrapper.o: amd_f77wrapper.c
+ 	$(C) -DDINT -c amd_f77wrapper.c
+ 
+-amd_f77cross:  amd_f77cross.f amd_f77wrapper.o ../Lib/libamd.a
+-	$(F77) $(F77FLAGS) -o amd_f77cross amd_f77cross.f amd_f77wrapper.o \
+-	    ../Lib/libamd.a $(F77LIB)
++amd_f77cross:  amd_f77cross.f amd_f77wrapper.o ../Lib/libamd.la
++	libtool --tag=F77 --mode=link $(F77) $(LDFLAGS) $(F77FLAGS) -o amd_f77cross amd_f77cross.f amd_f77wrapper.o \
++	    ../Lib/libamd.la $(F77LIB)
+ 	./amd_f77cross > my_amd_f77cross.out
+ 	- diff amd_f77cross.out my_amd_f77cross.out
+ 
+--- SuiteSparse/AMD/Lib/GNUmakefile.orig	2014-03-21 20:22:00.000000000 +0100
++++ SuiteSparse/AMD/Lib/GNUmakefile	2023-01-04 21:04:10.698585479 +0100
+@@ -2,7 +2,7 @@
+ # AMD Makefile for compiling on Unix systems (for GNU make only)
+ #-------------------------------------------------------------------------------
+ 
+-default: libamd.a
++default: libamd.la
+ 
+ include ../../SuiteSparse_config/SuiteSparse_config.mk
+ 
+@@ -31,36 +31,42 @@ AMDL = $(addsuffix .o, $(subst amd_,amd_
+ #-------------------------------------------------------------------------------
+ 
+ amd_i_%.o: ../Source/amd_%.c $(INC)
+-	$(C) -DDINT -c $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDINT -c $< -o $@
+ 
+ amd_l_%.o: ../Source/amd_%.c $(INC)
+-	$(C) -DDLONG -c $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $< -o $@
+ 
+ #-------------------------------------------------------------------------------
+ # Create the libamd.a library (C versions only)
+ #-------------------------------------------------------------------------------
+ 
+-libamd.a: $(AMDI) $(AMDL)
+-	$(ARCHIVE) libamd.a $^
+-	- $(RANLIB) libamd.a
++libamd.la: $(AMDI) $(AMDL)
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) -o libamd.la -rpath $(INSTALL_LIB) $(^:.o=.lo) ../../SuiteSparse_config/libsuitesparseconfig.la -lm
++
++install: libamd.la
++	install -d $(DESTDIR)$(INSTALL_LIB)
++	libtool --mode=install install libamd.la $(DESTDIR)$(INSTALL_LIB)
+ 
+ #-------------------------------------------------------------------------------
+ # compile the Fortran versions and the libamdf77.a library
+ #-------------------------------------------------------------------------------
+ 
+-fortran: libamdf77.a
++fortran: libamdf77.la
+ 
+ AMDF77 = amd.o amdbar.o
+ 
+ amd.o: ../Source/amd.f
+-	$(F77) $(F77FLAGS) -c ../Source/amd.f -o amd.o
++	libtool --tag=F77 --mode=compile $(F77) $(F77FLAGS) -c ../Source/amd.f -o amd.o
+ 
+ amdbar.o: ../Source/amdbar.f
+-	$(F77) $(F77FLAGS) -c ../Source/amdbar.f -o amdbar.o
++	libtool --tag=F77 --mode=compile $(F77) $(F77FLAGS) -c ../Source/amdbar.f -o amdbar.o
++
++libamdf77.la: $(AMDF77)
++	libtool --tag=F77 --mode=link $(F77) $(LDFLAGS) -o libamdf77.la -rpath $(INSTALL_LIB) $(^:.o=.lo) -lm
+ 
+-libamdf77.a: $(AMDF77)
+-	$(ARCHIVE) libamdf77.a $^
+-	- $(RANLIB) libamdf77.a
++install-fortran: libamdf77.la
++	install -d $(DESTDIR)$(INSTALL_LIB)
++	libtool --mode=install install libamdf77.la $(DESTDIR)$(INSTALL_LIB)
+ 
+ #-------------------------------------------------------------------------------
+ # Remove all but the files in the original distribution
+@@ -72,4 +78,4 @@ clean:
+ purge: distclean
+ 
+ distclean: clean
+-	- $(RM) libamd.a libamdf77.a
++	- $(RM) libamd.la libamdf77.la
+--- SuiteSparse/AMD/Makefile.orig	2014-03-21 20:22:00.000000000 +0100
++++ SuiteSparse/AMD/Makefile	2023-01-05 21:37:59.756190823 +0100
+@@ -60,14 +60,12 @@ lib: library
+ 
+ # install AMD
+ install:
+-	$(CP) Lib/libamd.a $(INSTALL_LIB)/libamd.$(VERSION).a
+-	( cd $(INSTALL_LIB) ; ln -sf libamd.$(VERSION).a libamd.a )
+-	$(CP) Include/amd.h $(INSTALL_INCLUDE)
+-	chmod 644 $(INSTALL_LIB)/libamd*
+-	chmod 644 $(INSTALL_INCLUDE)/amd.h
++	$(MAKE) -C Lib install install-fortran
++	$(CP) Include/amd.h $(DESTDIR)$(INSTALL_INCLUDE)
++	chmod 644 $(DESTDIR)$(INSTALL_INCLUDE)/amd.h
+ 
+ # uninstall AMD
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/libamd*.a
+-	$(RM) $(INSTALL_INCLUDE)/amd.h
++	$(RM) $(DESTDIR)$(INSTALL_LIB)/libamd.la
++	$(RM) $(DESTDIR)$(INSTALL_INCLUDE)/amd.h
+ 
+--- SuiteSparse/BTF/Lib/Makefile.orig	2014-03-21 20:13:35.000000000 +0100
++++ SuiteSparse/BTF/Lib/Makefile	2023-01-05 21:57:21.606563206 +0100
+@@ -15,45 +15,48 @@ I = -I../Include -I../../SuiteSparse_con
+ 
+ all: library
+ 
+-library: libbtf.a
++library: libbtf.la
+ 
+ OBJ = btf_order.o btf_maxtrans.o btf_strongcomp.o \
+     btf_l_order.o btf_l_maxtrans.o btf_l_strongcomp.o
+ 
+-libbtf.a: $(OBJ)
+-	$(ARCHIVE)  libbtf.a $(OBJ)
+-	- $(RANLIB) libbtf.a
++libbtf.la: $(OBJ)
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CFLAGS) -o libbtf.la -rpath $(INSTALL_LIB) $(OBJ:.o=.lo)
++
++install: libbtf.la
++	install -d $(DESTDIR)$(INSTALL_LIB)
++	libtool --mode=install cp libbtf.la $(DESTDIR)$(INSTALL_LIB)/libbtf.la
+ 
+ $(OBJ): $(INC)
+ 
+ #-------------------------------------------------------------------------------
+ 
+ btf_order.o: ../Source/btf_order.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ btf_maxtrans.o: ../Source/btf_maxtrans.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ btf_strongcomp.o: ../Source/btf_strongcomp.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ #-------------------------------------------------------------------------------
+ 
+ btf_l_order.o: ../Source/btf_order.c
+-	$(C) -c $(I) -DDLONG $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) -DDLONG $< -o $@
+ 
+ btf_l_maxtrans.o: ../Source/btf_maxtrans.c
+-	$(C) -c $(I) -DDLONG $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) -DDLONG $< -o $@
+ 
+ btf_l_strongcomp.o: ../Source/btf_strongcomp.c
+-	$(C) -c $(I) -DDLONG $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) -DDLONG $< -o $@
+ 
+ #-------------------------------------------------------------------------------
+ 
+ purge: distclean
+ 
+ distclean: clean
+-	- $(RM) libbtf.a 
++	- $(RM) libbtf.la 
+ 
+ clean:
+ 	- $(RM) $(CLEAN)
+--- SuiteSparse/BTF/Makefile.orig	2014-03-21 20:13:35.000000000 +0100
++++ SuiteSparse/BTF/Makefile	2023-01-05 22:00:16.658948199 +0100
+@@ -23,14 +23,12 @@ purge: distclean
+ 
+ # install BTF
+ install:
+-	$(CP) Lib/libbtf.a $(INSTALL_LIB)/libbtf.$(VERSION).a
+-	( cd $(INSTALL_LIB) ; ln -sf libbtf.$(VERSION).a libbtf.a )
+-	$(CP) Include/btf.h $(INSTALL_INCLUDE)
+-	chmod 644 $(INSTALL_LIB)/libbtf*.a
+-	chmod 644 $(INSTALL_INCLUDE)/btf.h
++	$(MAKE) -C Lib install
++	$(CP) Include/btf.h $(DESTDIR)$(INSTALL_INCLUDE)
++	chmod 644 $(DESTDIR)$(INSTALL_INCLUDE)/btf.h
+ 
+ # uninstall BTF
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/libbtf*.a
+-	$(RM) $(INSTALL_INCLUDE)/btf.h
++	$(RM) $(DESTDIR)$(INSTALL_LIB)/libbtf.la
++	$(RM) $(DESTDIR)$(INSTALL_INCLUDE)/btf.h
+ 
+--- SuiteSparse/CAMD/Demo/Makefile.orig	2023-01-07 11:33:29.849877149 +0100
++++ SuiteSparse/CAMD/Demo/Makefile	2023-01-07 11:33:34.133187277 +0100
+@@ -10,7 +10,7 @@ C = $(CC) $(CF) -I../Include -I../../Sui
+ 
+ INC = ../Include/camd.h ../../SuiteSparse_config/SuiteSparse_config.h
+ 
+-LIB2 = ../../SuiteSparse_config/libsuitesparseconfig.a $(LIB)
++LIB2 = ../../SuiteSparse_config/libsuitesparseconfig.la $(LIB)
+ 
+ library:
+ 	( cd ../../SuiteSparse_config ; $(MAKE) )
+@@ -23,22 +23,22 @@ library:
+ dist:
+ 
+ camd_demo: camd_demo.c library $(INC)
+-	$(C) -o camd_demo camd_demo.c ../Lib/libcamd.a $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o camd_demo camd_demo.c ../Lib/libcamd.la $(LIB2)
+ 	./camd_demo > my_camd_demo.out
+ 	- diff camd_demo.out my_camd_demo.out
+ 
+ camd_l_demo: camd_l_demo.c library $(INC)
+-	$(C) -o camd_l_demo camd_l_demo.c ../Lib/libcamd.a $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o camd_l_demo camd_l_demo.c ../Lib/libcamd.la $(LIB2)
+ 	./camd_l_demo > my_camd_l_demo.out
+ 	- diff camd_l_demo.out my_camd_l_demo.out
+ 
+ camd_demo2: camd_demo2.c library $(INC)
+-	$(C) -o camd_demo2 camd_demo2.c ../Lib/libcamd.a $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o camd_demo2 camd_demo2.c ../Lib/libcamd.la $(LIB2)
+ 	./camd_demo2 > my_camd_demo2.out
+ 	- diff camd_demo2.out my_camd_demo2.out
+ 
+ camd_simple: camd_simple.c library $(INC)
+-	$(C) -o camd_simple camd_simple.c ../Lib/libcamd.a $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o camd_simple camd_simple.c ../Lib/libcamd.la $(LIB2)
+ 	./camd_simple > my_camd_simple.out
+ 	- diff camd_simple.out my_camd_simple.out
+ 
+--- SuiteSparse/CAMD/Lib/GNUmakefile.orig	2014-03-21 20:21:52.000000000 +0100
++++ SuiteSparse/CAMD/Lib/GNUmakefile	2023-01-08 15:11:41.817549574 +0100
+@@ -2,7 +2,7 @@
+ # CAMD Makefile for compiling on Unix systems (for GNU make only)
+ #-------------------------------------------------------------------------------
+ 
+-default: libcamd.a
++default: libcamd.la
+ 
+ include ../../SuiteSparse_config/SuiteSparse_config.mk
+ 
+@@ -30,18 +30,21 @@ CAMDL = $(addsuffix .o, $(subst camd_,ca
+ #-------------------------------------------------------------------------------
+ 
+ camd_i_%.o: ../Source/camd_%.c $(INC)
+-	$(C) -DDINT -c $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDINT -c $< -o $@
+ 
+ camd_l_%.o: ../Source/camd_%.c $(INC)
+-	$(C) -DDLONG -c $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $< -o $@
+ 
+ #-------------------------------------------------------------------------------
+ # Create the libcamd.a library (C versions only)
+ #-------------------------------------------------------------------------------
+ 
+-libcamd.a: $(CAMDI) $(CAMDL)
+-	$(ARCHIVE)  libcamd.a $^
+-	- $(RANLIB) libcamd.a
++libcamd.la: $(CAMDI) $(CAMDL)
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) -o libcamd.la -rpath $(INSTALL_LIB) $(^:.o=.lo) ../../SuiteSparse_config/libsuitesparseconfig.la -lm
++
++install: libcamd.la
++	install -d $(DESTDIR)$(INSTALL_LIB)
++	libtool --mode=install install libcamd.la $(DESTDIR)$(INSTALL_LIB)
+ 
+ #-------------------------------------------------------------------------------
+ # Remove all but the files in the original distribution
+@@ -53,4 +56,4 @@ clean:
+ purge: distclean
+ 
+ distclean: clean
+-	- $(RM) libcamd.a
++	- $(RM) libcamd.la
+--- SuiteSparse/CAMD/Makefile.orig	2014-03-21 20:21:53.000000000 +0100
++++ SuiteSparse/CAMD/Makefile	2023-01-07 14:00:18.652155770 +0100
+@@ -50,14 +50,12 @@ lib: library
+ 
+ # install CAMD
+ install:
+-	$(CP) Lib/libcamd.a $(INSTALL_LIB)/libcamd.$(VERSION).a
+-	( cd $(INSTALL_LIB) ; ln -sf libcamd.$(VERSION).a libcamd.a )
+-	$(CP) Include/camd.h $(INSTALL_INCLUDE)
+-	chmod 644 $(INSTALL_LIB)/libcamd*.a
+-	chmod 644 $(INSTALL_INCLUDE)/camd.h
++	$(MAKE) -C Lib install
++	$(CP) Include/camd.h $(DESTDIR)$(INSTALL_INCLUDE)
++	chmod 644 $(DESTDIR)$(INSTALL_INCLUDE)/camd.h
+ 
+ # uninstall CAMD
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/libcamd*.a
+-	$(RM) $(INSTALL_INCLUDE)/camd.h
++	$(RM) $(DESTDIR)$(INSTALL_LIB)/libcamd.la
++	$(RM) $(DESTDIR)$(INSTALL_INCLUDE)/camd.h
+ 
+--- SuiteSparse/CCOLAMD/Demo/Makefile.orig	2014-03-21 20:21:07.000000000 +0100
++++ SuiteSparse/CCOLAMD/Demo/Makefile	2023-01-07 15:03:18.638344494 +0100
+@@ -10,7 +10,7 @@ I = -I../Include -I../../SuiteSparse_con
+ 
+ C = $(CC) $(CF) $(I)
+ 
+-LIB2 = ../../SuiteSparse_config/libsuitesparseconfig.a $(LIB)
++LIB2 = ../../SuiteSparse_config/libsuitesparseconfig.la $(LIB)
+ 
+ library:
+ 	( cd ../../SuiteSparse_config ; $(MAKE) )
+@@ -23,12 +23,12 @@ library:
+ dist:
+ 
+ ccolamd_example: ccolamd_example.c library
+-	$(C) -o ccolamd_example ccolamd_example.c ../Lib/libccolamd.a $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o ccolamd_example ccolamd_example.c ../Lib/libccolamd.la $(LIB2)
+ 	- ./ccolamd_example > my_ccolamd_example.out
+ 	- diff ccolamd_example.out my_ccolamd_example.out
+ 
+ ccolamd_l_example: ccolamd_l_example.c library
+-	$(C) -o ccolamd_l_example ccolamd_l_example.c ../Lib/libccolamd.a $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o ccolamd_l_example ccolamd_l_example.c ../Lib/libccolamd.la $(LIB2)
+ 	- ./ccolamd_l_example > my_ccolamd_l_example.out
+ 	- diff ccolamd_l_example.out my_ccolamd_l_example.out
+ 
+--- SuiteSparse/CCOLAMD/Lib/Makefile.orig	2014-03-21 20:21:07.000000000 +0100
++++ SuiteSparse/CCOLAMD/Lib/Makefile	2023-01-07 16:00:17.693155217 +0100
+@@ -2,7 +2,7 @@
+ # CCOLAMD Makefile
+ #-------------------------------------------------------------------------------
+ 
+-default: libccolamd.a
++default: libccolamd.la
+ 
+ include ../../SuiteSparse_config/SuiteSparse_config.mk
+ 
+@@ -13,15 +13,18 @@ INC = ../Include/ccolamd.h ../../SuiteSp
+ SRC = ../Source/ccolamd.c
+ 
+ # creates libccolamd.a, a C-callable COLAMD library
+-libccolamd.a:  $(SRC) $(INC)
+-	$(CC) $(CF) $(I) -c ../Source/ccolamd.c
+-	$(CC) $(CF) $(I) -c ../Source/ccolamd.c -DDLONG -o ccolamd_l.o
+-	$(ARCHIVE)  libccolamd.a ccolamd.o ccolamd_l.o
+-	- $(RANLIB) libccolamd.a 
++libccolamd.la:  $(SRC) $(INC)
++	libtool --tag=CC --mode=compile $(CC) $(CF) $(I) -c ../Source/ccolamd.c
++	libtool --tag=CC --mode=compile $(CC) $(CF) $(I) -c ../Source/ccolamd.c -DDLONG -o ccolamd_l.o
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CFLAGS) -o libccolamd.la -rpath $(INSTALL_LIB) ccolamd.lo ccolamd_l.lo ../../SuiteSparse_config/libsuitesparseconfig.la -lm
+ 
+-ccode: libccolamd.a
++install: libccolamd.la
++	install -d $(DESTDIR)$(INSTALL_LIB)
++	libtool --mode=install install libccolamd.la $(DESTDIR)$(INSTALL_LIB)
+ 
+-library: libccolamd.a
++ccode: libccolamd.la
++
++library: libccolamd.la
+ 
+ clean:
+ 	- $(RM) $(CLEAN)
+@@ -29,4 +32,4 @@ clean:
+ purge: distclean
+ 
+ distclean: clean
+-	- $(RM) libccolamd.a
++	- $(RM) libccolamd.la
+--- SuiteSparse/CCOLAMD/Makefile.orig	2014-03-21 20:21:08.000000000 +0100
++++ SuiteSparse/CCOLAMD/Makefile	2023-01-07 16:01:00.286257804 +0100
+@@ -43,14 +43,12 @@ lib: library
+ 
+ # install CCOLAMD
+ install:
+-	$(CP) Lib/libccolamd.a $(INSTALL_LIB)/libccolamd.$(VERSION).a
+-	( cd $(INSTALL_LIB) ; ln -sf libccolamd.$(VERSION).a libccolamd.a )
+-	$(CP) Include/ccolamd.h $(INSTALL_INCLUDE)
+-	chmod 644 $(INSTALL_LIB)/libccolamd*.a
+-	chmod 644 $(INSTALL_INCLUDE)/ccolamd.h
++	$(MAKE) -C Lib install
++	$(CP) Include/ccolamd.h $(DESTDIR)$(INSTALL_INCLUDE)
++	chmod 644 $(DESTDIR)$(INSTALL_INCLUDE)/ccolamd.h
+ 
+ # uninstall CCOLAMD
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/libccolamd*.a
+-	$(RM) $(INSTALL_INCLUDE)/ccolamd.h
++	$(RM) $(DESTDIR)$(INSTALL_LIB)/libccolamd.la
++	$(RM) $(DESTDIR)$(INSTALL_INCLUDE)/ccolamd.h
+ 
+--- SuiteSparse/COLAMD/Demo/Makefile.orig	2014-03-21 20:13:38.000000000 +0100
++++ SuiteSparse/COLAMD/Demo/Makefile	2023-01-07 16:13:12.675623443 +0100
+@@ -10,7 +10,7 @@ I = -I../Include -I../../SuiteSparse_con
+ 
+ C = $(CC) $(CF) $(I)
+ 
+-LIB2 = ../../SuiteSparse_config/libsuitesparseconfig.a $(LIB)
++LIB2 = ../../SuiteSparse_config/libsuitesparseconfig.la $(LIB)
+ 
+ library:
+ 	( cd ../../SuiteSparse_config ; $(MAKE) )
+@@ -23,12 +23,12 @@ library:
+ dist:
+ 
+ colamd_example: colamd_example.c library
+-	$(C) -o colamd_example colamd_example.c ../Lib/libcolamd.a $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o colamd_example colamd_example.c ../Lib/libcolamd.la $(LIB2)
+ 	- ./colamd_example > my_colamd_example.out
+ 	- diff colamd_example.out my_colamd_example.out
+ 
+ colamd_l_example: colamd_l_example.c library
+-	$(C) -o colamd_l_example colamd_l_example.c ../Lib/libcolamd.a $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o colamd_l_example colamd_l_example.c ../Lib/libcolamd.la $(LIB2)
+ 	- ./colamd_l_example > my_colamd_l_example.out
+ 	- diff colamd_l_example.out my_colamd_l_example.out
+ 
+--- SuiteSparse/COLAMD/Lib/Makefile.orig	2014-03-21 20:13:38.000000000 +0100
++++ SuiteSparse/COLAMD/Lib/Makefile	2023-01-07 16:15:27.284894202 +0100
+@@ -2,7 +2,7 @@
+ # COLAMD Makefile
+ #-------------------------------------------------------------------------------
+ 
+-default: libcolamd.a
++default: libcolamd.la
+ 
+ include ../../SuiteSparse_config/SuiteSparse_config.mk
+ 
+@@ -13,15 +13,18 @@ INC = ../Include/colamd.h ../../SuiteSpa
+ SRC = ../Source/colamd.c
+ 
+ # creates libcolamd.a, a C-callable COLAMD library
+-libcolamd.a:  $(SRC) $(INC)
+-	$(CC) $(CF) $(I) -c ../Source/colamd.c
+-	$(CC) $(CF) $(I) -c ../Source/colamd.c -DDLONG -o colamd_l.o
+-	$(ARCHIVE)  libcolamd.a colamd.o colamd_l.o
+-	- $(RANLIB) libcolamd.a
++libcolamd.la:  $(SRC) $(INC)
++	libtool --tag=CC --mode=compile $(CC) $(CF) $(I) -c ../Source/colamd.c
++	libtool --tag=CC --mode=compile $(CC) $(CF) $(I) -c ../Source/colamd.c -DDLONG -o colamd_l.o
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CFLAGS) -o libcolamd.la -rpath $(INSTALL_LIB) colamd.lo colamd_l.lo ../../SuiteSparse_config/libsuitesparseconfig.la -lm
++
++install: libcolamd.la
++	install -d $(DESTDIR)$(INSTALL_LIB)
++	libtool --mode=install install libcolamd.la $(DESTDIR)$(INSTALL_LIB)
++ 
++ccode: libcolamd.la
+ 
+-ccode: libcolamd.a
+-
+-library: libcolamd.a
++library: libcolamd.la
+ 
+ clean:
+ 	- $(RM) $(CLEAN)
+@@ -29,4 +32,4 @@ clean:
+ purge: distclean
+ 
+ distclean: clean
+-	- $(RM) libcolamd.a
++	- $(RM) libcolamd.la
+--- SuiteSparse/COLAMD/Makefile.orig	2014-03-21 20:13:39.000000000 +0100
++++ SuiteSparse/COLAMD/Makefile	2023-01-07 16:17:16.164304352 +0100
+@@ -43,14 +43,12 @@ lib: library
+ 
+ # install COLAMD
+ install:
+-	$(CP) Lib/libcolamd.a $(INSTALL_LIB)/libcolamd.$(VERSION).a
+-	( cd $(INSTALL_LIB) ; ln -sf libcolamd.$(VERSION).a libcolamd.a )
+-	$(CP) Include/colamd.h $(INSTALL_INCLUDE)
+-	chmod 644 $(INSTALL_LIB)/libcolamd*.a
+-	chmod 644 $(INSTALL_INCLUDE)/colamd.h
++	$(MAKE) -C Lib install
++	$(CP) Include/colamd.h $(DESTDIR)$(INSTALL_INCLUDE)
++	chmod 644 $(DESTDIR)$(INSTALL_INCLUDE)/colamd.h
+ 
+ # uninstall COLAMD
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/libcolamd*.a
+-	$(RM) $(INSTALL_INCLUDE)/colamd.h
++	$(RM) $(DESTDIR)$(INSTALL_LIB)/libcolamd.la
++	$(RM) $(DESTDIR)$(INSTALL_INCLUDE)/colamd.h
+ 
+--- SuiteSparse/CHOLMOD/Demo/Makefile.orig	2014-07-15 00:04:45.000000000 +0200
++++ SuiteSparse/CHOLMOD/Demo/Makefile	2023-01-07 17:28:50.357707376 +0100
+@@ -22,7 +22,7 @@ ifeq (,$(findstring -DNCAMD, $(CHOLMOD_C
+         ifeq (../../CCOLAMD, $(wildcard ../../CCOLAMD))
+             # CAMD and CCOLAMD are requested and available
+             LIB_WITH_PARTITION = \
+-                        ../../CCOLAMD/Lib/libccolamd.a ../../CAMD/Lib/libcamd.a
++                        ../../CCOLAMD/Lib/libccolamd.la ../../CAMD/Lib/libcamd.la
+             I_WITH_PARTITION = \
+                         -I../../CCOLAMD/Include -I../../CAMD/Include
+             CONFIG = -DNPARTITION
+@@ -32,8 +32,8 @@ ifeq (,$(findstring -DNCAMD, $(CHOLMOD_C
+                 ifeq ($(METIS_PATH), $(wildcard $(METIS_PATH)))
+                     # METIS is available
+                     LIB_WITH_PARTITION = $(METIS) \
+-                        ../../CCOLAMD/Lib/libccolamd.a ../../CAMD/Lib/libcamd.a
+-                    I_WITH_PARTITION = -I$(METIS_PATH)/Lib \
++                        ../../CCOLAMD/Lib/libccolamd.la ../../CAMD/Lib/libcamd.la
++                    I_WITH_PARTITION = -I$(METIS_PATH) \
+                         -I../../CCOLAMD/Include -I../../CAMD/Include
+                     CONFIG =
+                 endif
+@@ -44,8 +44,8 @@ endif
+ 
+ #-------------------------------------------------------------------------------
+ 
+-LIB2 = ../Lib/libcholmod.a ../../AMD/Lib/libamd.a ../../COLAMD/Lib/libcolamd.a \
+-        ../../SuiteSparse_config/libsuitesparseconfig.a \
++LIB2 = ../Lib/libcholmod.la ../../AMD/Lib/libamd.la ../../COLAMD/Lib/libcolamd.la \
++        ../../SuiteSparse_config/libsuitesparseconfig.la \
+ 	$(LIB_WITH_PARTITION) $(LAPACK) $(BLAS) $(XERBLA) $(LIB)
+ 
+ #-------------------------------------------------------------------------------
+@@ -92,7 +92,6 @@ clean:
+ #-------------------------------------------------------------------------------
+ # See below if you compile with -DNPARTITION
+ library:
+-	( cd ../../SuiteSparse_config/xerbla ; $(MAKE) )
+ 	( cd ../../SuiteSparse_config ; $(MAKE) )
+ 	( cd ../Lib ; $(MAKE) )
+ 	( cd ../../AMD ; $(MAKE) library )
+@@ -102,29 +101,25 @@ else
+ 	( cd ../../CCOLAMD ; $(MAKE) library )
+ 	( cd ../../CAMD ; $(MAKE) library )
+ endif
+-ifneq (,$(findstring -DNPARTITION, $(CONFIG)))
+-else
+-	( cd $(METIS_PATH) && $(MAKE) )
+-endif
+ 
+ #-------------------------------------------------------------------------------
+ 
+ I = -I../Include -I../../SuiteSparse_config
+ 
+ cholmod_demo: library cholmod_demo.c cholmod_demo.h
+-	$(C) -o cholmod_demo $(I) cholmod_demo.c $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o cholmod_demo $(I) cholmod_demo.c $(LIB2)
+ 
+ cholmod_simple: library cholmod_simple.c
+-	$(C) -o cholmod_simple $(I) cholmod_simple.c $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o cholmod_simple $(I) cholmod_simple.c $(LIB2)
+ 
+ cholmod_l_demo: library cholmod_l_demo.c cholmod_demo.h
+-	$(C) -o cholmod_l_demo $(I) cholmod_l_demo.c $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -o cholmod_l_demo $(I) cholmod_l_demo.c $(LIB2)
+ 
+ readhb: readhb.f
+-	$(F77) $(FFLAGS) -o readhb readhb.f
++	libtool --tag=F77 --mode=link $(F77) $(LDFLAGS) $(FFLAGS) -o readhb readhb.f
+ 
+ readhb2: readhb2.f
+-	$(F77) $(FFLAGS) -O -o readhb2 readhb2.f
++	libtool --tag=F77 --mode=link $(F77) $(LDFLAGS) $(FFLAGS) -O -o readhb2 readhb2.f
+ 
+ reade: reade.f
+-	$(F77) $(FFLAGS) -O -o reade reade.f
++	libtool --tag=F77 --mode=link $(F77) $(LDFLAGS) $(FFLAGS) -O -o reade reade.f
+--- SuiteSparse/CHOLMOD/Lib/Makefile.orig	2014-03-23 01:46:29.000000000 +0100
++++ SuiteSparse/CHOLMOD/Lib/Makefile	2023-01-07 17:56:47.118623582 +0100
+@@ -21,7 +21,7 @@ ifeq (,$(findstring -DNCAMD, $(CHOLMOD_C
+         ifeq (../../CCOLAMD, $(wildcard ../../CCOLAMD))
+             # CAMD and CCOLAMD are requested and available
+             LIB_WITH_PARTITION = \
+-                        ../../CCOLAMD/Lib/libccolamd.a ../../CAMD/Lib/libcamd.a
++                        ../../CCOLAMD/Lib/libccolamd.la ../../CAMD/Lib/libcamd.la
+             I_WITH_PARTITION = \
+                         -I../../CCOLAMD/Include -I../../CAMD/Include
+             CONFIG = -DNPARTITION
+@@ -31,8 +31,8 @@ ifeq (,$(findstring -DNCAMD, $(CHOLMOD_C
+                 ifeq ($(METIS_PATH), $(wildcard $(METIS_PATH)))
+                     # METIS is available
+                     LIB_WITH_PARTITION = $(METIS) \
+-                        ../../CCOLAMD/Lib/libccolamd.a ../../CAMD/Lib/libcamd.a
+-                    I_WITH_PARTITION = -I$(METIS_PATH)/Lib \
++                        ../../CCOLAMD/Lib/libccolamd.la ../../CAMD/Lib/libcamd.la
++                    I_WITH_PARTITION = -I$(METIS_PATH) \
+                         -I../../CCOLAMD/Include -I../../CAMD/Include
+                     CONFIG =
+                 endif
+@@ -50,14 +50,14 @@ I = -I../../AMD/Include -I../../AMD/Sour
+ 
+ C = $(CC) $(CF) $(CHOLMOD_CONFIG) $(CONFIG)
+ 
+-all: libcholmod.a
++all: libcholmod.la
+ 
+-library: libcholmod.a
++library: libcholmod.la
+ 
+ purge: distclean
+ 
+ distclean: clean
+-	- $(RM) libcholmod.a
++	- $(RM) libcholmod.la
+ 
+ clean:
+ 	- $(RM) $(CLEAN)
+@@ -156,9 +156,13 @@ DL = $(LCORE) $(LCHECK) $(LCHOLESKY) $(L
+ # to compile just the double/int version, use OBJ = $(DI)
+ OBJ = $(DI) $(DL)
+ 
+-libcholmod.a: $(OBJ)
+-	$(ARCHIVE)  libcholmod.a $(OBJ)
+-	- $(RANLIB) libcholmod.a
++libcholmod.la: $(OBJ)
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) -o libcholmod.la -rpath $(INSTALL_LIB) $(OBJ:.o=.lo) -lm \
++		../../AMD/Lib/libamd.la ../../COLAMD/Lib/libcolamd.la ../../SuiteSparse_config/libsuitesparseconfig.la $(LIB_WITH_PARTITION) $(LAPACK) $(BLAS)
++
++install: libcholmod.la
++	install -d $(DESTDIR)$(INSTALL_LIB)
++	libtool --mode=install cp libcholmod.la $(DESTDIR)$(INSTALL_LIB)/libcholmod.la
+ 
+ $(OBJ): $(INC)
+ 
+@@ -167,24 +171,24 @@ $(OBJ): $(INC)
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_check.o: ../Check/cholmod_check.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_read.o: ../Check/cholmod_read.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_write.o: ../Check/cholmod_write.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_l_check.o: ../Check/cholmod_check.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_read.o: ../Check/cholmod_read.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_write.o: ../Check/cholmod_write.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ 
+ #-------------------------------------------------------------------------------
+@@ -192,98 +196,98 @@ cholmod_l_write.o: ../Check/cholmod_writ
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_common.o: ../Core/cholmod_common.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_dense.o: ../Core/cholmod_dense.c ../Core/t_cholmod_dense.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_factor.o: ../Core/cholmod_factor.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_change_factor.o: ../Core/cholmod_change_factor.c \
+ 	../Core/t_cholmod_change_factor.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_memory.o: ../Core/cholmod_memory.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_sparse.o: ../Core/cholmod_sparse.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_complex.o: ../Core/cholmod_complex.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_transpose.o: ../Core/cholmod_transpose.c ../Core/t_cholmod_transpose.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_band.o: ../Core/cholmod_band.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_copy.o: ../Core/cholmod_copy.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_triplet.o: ../Core/cholmod_triplet.c ../Core/t_cholmod_triplet.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_error.o: ../Core/cholmod_error.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_aat.o: ../Core/cholmod_aat.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_add.o: ../Core/cholmod_add.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_version.o: ../Core/cholmod_version.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_l_common.o: ../Core/cholmod_common.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_dense.o: ../Core/cholmod_dense.c ../Core/t_cholmod_dense.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_factor.o: ../Core/cholmod_factor.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -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 $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_memory.o: ../Core/cholmod_memory.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_sparse.o: ../Core/cholmod_sparse.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_complex.o: ../Core/cholmod_complex.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_transpose.o: ../Core/cholmod_transpose.c ../Core/t_cholmod_transpose.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_band.o: ../Core/cholmod_band.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_copy.o: ../Core/cholmod_copy.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_triplet.o: ../Core/cholmod_triplet.c ../Core/t_cholmod_triplet.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_error.o: ../Core/cholmod_error.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_aat.o: ../Core/cholmod_aat.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_add.o: ../Core/cholmod_add.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_version.o: ../Core/cholmod_version.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ 
+ #-------------------------------------------------------------------------------
+@@ -291,116 +295,116 @@ cholmod_l_version.o: ../Core/cholmod_ver
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_amd.o: ../Cholesky/cholmod_amd.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_analyze.o: ../Cholesky/cholmod_analyze.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_colamd.o: ../Cholesky/cholmod_colamd.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_etree.o: ../Cholesky/cholmod_etree.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_factorize.o: ../Cholesky/cholmod_factorize.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_postorder.o: ../Cholesky/cholmod_postorder.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_rcond.o: ../Cholesky/cholmod_rcond.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_resymbol.o: ../Cholesky/cholmod_resymbol.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_rowcolcounts.o: ../Cholesky/cholmod_rowcolcounts.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ 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) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_spsolve.o: ../Cholesky/cholmod_spsolve.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_rowfac.o: ../Cholesky/cholmod_rowfac.c ../Cholesky/t_cholmod_rowfac.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_l_amd.o: ../Cholesky/cholmod_amd.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_analyze.o: ../Cholesky/cholmod_analyze.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_colamd.o: ../Cholesky/cholmod_colamd.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_etree.o: ../Cholesky/cholmod_etree.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_factorize.o: ../Cholesky/cholmod_factorize.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_postorder.o: ../Cholesky/cholmod_postorder.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_rcond.o: ../Cholesky/cholmod_rcond.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_resymbol.o: ../Cholesky/cholmod_resymbol.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_rowcolcounts.o: ../Cholesky/cholmod_rowcolcounts.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -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 $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_spsolve.o: ../Cholesky/cholmod_spsolve.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_rowfac.o: ../Cholesky/cholmod_rowfac.c ../Cholesky/t_cholmod_rowfac.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ #-------------------------------------------------------------------------------
+ # Partition Module:
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_ccolamd.o: ../Partition/cholmod_ccolamd.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_csymamd.o: ../Partition/cholmod_csymamd.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_camd.o: ../Partition/cholmod_camd.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_metis.o: ../Partition/cholmod_metis.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_nesdis.o: ../Partition/cholmod_nesdis.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_l_ccolamd.o: ../Partition/cholmod_ccolamd.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_csymamd.o: ../Partition/cholmod_csymamd.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_camd.o: ../Partition/cholmod_camd.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_metis.o: ../Partition/cholmod_metis.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_nesdis.o: ../Partition/cholmod_nesdis.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ 
+ #-------------------------------------------------------------------------------
+@@ -408,88 +412,88 @@ cholmod_l_nesdis.o: ../Partition/cholmod
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_horzcat.o: ../MatrixOps/cholmod_horzcat.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_norm.o: ../MatrixOps/cholmod_norm.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_scale.o: ../MatrixOps/cholmod_scale.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_drop.o: ../MatrixOps/cholmod_drop.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_sdmult.o: ../MatrixOps/cholmod_sdmult.c \
+ 	../MatrixOps/t_cholmod_sdmult.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_ssmult.o: ../MatrixOps/cholmod_ssmult.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_submatrix.o: ../MatrixOps/cholmod_submatrix.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_vertcat.o: ../MatrixOps/cholmod_vertcat.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_symmetry.o: ../MatrixOps/cholmod_symmetry.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_l_horzcat.o: ../MatrixOps/cholmod_horzcat.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_norm.o: ../MatrixOps/cholmod_norm.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_scale.o: ../MatrixOps/cholmod_scale.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_drop.o: ../MatrixOps/cholmod_drop.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_sdmult.o: ../MatrixOps/cholmod_sdmult.c \
+ 	../MatrixOps/t_cholmod_sdmult.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_ssmult.o: ../MatrixOps/cholmod_ssmult.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_submatrix.o: ../MatrixOps/cholmod_submatrix.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_vertcat.o: ../MatrixOps/cholmod_vertcat.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_symmetry.o: ../MatrixOps/cholmod_symmetry.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ #-------------------------------------------------------------------------------
+ # Modify Module:
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_rowadd.o: ../Modify/cholmod_rowadd.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_rowdel.o: ../Modify/cholmod_rowdel.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_updown.o: ../Modify/cholmod_updown.c \
+ 	../Modify/t_cholmod_updown.c ../Modify/t_cholmod_updown_numkr.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_l_rowadd.o: ../Modify/cholmod_rowadd.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_rowdel.o: ../Modify/cholmod_rowdel.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -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 $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ 
+ #-------------------------------------------------------------------------------
+@@ -499,27 +503,27 @@ cholmod_l_updown.o: ../Modify/cholmod_up
+ cholmod_super_numeric.o: ../Supernodal/cholmod_super_numeric.c \
+         ../GPU/t_cholmod_gpu.c \
+ 	../Supernodal/t_cholmod_super_numeric.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_super_symbolic.o: ../Supernodal/cholmod_super_symbolic.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_super_solve.o: ../Supernodal/cholmod_super_solve.c \
+ 	../Supernodal/t_cholmod_super_solve.c
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ #-------------------------------------------------------------------------------
+ 
+ cholmod_l_super_numeric.o: ../Supernodal/cholmod_super_numeric.c \
+ 	../Supernodal/t_cholmod_super_numeric.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ cholmod_l_super_symbolic.o: ../Supernodal/cholmod_super_symbolic.c
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -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 $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+ #-------------------------------------------------------------------------------
+ # GPU module
+@@ -532,12 +536,12 @@ cholmod_l_super_solve.o: ../Supernodal/c
+ 
+ cholmod_gpu_kernels.o: ../GPU/cholmod_gpu_kernels.c \
+         ../GPU/cholmod_gpu_kernels.cu
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 	$(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.o: ../GPU/cholmod_gpu.c 
+-	$(C) -c $(I) $<
++	libtool --tag=CC --mode=compile $(C) -c $(I) $<
+ 
+ cholmod_l_gpu.o: ../GPU/cholmod_gpu.c 
+-	$(C) -DDLONG -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -DDLONG -c $(I) $< -o $@
+ 
+--- SuiteSparse/CHOLMOD/Tcov/Makefile.orig	2014-03-25 04:57:38.000000000 +0100
++++ SuiteSparse/CHOLMOD/Tcov/Makefile	2023-01-07 18:03:47.209681087 +0100
+@@ -46,7 +46,7 @@ endif
+ #-------------------------------------------------------------------------------
+ 
+ I = -I../../AMD/Include -I../../COLAMD/Include \
+-	-I$(METIS_PATH)/Lib -I../../CCOLAMD/Include -I../../CAMD/Include \
++	-I$(METIS_PATH) -I../../CCOLAMD/Include -I../../CAMD/Include \
+ 	-I../Include -I../../SuiteSparse_config
+ 
+ I += $(GPU_CONFIG)
+--- SuiteSparse/CHOLMOD/Makefile.orig	2014-07-14 21:58:01.000000000 +0200
++++ SuiteSparse/CHOLMOD/Makefile	2023-01-07 18:04:58.775960045 +0100
+@@ -61,15 +61,13 @@ docs:
+ 
+ # install CHOLMOD
+ install:
+-	$(CP) Lib/libcholmod.a $(INSTALL_LIB)/libcholmod.$(VERSION).a
+-	( cd $(INSTALL_LIB) ; ln -sf libcholmod.$(VERSION).a libcholmod.a )
+-	$(CP) Include/cholmod*.h $(INSTALL_INCLUDE)
+-	$(RM) $(INSTALL_INCLUDE)/cholmod_internal.h
+-	chmod 644 $(INSTALL_LIB)/libcholmod*.a
+-	chmod 644 $(INSTALL_INCLUDE)/cholmod*.h
++	$(MAKE) -C Lib install
++	$(CP) Include/cholmod*.h $(DESTDIR)$(INSTALL_INCLUDE)
++	$(RM) $(DESTDIR)$(INSTALL_INCLUDE)/cholmod_internal.h
++	chmod 644 $(DESTDIR)$(INSTALL_INCLUDE)/cholmod*.h
+ 
+ # uninstall CHOLMOD
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/libcholmod*.a
+-	$(RM) $(INSTALL_INCLUDE)/cholmod*.h
++	$(RM) $(DESTDIR)$(INSTALL_LIB)/libcholmod.la
++	$(RM) $(DESTDIR)$(INSTALL_INCLUDE)/cholmod*.h
+ 
+--- SuiteSparse/CSparse/Demo/Makefile.orig	2014-03-21 20:14:17.000000000 +0100
++++ SuiteSparse/CSparse/Demo/Makefile	2023-01-07 18:36:42.558979701 +0100
+@@ -1,7 +1,7 @@
+-CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O
++CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH)
+ I = -I../Include
+ 
+-CS = ../Lib/libcsparse.a
++CS = ../Lib/libcsparse.la
+ 
+ all: lib cs_demo1 cs_demo2 cs_demo3
+ 	- ./cs_demo1 < ../Matrix/t1
+@@ -20,13 +20,13 @@ lib:
+ 	( cd ../Lib ; $(MAKE) )
+ 
+ cs_demo1: lib cs_demo1.c Makefile
+-	$(CC) $(CF) $(I) -o cs_demo1 cs_demo1.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(CF) $(LDFLAGS) $(I) -o cs_demo1 cs_demo1.c $(CS) -lm
+ 
+ cs_demo2: lib cs_demo2.c cs_demo.c cs_demo.h Makefile
+-	$(CC) $(CF) $(I) -o cs_demo2 cs_demo2.c cs_demo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(CF) $(LDFLAGS) $(I) -o cs_demo2 cs_demo2.c cs_demo.c $(CS) -lm
+ 
+ cs_demo3: lib cs_demo3.c cs_demo.c cs_demo.h Makefile
+-	$(CC) $(CF) $(I) -o cs_demo3 cs_demo3.c cs_demo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(CF) $(LDFLAGS) $(I) -o cs_demo3 cs_demo3.c cs_demo.c $(CS) -lm
+ 
+ clean:
+ 	- $(RM) *.o
+--- SuiteSparse/CSparse/Lib/Makefile.orig	2014-03-21 20:14:17.000000000 +0100
++++ SuiteSparse/CSparse/Lib/Makefile	2023-01-08 16:08:39.685700060 +0100
+@@ -1,9 +1,9 @@
+-CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O
++CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH)
+ I = -I../Include
+-RANLIB = ranlib
+-ARCHIVE = $(AR) $(ARFLAGS)
+ 
+-all: libcsparse.a
++all: libcsparse.la
++
++include ../../SuiteSparse_config/SuiteSparse_config.mk
+ 
+ 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 \
+@@ -18,16 +18,19 @@ CS = cs_add.o cs_amd.o cs_chol.o cs_chol
+ $(CS): ../Include/cs.h Makefile
+ 
+ %.o: ../Source/%.c ../Include/cs.h
+-	$(CC) $(CF) $(I) -c $<
++	libtool --tag=CC --mode=compile $(CC) $(CF) $(I) -c $<
+ 
+-libcsparse.a: $(CS)
+-	$(ARCHIVE)  libcsparse.a $(CS)
+-	- $(RANLIB) libcsparse.a
++libcsparse.la: $(CS)
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) -o libcsparse.la -rpath $(INSTALL_LIB) $(^:.o=.lo) -lm
+ 
++install: libcxsparse.la
++	install -d $(DESTDIR)$(INSTALL_LIB)
++	libtool --mode=install cp libcsparse.la $(DESTDIR)$(INSTALL_LIB)/libcsparse.la
++ 
+ clean:
+ 	- $(RM) *.o
+ 
+ purge: distclean
+ 
+ distclean: clean
+-	- $(RM) *.a *.obj *.dll
++	- $(RM) *.la *.obj *.dll
+--- SuiteSparse/CXSparse/Demo/Makefile.orig	2014-03-21 20:21:44.000000000 +0100
++++ SuiteSparse/CXSparse/Demo/Makefile	2023-01-07 18:45:48.542688520 +0100
+@@ -7,7 +7,7 @@ include ../../SuiteSparse_config/SuiteSp
+ 
+ I = -I../Include -I../../SuiteSparse_config
+ 
+-CS = ../Lib/libcxsparse.a
++CS = ../Lib/libcxsparse.la
+ 
+ all: $(CS) cs_demo1 cs_demo2 cs_demo3 \
+ 	cs_di_demo1 cs_di_demo2 cs_di_demo3 \
+@@ -95,67 +95,67 @@ $(CS):
+ 	( cd ../Lib ; $(MAKE) )
+ 
+ cs_demo1: $(CS) cs_demo1.c Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_demo1 cs_demo1.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_demo1 cs_demo1.c $(CS) -lm
+ 
+ cs_demo2: $(CS) cs_demo2.c cs_demo.c cs_demo.h Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_demo2 cs_demo2.c cs_demo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_demo2 cs_demo2.c cs_demo.c $(CS) -lm
+ 
+ cs_demo3: $(CS) cs_demo3.c cs_demo.c cs_demo.h Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_demo3 cs_demo3.c cs_demo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_demo3 cs_demo3.c cs_demo.c $(CS) -lm
+ 
+ 
+ 
+ 
+ cs_di_demo1: $(CS) cs_di_demo1.c Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_di_demo1 cs_di_demo1.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_di_demo1 cs_di_demo1.c $(CS) -lm
+ 
+ cs_di_demo2: $(CS) cs_di_demo2.c cs_di_demo.c cs_di_demo.h Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_di_demo2 cs_di_demo2.c cs_di_demo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_di_demo2 cs_di_demo2.c cs_di_demo.c $(CS) -lm
+ 
+ cs_di_demo3: $(CS) cs_di_demo3.c cs_di_demo.c cs_di_demo.h Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_di_demo3 cs_di_demo3.c cs_di_demo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_di_demo3 cs_di_demo3.c cs_di_demo.c $(CS) -lm
+ 
+ 
+ 
+ 
+ cs_ci_demo1: $(CS) cs_ci_demo1.c Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_ci_demo1 cs_ci_demo1.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_ci_demo1 cs_ci_demo1.c $(CS) -lm
+ 
+ cs_ci_demo2: $(CS) cs_ci_demo2.c cs_ci_demo.c cs_ci_demo.h Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_ci_demo2 cs_ci_demo2.c cs_ci_demo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_ci_demo2 cs_ci_demo2.c cs_ci_demo.c $(CS) -lm
+ 
+ cs_ci_demo3: $(CS) cs_ci_demo3.c cs_ci_demo.c cs_ci_demo.h Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_ci_demo3 cs_ci_demo3.c cs_ci_demo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_ci_demo3 cs_ci_demo3.c cs_ci_demo.c $(CS) -lm
+ 
+ 
+ 
+ cs_dl_demo1: $(CS) cs_dl_demo1.c Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_dl_demo1 cs_dl_demo1.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_dl_demo1 cs_dl_demo1.c $(CS) -lm
+ 
+ cs_dl_demo2: $(CS) cs_dl_demo2.c cs_dl_demo.c cs_dl_demo.h Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_dl_demo2 cs_dl_demo2.c cs_dl_demo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_dl_demo2 cs_dl_demo2.c cs_dl_demo.c $(CS) -lm
+ 
+ cs_dl_demo3: $(CS) cs_dl_demo3.c cs_dl_demo.c cs_dl_demo.h Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_dl_demo3 cs_dl_demo3.c cs_dl_demo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_dl_demo3 cs_dl_demo3.c cs_dl_demo.c $(CS) -lm
+ 
+ 
+ cs_cl_demo1: $(CS) cs_cl_demo1.c Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_cl_demo1 cs_cl_demo1.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_cl_demo1 cs_cl_demo1.c $(CS) -lm
+ 
+ cs_cl_demo2: $(CS) cs_cl_demo2.c cs_cl_demo.c cs_cl_demo.h Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_cl_demo2 cs_cl_demo2.c cs_cl_demo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_cl_demo2 cs_cl_demo2.c cs_cl_demo.c $(CS) -lm
+ 
+ cs_cl_demo3: $(CS) cs_cl_demo3.c cs_cl_demo.c cs_cl_demo.h Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_cl_demo3 cs_cl_demo3.c cs_cl_demo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_cl_demo3 cs_cl_demo3.c cs_cl_demo.c $(CS) -lm
+ 
+ 
+ 
+ 
+ cs_idemo: $(CS) cs_idemo.c Makefile $(CS)
+-	$(CC) $(CF) $(I) -o cs_idemo cs_idemo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -o cs_idemo cs_idemo.c $(CS) -lm
+ 
+ cs_ldemo: $(CS) cs_ldemo.c Makefile $(CS)
+-	$(CC) $(CF) $(I) -DCS_LONG -o cs_ldemo cs_ldemo.c $(CS) -lm
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) -DCS_LONG -o cs_ldemo cs_ldemo.c $(CS) -lm
+ 
+ 
+ clean:
+--- SuiteSparse/CXSparse/Lib/Makefile.orig	2014-03-21 20:21:44.000000000 +0100
++++ SuiteSparse/CXSparse/Lib/Makefile	2023-01-07 18:47:51.625355057 +0100
+@@ -7,7 +7,7 @@ include ../../SuiteSparse_config/SuiteSp
+ 
+ I = -I../../SuiteSparse_config -I../Include
+ 
+-all: libcxsparse.a
++all: libcxsparse.la
+ 
+ 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 \
+@@ -72,23 +72,26 @@ CS = cs_convert.o $(CS_DI_OBJ) $(CS_DL_O
+ $(CS): ../Include/cs.h Makefile
+ 
+ cs_convert.o: ../Source/cs_convert.c
+-	$(CC) $(CF) $(I) -c $< -o $@
++	libtool --tag=CC --mode=compile $(CC) $(CF) $(I) -c $< -o $@
+ 
+ %_di.o : ../Source/%.c
+-	$(CC) $(CF) $(I) -c $< -o $@
++	libtool --tag=CC --mode=compile $(CC) $(CF) $(I) -c $< -o $@
+ 
+ %_dl.o : ../Source/%.c
+-	$(CC) $(CF) $(I) -DCS_LONG -c $< -o $@
++	libtool --tag=CC --mode=compile $(CC) $(CF) $(I) -DCS_LONG -c $< -o $@
+ 
+ %_ci.o : ../Source/%.c
+-	$(CC) $(CF) $(I) -DCS_COMPLEX -c $< -o $@
++	libtool --tag=CC --mode=compile $(CC) $(CF) $(I) -DCS_COMPLEX -c $< -o $@
+ 
+ %_cl.o : ../Source/%.c
+-	$(CC) $(CF) $(I) -DCS_LONG -DCS_COMPLEX -c $< -o $@
++	libtool --tag=CC --mode=compile $(CC) $(CF) $(I) -DCS_LONG -DCS_COMPLEX -c $< -o $@
+ 
+-libcxsparse.a: $(CS)
+-	$(ARCHIVE)  libcxsparse.a $(CS)
+-	- $(RANLIB) libcxsparse.a
++libcxsparse.la: $(CS)
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) -o libcxsparse.la -rpath $(INSTALL_LIB) $(^:.o=.lo) -lm
++
++install: libcxsparse.la
++	install -d $(DESTDIR)$(INSTALL_LIB)
++	libtool --mode=install cp libcxsparse.la $(DESTDIR)$(INSTALL_LIB)/libcxsparse.la
+ 
+ clean:
+ 	- $(RM) *.o
+@@ -96,4 +99,4 @@ clean:
+ purge: distclean
+ 
+ distclean: clean
+-	- $(RM) *.a
++	- $(RM) *.la
+--- SuiteSparse/CXSparse/Makefile.orig	2014-03-25 15:56:17.000000000 +0100
++++ SuiteSparse/CXSparse/Makefile	2023-01-07 18:48:58.658325242 +0100
+@@ -38,14 +38,12 @@ distclean: purge
+ 
+ # install CSparse
+ install:
+-	$(CP) Lib/libcxsparse.a $(INSTALL_LIB)/libcxsparse.$(VERSION).a
+-	( cd $(INSTALL_LIB) ; ln -sf libcxsparse.$(VERSION).a libcxsparse.a )
+-	$(CP) Include/cs.h $(INSTALL_INCLUDE)
+-	chmod 644 $(INSTALL_LIB)/libcxsparse*.a
+-	chmod 644 $(INSTALL_INCLUDE)/cs.h
++	$(MAKE) -C Lib install
++	$(CP) Include/cs.h $(DESTDIR)$(INSTALL_INCLUDE)
++	chmod 644 $(DESTDIR)$(INSTALL_INCLUDE)/cs.h
+ 
+ # uninstall CSparse
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/libcxsparse*.a
+-	$(RM) $(INSTALL_INCLUDE)/cs.h
++	$(RM) $(DESTDIR)$(INSTALL_LIB)/libcxsparse.la
++	$(RM) $(DESTDIR)$(INSTALL_INCLUDE)/cs.h
+ 
+--- SuiteSparse/KLU/Demo/Makefile.orig	2014-03-21 20:21:27.000000000 +0100
++++ SuiteSparse/KLU/Demo/Makefile	2023-01-07 19:13:01.833840222 +0100
+@@ -5,11 +5,11 @@ default: all
+ 
+ include ../../SuiteSparse_config/SuiteSparse_config.mk
+ 
+-CLIB = ../Lib/libklu.a  ../../BTF/Lib/libbtf.a \
+-	../../AMD/Lib/libamd.a ../../COLAMD/Lib/libcolamd.a \
+-        ../../SuiteSparse_config/libsuitesparseconfig.a
++CLIB = ../Lib/libklu.la  ../../BTF/Lib/libbtf.la \
++	../../AMD/Lib/libamd.la ../../COLAMD/Lib/libcolamd.la \
++        ../../SuiteSparse_config/libsuitesparseconfig.la
+ 
+-CHOLMOD_LIB = ../../CHOLMOD/Lib/libcholmod.a
++CHOLMOD_LIB = ../../CHOLMOD/Lib/libcholmod.la
+ CHOLMOD = $(CHOLMOD_LIB) $(LAPACK) $(BLAS) $(XERBLA)
+ 
+ ifneq ($(GPU_CONFIG),)
+@@ -34,25 +34,25 @@ all: $(CLIB) klu_simple $(CHOLMOD_LIB) k
+ 	- ./kluldemo < ../Matrix/w156.mtx
+ 	- ./kluldemo < ../Matrix/ctina.mtx
+ 
+-../Lib/libklu.a:
++../Lib/libklu.la:
+ 	( cd ../Lib ; $(MAKE) )
+ 
+-../../BTF/Lib/libbtf.a:
++../../BTF/Lib/libbtf.la:
+ 	( cd ../../BTF ; $(MAKE) library )
+ 
+-../../AMD/Lib/libamd.a:
++../../AMD/Lib/libamd.la:
+ 	( cd ../../AMD ; $(MAKE) library )
+ 
+-../../COLAMD/Lib/libcolamd.a:
++../../COLAMD/Lib/libcolamd.la:
+ 	( cd ../../COLAMD ; $(MAKE) library )
+ 
+-../../CHOLMOD/Lib/libcholmod.a:
++../../CHOLMOD/Lib/libcholmod.la:
+ 	( cd ../../CHOLMOD ; $(MAKE) library )
+ #	( cd ../../CAMD ; $(MAKE) )
+ #	( cd ../../CCOLAMD ; $(MAKE) )
+ #	( cd ../../metis-4.0 ; $(MAKE) )
+ 
+-../../SuiteSparse_config/libsuitesparseconfig.a:
++../../SuiteSparse_config/libsuitesparseconfig.la:
+ 	( cd ../../SuiteSparse_config ; $(MAKE) )
+ 
+ purge: distclean
+@@ -65,11 +65,11 @@ clean:
+ 	- $(RM) $(CLEAN)
+ 
+ kludemo: kludemo.c Makefile $(CLIB)
+-	$(CC) $(CF) $(I) kludemo.c -o kludemo $(CLIB) $(CHOLMOD) $(LIB)
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) kludemo.c -o kludemo $(CLIB) $(CHOLMOD) $(LIB)
+ 
+ kluldemo: kludemo.c Makefile $(CLIB)
+-	$(CC) $(CF) $(I) kluldemo.c -o kluldemo $(CLIB) $(CHOLMOD) $(LIB)
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) kluldemo.c -o kluldemo $(CLIB) $(CHOLMOD) $(LIB)
+ 
+ klu_simple: klu_simple.c Makefile $(CLIB)
+-	$(CC) $(CF) $(I) klu_simple.c -o klu_simple $(CLIB) $(LIB)
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) $(CF) $(I) klu_simple.c -o klu_simple $(CLIB) $(LIB)
+ 	- ./klu_simple
+--- SuiteSparse/KLU/Lib/Makefile.orig	2014-03-21 20:21:27.000000000 +0100
++++ SuiteSparse/KLU/Lib/Makefile	2023-01-07 20:03:42.457367751 +0100
+@@ -17,7 +17,7 @@ I = -I../../AMD/Include -I../../COLAMD/I
+ 
+ all: library
+ 
+-library: libklu.a
++library: libklu.la
+ 
+ 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 \
+@@ -47,109 +47,112 @@ COMMON = \
+ 
+ OBJ = $(COMMON) $(KLU_D) $(KLU_Z) $(KLU_L) $(KLU_ZL)
+ 
+-libklu.a: $(OBJ)
+-	$(ARCHIVE)  libklu.a $(OBJ)
+-	- $(RANLIB) libklu.a
++libklu.la: $(OBJ)
++	libtool --tag=CC --mode=link $(CC) $(LDFLAGS) -o libklu.la -rpath $(INSTALL_LIB) $(OBJ:.o=.lo) ../../COLAMD/Lib/libcolamd.la ../../AMD/Lib/libamd.la ../../BTF/Lib/libbtf.la -lm
+ 
++install: libklu.la
++	install -d $(DESTDIR)$(INSTALL_LIB)
++	libtool --mode=install cp libklu.la $(DESTDIR)$(INSTALL_LIB)/libklu.la
++ 
+ $(OBJ): $(INC)
+ 
+ #-------------------------------------------------------------------------------
+ 
+ klu_d.o: ../Source/klu.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_z.o: ../Source/klu.c
+-	$(C) -c -DCOMPLEX $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX $(I) $< -o $@
+ 
+ klu_d_kernel.o: ../Source/klu_kernel.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_z_kernel.o: ../Source/klu_kernel.c
+-	$(C) -c -DCOMPLEX $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX $(I) $< -o $@
+ 
+ klu_d_sort.o: ../Source/klu_sort.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_z_sort.o: ../Source/klu_sort.c
+-	$(C) -c -DCOMPLEX $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX $(I) $< -o $@
+ 
+ klu_d_diagnostics.o: ../Source/klu_diagnostics.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_z_diagnostics.o: ../Source/klu_diagnostics.c
+-	$(C) -c -DCOMPLEX $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX $(I) $< -o $@
+ 
+ klu_d_dump.o: ../Source/klu_dump.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_z_dump.o: ../Source/klu_dump.c
+-	$(C) -c -DCOMPLEX $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX $(I) $< -o $@
+ 
+ klu_d_factor.o: ../Source/klu_factor.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_z_factor.o: ../Source/klu_factor.c
+-	$(C) -c -DCOMPLEX $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX $(I) $< -o $@
+ 
+ klu_d_free_numeric.o: ../Source/klu_free_numeric.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_z_free_numeric.o: ../Source/klu_free_numeric.c
+-	$(C) -c -DCOMPLEX $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX $(I) $< -o $@
+ 
+ klu_d_extract.o: ../Source/klu_extract.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_z_extract.o: ../Source/klu_extract.c
+-	$(C) -c -DCOMPLEX $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX $(I) $< -o $@
+ 
+ klu_d_refactor.o: ../Source/klu_refactor.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_z_refactor.o: ../Source/klu_refactor.c
+-	$(C) -c -DCOMPLEX $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX $(I) $< -o $@
+ 
+ klu_d_scale.o: ../Source/klu_scale.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_z_scale.o: ../Source/klu_scale.c
+-	$(C) -c -DCOMPLEX $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX $(I) $< -o $@
+ 
+ klu_d_solve.o: ../Source/klu_solve.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_z_solve.o: ../Source/klu_solve.c
+-	$(C) -c -DCOMPLEX $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX $(I) $< -o $@
+ 
+ klu_d_tsolve.o: ../Source/klu_tsolve.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_z_tsolve.o: ../Source/klu_tsolve.c
+-	$(C) -c -DCOMPLEX $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX $(I) $< -o $@
+ 
+ #-------------------------------------------------------------------------------
+ 
+ klu_analyze.o: ../Source/klu_analyze.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_analyze_given.o: ../Source/klu_analyze_given.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_defaults.o: ../Source/klu_defaults.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_free_symbolic.o: ../Source/klu_free_symbolic.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ klu_memory.o: ../Source/klu_memory.c
+-	$(C) -c $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c $(I) $< -o $@
+ 
+ #-------------------------------------------------------------------------------
+ 
+ purge: distclean
+ 
+ distclean: clean
+-	- $(RM) libklu.a 
++	- $(RM) libklu.la 
+ 
+ clean:
+ 	- $(RM) $(CLEAN)
+@@ -157,92 +160,92 @@ clean:
+ #-------------------------------------------------------------------------------
+ 
+ klu_l.o: ../Source/klu.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_zl.o: ../Source/klu.c
+-	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
+ 
+ klu_l_kernel.o: ../Source/klu_kernel.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_zl_kernel.o: ../Source/klu_kernel.c
+-	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
+ 
+ klu_l_sort.o: ../Source/klu_sort.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_zl_sort.o: ../Source/klu_sort.c
+-	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
+ 
+ klu_l_diagnostics.o: ../Source/klu_diagnostics.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_zl_diagnostics.o: ../Source/klu_diagnostics.c
+-	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
+ 
+ klu_l_dump.o: ../Source/klu_dump.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_zl_dump.o: ../Source/klu_dump.c
+-	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
+ 
+ klu_l_factor.o: ../Source/klu_factor.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_zl_factor.o: ../Source/klu_factor.c
+-	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
+ 
+ klu_l_free_numeric.o: ../Source/klu_free_numeric.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_zl_free_numeric.o: ../Source/klu_free_numeric.c
+-	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
+ 
+ klu_l_extract.o: ../Source/klu_extract.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_zl_extract.o: ../Source/klu_extract.c
+-	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
+ 
+ klu_l_refactor.o: ../Source/klu_refactor.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_zl_refactor.o: ../Source/klu_refactor.c
+-	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
+ 
+ klu_l_scale.o: ../Source/klu_scale.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_zl_scale.o: ../Source/klu_scale.c
+-	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
+ 
+ klu_l_solve.o: ../Source/klu_solve.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_zl_solve.o: ../Source/klu_solve.c
+-	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
+ 
+ klu_l_tsolve.o: ../Source/klu_tsolve.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_zl_tsolve.o: ../Source/klu_tsolve.c
+-	$(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DCOMPLEX -DDLONG $(I) $< -o $@
+ 
+ #-------------------------------------------------------------------------------
+ 
+ klu_l_analyze.o: ../Source/klu_analyze.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_l_analyze_given.o: ../Source/klu_analyze_given.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_l_defaults.o: ../Source/klu_defaults.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_l_free_symbolic.o: ../Source/klu_free_symbolic.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ klu_l_memory.o: ../Source/klu_memory.c
+-	$(C) -c -DDLONG $(I) $< -o $@
++	libtool --tag=CC --mode=compile $(C) -c -DDLONG $(I) $< -o $@
+ 
+ #-------------------------------------------------------------------------------
+--- SuiteSparse/KLU/Makefile.orig	2014-03-21 20:21:31.000000000 +0100
++++ SuiteSparse/KLU/Makefile	2023-01-07 20:04:46.400354675 +0100
+@@ -41,14 +41,12 @@ docs:
+ 
+ # install KLU
+ install:
+-	$(CP) Lib/libklu.a $(INSTALL_LIB)/libklu.$(VERSION).a
+-	( cd $(INSTALL_LIB) ; ln -sf libklu.$(VERSION).a libklu.a )
+-	$(CP) Include/klu.h $(INSTALL_INCLUDE)
+-	chmod 644 $(INSTALL_LIB)/libklu*.a
+-	chmod 644 $(INSTALL_INCLUDE)/klu.h
++	$(MAKE) -C Lib install
++	$(CP) Include/klu.h $(DESTDIR)$(INSTALL_INCLUDE)
++	chmod 644 $(DESTDIR)$(INSTALL_INCLUDE)/klu.h
+ 
+ # uninstall KLU
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/libklu*.a
+-	$(RM) $(INSTALL_INCLUDE)/klu.h
++	$(RM) $(DESTDIR)$(INSTALL_LIB)/libklu.la
++	$(RM) $(DESTDIR)$(INSTALL_INCLUDE)/klu.h
+ 
+--- SuiteSparse/LDL/Demo/Makefile.orig	2014-03-21 20:21:12.000000000 +0100
++++ SuiteSparse/LDL/Demo/Makefile	2023-01-07 20:19:03.482378130 +0100
+@@ -12,7 +12,7 @@ C = $(CC) $(CF) $(I)
+ 
+ all: ldlsimple ldllsimple ldlmain ldllmain ldlamd ldllamd
+ 
+-LIB2 = ../../SuiteSparse_config/libsuitesparseconfig.a $(LIB)
++LIB2 = ../../SuiteSparse_config/libsuitesparseconfig.la $(LIB)
+ 
+ library:
+ 	( cd ../../SuiteSparse_config ; $(MAKE) library )
+@@ -24,34 +24,34 @@ library:
+ #-------------------------------------------------------------------------------
+ 
+ ldlmain:  ldlmain.c library
+-	$(C) ldlmain.c ../Lib/libldl.a -o ldlmain $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) ldlmain.c ../Lib/libldl.la -o ldlmain $(LIB2)
+ 	- ./ldlmain > my_ldlmain.out
+ 	- diff ldlmain.out my_ldlmain.out
+ 
+ ldllmain:  ldlmain.c library
+-	$(C) -DLDL_LONG ldlmain.c ../Lib/libldl.a -o ldllmain $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) -DLDL_LONG ldlmain.c ../Lib/libldl.la -o ldllmain $(LIB2)
+ 	- ./ldllmain > my_ldllmain.out
+ 	- diff ldlmain.out my_ldllmain.out
+ 
+ ldlsimple:  ldlsimple.c library
+-	$(C) ldlsimple.c ../Lib/libldl.a -o ldlsimple $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) ldlsimple.c ../Lib/libldl.la -o ldlsimple $(LIB2)
+ 	- ./ldlsimple > my_ldlsimple.out
+ 	- diff ldlsimple.out my_ldlsimple.out
+ 
+ ldllsimple:  ldlsimple.c library
+-	$(C) $(I) -DLDL_LONG ldlsimple.c ../Lib/libldl.a -o ldllsimple $(LIB2)
++	libtool --tag=CC --mode=link $(C) $(LDFLAGS) $(I) -DLDL_LONG ldlsimple.c ../Lib/libldl.la -o ldllsimple $(LIB2)
+ 	- ./ldllsimple > my_ldllsimple.out
+ 	- diff ldlsimple.out my_ldllsimple.out
+ 
+ ldlamd:  ldlmain.c library
+-	- $(C) -I../../AMD/Include -DUSE_AMD \
+-		ldlmain.c ../../AMD/Lib/libamd.a ../Lib/libldl.a -o ldlamd $(LIB2)
++	- libtool --tag=CC --mode=link $(C) $(LDFLAGS) -I../../AMD/Include -DUSE_AMD \
++		ldlmain.c ../../AMD/Lib/libamd.la ../Lib/libldl.la -o ldlamd $(LIB2)
+ 	- ./ldlamd > my_ldlamd.out
+ 	- diff ldlamd.out my_ldlamd.out
+ 
<Skipped 945 lines>
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/SuiteSparse.git/commitdiff/a992b9a70b953fac53bf0a7b16b753634ec3a065




More information about the pld-cvs-commit mailing list