Files
haikuports/sci-libs/suitesparse/suitesparse-7.12.1.recipe
2025-11-12 15:35:22 +01:00

238 lines
9.2 KiB
Bash
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
SUMMARY="A suite of sparse matrix software"
DESCRIPTION="SuiteSparse is a suite of sparse matrix algorithms, including:
* GraphBLAS: graph algorithms in the language of linear algebra
* Mongoose: graph partitioning
* ssget: MATLAB and Java interface to the SuiteSparse Matrix Collection
* UMFPACK: multifrontal LU factorization.  Appears as LU and x=A\b in MATLAB.
* CHOLMOD: supernodal Cholesky.  Appears as CHOL and x=A\b in MATLAB.  Now with \
CUDA acceleration, in collaboration with NVIDIA.
* SPQR: multifrontal QR.  Appears as QR and x=A\b in MATLAB, with CUDA \
acceleration.
* KLU and BTF:  sparse LU factorization, well-suited for circuit simulation. 
* Ordering methods (AMD, CAMD, COLAMD, and CCOLAMD).  AMD and COLAMD appear \
in MATLAB.
* CSparse and CXSparse: a concise sparse Cholesky factorization package for \
my SIAM book.
* spqr_rank: a MATLAB package for reliable sparse rank detection, null set \
bases, pseudoinverse solutions, and basic solutions.
* Factorize: an object-oriented solver for MATLAB (a reusable backslash).
* SSMULT and SFMULT: sparse matrix multiplication.  Appears as the built-in \
C=A*B operator in MATLAB.
* ... and many other packages."
HOMEPAGE="http://www.suitesparse.com"
COPYRIGHT="1996-2025 Timothy A. Davis et al."
LICENSE="SUITESPARSE"
REVISION="2"
SOURCE_URI="https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/v$portVersion.tar.gz"
CHECKSUM_SHA256="794ae22f7e38e2ac9f5cbb673be9dd80cdaff2cdf858f5104e082694f743b0ba"
SOURCE_DIR="SuiteSparse-$portVersion"
PATCHES="suitesparse-$portVersion.patchset"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
libAMDVersion="3.3.4"
libAMDVersionCompat="$libAMDVersion compat >= ${libAMDVersion%%.*}"
libBTFVersion="2.3.3"
libBTFVersionCompat="$libBTFVersion compat >= ${libBTFVersion%%.*}"
libCAMDVersion="3.3.5"
libCAMDVersionCompat="$libCAMDVersion compat >= ${libCAMDVersion%%.*}"
libCCOLAMDVersion="3.3.5"
libCCOLAMDVersionCompat="$libCCOLAMDVersion compat >= ${libCCOLAMDVersion%%.*}"
libCHOLMODVersion="5.3.4"
libCHOLMODVersionCompat="$libCHOLMODVersion compat >= ${libCHOLMODVersion%%.*}"
libCOLAMDVersion="3.3.5"
libCOLAMDVersionCompat="$libCOLAMDVersion compat >= ${libCOLAMDVersion%%.*}"
libCXSPARSEVersion="4.4.2"
libCXSPARSEVersionCompat="$libCXSPARSEVersion compat >= ${libCXSPARSEVersion%%.*}"
libGRAPHBLASVersion="10.2.0"
libGRAPHBLASVersionCompat="$libGRAPHBLASVersion compat >= ${libGRAPHBLASVersion%%.*}"
libKLUVersion="2.3.6"
libKLUVersionCompat="$libKLUVersion compat >= ${libKLUVersion%%.*}"
libLAGRAPHVersion="1.2.1"
libLAGRAPHVersionCompat="$libLAGRAPHVersion compat >= ${libLAGRAPHVersion%%.*}"
libLDLVersion="3.3.3"
libLDLVersionCompat="$libLDLVersion compat >= ${libLDLVersion%%.*}"
libPARUVersion="1.1.0"
libPARUVersionCompat="$libPARUVersion compat >= ${libPARUVersion%%.*}"
libRBIOVersion="4.3.5"
libRBIOVersionCompat="$libRBIOVersion compat >= ${libRBIOVersion%%.*}"
libSPEXVersion="3.2.4"
libSPEXVersionCompat="$libSPEXVersion compat >= ${libSPEXVersion%%.*}"
libSPQRVersion="4.3.6"
libSPQRVersionCompat="$libSPQRVersion compat >= ${libSPQRVersion%%.*}"
libMONGOOSEVersion="3.3.6"
libMONGOOSEVersionCompat="$libMONGOOSEVersion compat >= ${libMONGOOSEVersion%%.*}"
libSUITESPARSE_CONFIGVersion="$portVersion"
libSUITESPARSE_CONFIGVersionCompat="$libSUITESPARSE_CONFIGVersion compat >= ${libSUITESPARSE_CONFIGVersion%%.*}"
libUMFPACKVersion="6.3.7"
libUMFPACKVersionCompat="$libUMFPACKVersion compat >= ${libUMFPACKVersion%%.*}"
tbbVersion="12.17"
PROVIDES="
suitesparse$secondaryArchSuffix = $portVersion
cmd:suitesparse_mongoose$secondaryArchSuffix
lib:libamd$secondaryArchSuffix = $libAMDVersionCompat
lib:libbtf$secondaryArchSuffix = $libBTFVersionCompat
lib:libcamd$secondaryArchSuffix = $libCAMDVersionCompat
lib:libccolamd$secondaryArchSuffix = $libCCOLAMDVersionCompat
lib:libcholmod$secondaryArchSuffix = $libCHOLMODVersionCompat
lib:libcolamd$secondaryArchSuffix = $libCOLAMDVersionCompat
lib:libcxsparse$secondaryArchSuffix = $libCXSPARSEVersionCompat
lib:libgraphblas$secondaryArchSuffix = $libGRAPHBLASVersionCompat
lib:libklu$secondaryArchSuffix = $libKLUVersionCompat
lib:libklu_cholmod$secondaryArchSuffix = $libKLUVersionCompat
lib:liblagraph$secondaryArchSuffix = libLAGRAPHVersionCompat
lib:liblagraphx$secondaryArchSuffix = libLAGRAPHVersionCompat
lib:libldl$secondaryArchSuffix = $libLDLVersionCompat
lib:libparu$secondaryArchSuffix = $libPARUVersionCompat
lib:librbio$secondaryArchSuffix = $libRBIOVersionCompat
lib:libspex$secondaryArchSuffix = $libSPEXVersionCompat
lib:libspexpython$secondaryArchSuffix = $libSPEXVersionCompat
lib:libspqr$secondaryArchSuffix = $libSPQRVersionCompat
lib:libsuitesparse_mongoose$secondaryArchSuffix = $libMONGOOSEVersionCompat
lib:libsuitesparseconfig$secondaryArchSuffix = $libSUITESPARSE_CONFIGVersionCompat
lib:libumfpack$secondaryArchSuffix = $libUMFPACKVersionCompat
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libexecinfo$secondaryArchSuffix
lib:libgfortran$secondaryArchSuffix
lib:libgmp$secondaryArchSuffix
lib:libmpfr$secondaryArchSuffix
lib:libopenblas$secondaryArchSuffix
lib:libtbb$secondaryArchSuffix
"
PROVIDES_devel="
suitesparse${secondaryArchSuffix}_devel = $portVersion
devel:libamd$secondaryArchSuffix = $libAMDVersion
devel:libbtf$secondaryArchSuffix = $libBTFVersion
devel:libcamd$secondaryArchSuffix = $libCAMDVersion
devel:libccolamd$secondaryArchSuffix = $libCCOLAMDVersion
devel:libcholmod$secondaryArchSuffix = $libCHOLMODVersion
devel:libcolamd$secondaryArchSuffix = $libCOLAMDVersion
devel:libcxsparse$secondaryArchSuffix = $libCXSPARSEVersion
devel:libgraphblas$secondaryArchSuffix = $libGRAPHBLASVersion
devel:libklu$secondaryArchSuffix = $libKLUVersion
devel:libklu_cholmod$secondaryArchSuffix = $libKLUVersionCompat
devel:liblagraph$secondaryArchSuffix = libLAGRAPHVersionCompat
devel:liblagraphx$secondaryArchSuffix = libLAGRAPHVersionCompat
devel:libldl$secondaryArchSuffix = $libLDLVersion
devel:libparu$secondaryArchSuffix = $libPARUVersionCompat
devel:librbio$secondaryArchSuffix = $libRBIOVersion
devel:libspex$secondaryArchSuffix = $libSPEXVersionCompat
devel:libspexpython$secondaryArchSuffix = $libSPEXVersionCompat
devel:libspqr$secondaryArchSuffix = $libSPQRVersion
devel:libsuitesparse_mongoose$secondaryArchSuffix = $libMONGOOSEVersion
devel:libsuitesparseconfig$secondaryArchSuffix = $libSUITESPARSE_CONFIGVersion
devel:libumfpack$secondaryArchSuffix = $libUMFPACKVersion
devel:suitesparse$secondaryArchSuffix = $libSUITESPARSE_CONFIGVersion
"
REQUIRES_devel="
haiku${secondaryArchSuffix}_devel
suitesparse$secondaryArchSuffix == $portVersion base
devel:libexecinfo$secondaryArchSuffix
devel:libgfortran$secondaryArchSuffix
devel:libopenblas$secondaryArchSuffix
devel:libtbb$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libexecinfo$secondaryArchSuffix
devel:libgfortran$secondaryArchSuffix
devel:libgmp$secondaryArchSuffix >= 10.5.0
devel:libmpfr$secondaryArchSuffix >= 6
devel:libopenblas$secondaryArchSuffix
devel:libtbb$secondaryArchSuffix == $tbbVersion
"
BUILD_PREREQUIRES="
cmd:cmake
cmd:diff
cmd:gawk
cmd:gcc$secondaryArchSuffix
cmd:gfortran$secondaryArchSuffix
cmd:grep
cmd:ld$secondaryArchSuffix
cmd:m4
cmd:make
cmd:perl
cmd:pkg_config$secondaryArchSuffix
cmd:python3
"
defineDebugInfoPackage suitesparse$secondaryArchSuffix \
"$libDir"/libsuitesparseconfig.so.$libSUITESPARSE_CONFIGVersion \
"$libDir"/libamd.so.$libAMDVersion \
"$libDir"/libbtf.so.$libBTFVersion \
"$libDir"/libcamd.so.$libCAMDVersion \
"$libDir"/libccolamd.so.$libCCOLAMDVersion \
"$libDir"/libcholmod.so.$libCHOLMODVersion \
"$libDir"/libcolamd.so.$libCOLAMDVersion \
"$libDir"/libcxsparse.so.$libCXSPARSEVersion \
"$libDir"/libgraphblas.so.$libGRAPHBLASVersion \
"$libDir"/libklu.so.$libKLUVersion \
"$libDir"/libklu_cholmod.so.$libKLUVersion \
"$libDir"/liblagraph.so.$libLAGRAPHVersion \
"$libDir"/liblagraphx.so.$libLAGRAPHVersion \
"$libDir"/libldl.so.$libLDLVersion \
"$libDir"/libparu.so.$libPARUVersion \
"$libDir"/libsuitesparse_mongoose.so.$libMONGOOSEVersion \
"$libDir"/librbio.so.$libRBIOVersion \
"$libDir"/libspex.so.$libSPEXVersion \
"$libDir"/libspexpython.so.$libSPEXVersion \
"$libDir"/libspqr.so.$libSPQRVersion \
"$libDir"/libumfpack.so.$libUMFPACKVersion
BUILD()
{
CMAKE_OPTIONS="$cmakeDirArgs" CMAKE_POLICY_VERSION_MINIMUM=3.5 \
LIBRARY_PATH="$sourceDir/lib:$LIBRARY_PATH" \
LDFLAGS="-lnetwork -lbsd -lexecinfo" CF="-D_BSD_SOURCE" \
TBB="-ltbb" SPQR_CONFIG="-DHAVE_TBB" make library \
$jobArgs
# make TBB="-ltbb" $jobArgs # for building and running tests
}
INSTALL()
{
LIBRARY_PATH="$sourceDir/lib:$LIBRARY_PATH" \
LDFLAGS="-lnetwork -lbsd -lexecinfo" CF="-D_BSD_SOURCE" \
TBB="-ltbb" SPQR_CONFIG="-DHAVE_TBB" INSTALL="$prefix" \
INSTALL_LIB="$libDir" INSTALL_INCLUDE="$includeDir" \
INSTALL_DOC="$docDir" make install
rm $libDir/*.a
prepareInstalledDevelLibs libamd \
libbtf \
libcamd \
libccolamd \
libcholmod \
libcolamd \
libcxsparse \
libgraphblas \
libklu \
libklu_cholmod \
liblagraph \
liblagraphx \
libldl \
libparu \
libspex \
libspexpython \
librbio \
libspqr \
libsuitesparse_mongoose \
libsuitesparseconfig \
libumfpack
fixPkgconfig
# DEVEL
packageEntries devel \
$developDir \
$libDir/cmake
}