[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