%global mingw_build_ucrt64 1 %{?mingw_package_header} %global ss_common -DBUILD_STATIC_LIBS=OFF -DBUILD_TESTING=OFF -DSUITESPARSE_DEMOS=OFF -DSUITESPARSE_USE_FORTRAN=OFF -DSUITESPARSE_USE_OPENMP=OFF -DSUITESPARSE_ENABLE_PROJECTS="suitesparse_config;amd;camd;ccolamd;colamd;cholmod;cxsparse" # BLA_VENDOR has to be set even where no BLAS is wanted. SuiteSparse tests it # with an unquoted if() in SuiteSparse__blas_threading.cmake, which is a hard # CMake error on an empty value, and that path only runs when cross compiling. %global ss_noblas -DSUITESPARSE_REQUIRE_BLAS=OFF -DBLA_VENDOR=Generic -DCHOLMOD_SUPERNODAL=OFF %global ss_openblas -DBLA_VENDOR=OpenBLAS -DSUITESPARSE_USE_64BIT_BLAS=ON -DCHOLMOD_SUPERNODAL=ON -DBLAS_LIBRARIES=%{mingw64_libdir}/libopenblas.dll.a -DLAPACK_LIBRARIES=%{mingw64_libdir}/libopenblas.dll.a -DBLAS_INCLUDE_DIRS=%{mingw64_includedir} Name: mingw-suitesparse Version: 7.14.0 Release: 1%{?dist} Summary: MinGW Windows sparse matrix libraries # BSD-3-Clause: SuiteSparse_config, AMD, CAMD, CCOLAMD, COLAMD # LGPL-2.1-or-later: CXSparse, CHOLMOD Check/Cholesky/Utility/Partition # GPL-2.0-or-later: CHOLMOD MatrixOps/Modify/Supernodal License: BSD-3-Clause AND LGPL-2.1-or-later AND GPL-2.0-or-later URL: https://people.engr.tamu.edu/davis/suitesparse.html Source0: https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/refs/tags/v%{version}.tar.gz#/SuiteSparse-%{version}.tar.gz BuildArch: noarch BuildRequires: cmake >= 3.23 BuildRequires: make BuildRequires: mingw32-filesystem >= 95 BuildRequires: mingw32-gcc BuildRequires: mingw32-gcc-c++ BuildRequires: mingw32-binutils BuildRequires: mingw64-filesystem >= 95 BuildRequires: mingw64-gcc BuildRequires: mingw64-gcc-c++ BuildRequires: mingw64-binutils BuildRequires: mingw64-openblas BuildRequires: ucrt64-filesystem >= 95 BuildRequires: ucrt64-gcc BuildRequires: ucrt64-gcc-c++ BuildRequires: ucrt64-binutils %description A collection of sparse matrix libraries: AMD, CAMD, COLAMD and CCOLAMD for fill-reducing orderings, CHOLMOD for sparse Cholesky factorization, and CXSparse for the CSparse routines. METIS is compiled into CHOLMOD's Partition module rather than shipped as a library of its own. # Win32 %package -n mingw32-suitesparse Summary: MinGW Windows sparse matrix libraries Provides: bundled(metis) = 5.1.0 %description -n mingw32-suitesparse A collection of sparse matrix libraries: AMD, CAMD, COLAMD and CCOLAMD for fill-reducing orderings, CHOLMOD for sparse Cholesky factorization, and CXSparse for the CSparse routines. CHOLMOD is built without its Supernodal module, since no BLAS is packaged for this target. # Win64 %package -n mingw64-suitesparse Summary: MinGW Windows sparse matrix libraries Provides: bundled(metis) = 5.1.0 %description -n mingw64-suitesparse A collection of sparse matrix libraries: AMD, CAMD, COLAMD and CCOLAMD for fill-reducing orderings, CHOLMOD for sparse Cholesky factorization, and CXSparse for the CSparse routines. CHOLMOD is built with its Supernodal module against mingw64-openblas, and so against a 64-bit integer BLAS. Anything that links libcholmod alongside its own BLAS has to use the same one. # UCRT64 %package -n ucrt64-suitesparse Summary: MinGW Windows sparse matrix libraries Provides: bundled(metis) = 5.1.0 %description -n ucrt64-suitesparse A collection of sparse matrix libraries: AMD, CAMD, COLAMD and CCOLAMD for fill-reducing orderings, CHOLMOD for sparse Cholesky factorization, and CXSparse for the CSparse routines. CHOLMOD is built without its Supernodal module, since no BLAS is packaged for this target. %{?mingw_debug_package} %prep %autosetup -p1 -n SuiteSparse-%{version} # CHOLMOD writes its generated cholmod.h back into the source tree instead of # the build directory, and that header carries CHOLMOD_HAS_SUPERNODAL. Three # configures sharing one tree would leave every target compiling and shipping # whichever header the last one wrote, so give each target a tree of its own. # Only mingw64 has a BLAS to build the Supernodal module against, so the three # headers genuinely differ. Dropping the projects we do not build takes each # copy from 286M to 44M. rm -rf GraphBLAS LAGraph SPQR UMFPACK ParU SPEX Mongoose MATLAB_Tools Example ssget for target in win32 win64 ucrt64; do rm -rf ../src_$target cp -a . ../src_$target done %build mkdir -p ../src_win32/build pushd ../src_win32/build %mingw32_cmake %{ss_common} %{ss_noblas} popd %{mingw32_env} %{__make} -C ../src_win32/build %{?_smp_mflags} mkdir -p ../src_win64/build pushd ../src_win64/build %mingw64_cmake %{ss_common} %{ss_openblas} popd %{mingw64_env} %{__make} -C ../src_win64/build %{?_smp_mflags} mkdir -p ../src_ucrt64/build pushd ../src_ucrt64/build %ucrt64_cmake %{ss_common} %{ss_noblas} popd %{ucrt64_env} %{__make} -C ../src_ucrt64/build %{?_smp_mflags} %install %{mingw32_env} %{__make} -C ../src_win32/build install DESTDIR=%{buildroot} %{mingw64_env} %{__make} -C ../src_win64/build install DESTDIR=%{buildroot} %{ucrt64_env} %{__make} -C ../src_ucrt64/build install DESTDIR=%{buildroot} # Win32 %files -n mingw32-suitesparse %license LICENSE.txt %{mingw32_bindir}/libamd.dll %{mingw32_bindir}/libcamd.dll %{mingw32_bindir}/libccolamd.dll %{mingw32_bindir}/libcholmod.dll %{mingw32_bindir}/libcolamd.dll %{mingw32_bindir}/libcxsparse.dll %{mingw32_bindir}/libsuitesparseconfig.dll %{mingw32_includedir}/suitesparse %{mingw32_libdir}/libamd.dll.a %{mingw32_libdir}/libcamd.dll.a %{mingw32_libdir}/libccolamd.dll.a %{mingw32_libdir}/libcholmod.dll.a %{mingw32_libdir}/libcolamd.dll.a %{mingw32_libdir}/libcxsparse.dll.a %{mingw32_libdir}/libsuitesparseconfig.dll.a %{mingw32_libdir}/cmake/AMD %{mingw32_libdir}/cmake/CAMD %{mingw32_libdir}/cmake/CCOLAMD %{mingw32_libdir}/cmake/CHOLMOD %{mingw32_libdir}/cmake/COLAMD %{mingw32_libdir}/cmake/CXSparse %{mingw32_libdir}/cmake/SuiteSparse %{mingw32_libdir}/cmake/SuiteSparse_config %{mingw32_libdir}/pkgconfig/AMD.pc %{mingw32_libdir}/pkgconfig/CAMD.pc %{mingw32_libdir}/pkgconfig/CCOLAMD.pc %{mingw32_libdir}/pkgconfig/CHOLMOD.pc %{mingw32_libdir}/pkgconfig/COLAMD.pc %{mingw32_libdir}/pkgconfig/CXSparse.pc %{mingw32_libdir}/pkgconfig/SuiteSparse_config.pc # Win64 %files -n mingw64-suitesparse %license LICENSE.txt %{mingw64_bindir}/libamd.dll %{mingw64_bindir}/libcamd.dll %{mingw64_bindir}/libccolamd.dll %{mingw64_bindir}/libcholmod.dll %{mingw64_bindir}/libcolamd.dll %{mingw64_bindir}/libcxsparse.dll %{mingw64_bindir}/libsuitesparseconfig.dll %{mingw64_includedir}/suitesparse %{mingw64_libdir}/libamd.dll.a %{mingw64_libdir}/libcamd.dll.a %{mingw64_libdir}/libccolamd.dll.a %{mingw64_libdir}/libcholmod.dll.a %{mingw64_libdir}/libcolamd.dll.a %{mingw64_libdir}/libcxsparse.dll.a %{mingw64_libdir}/libsuitesparseconfig.dll.a %{mingw64_libdir}/cmake/AMD %{mingw64_libdir}/cmake/CAMD %{mingw64_libdir}/cmake/CCOLAMD %{mingw64_libdir}/cmake/CHOLMOD %{mingw64_libdir}/cmake/COLAMD %{mingw64_libdir}/cmake/CXSparse %{mingw64_libdir}/cmake/SuiteSparse %{mingw64_libdir}/cmake/SuiteSparse_config %{mingw64_libdir}/pkgconfig/AMD.pc %{mingw64_libdir}/pkgconfig/CAMD.pc %{mingw64_libdir}/pkgconfig/CCOLAMD.pc %{mingw64_libdir}/pkgconfig/CHOLMOD.pc %{mingw64_libdir}/pkgconfig/COLAMD.pc %{mingw64_libdir}/pkgconfig/CXSparse.pc %{mingw64_libdir}/pkgconfig/SuiteSparse_config.pc # UCRT64 %files -n ucrt64-suitesparse %license LICENSE.txt %{ucrt64_bindir}/libamd.dll %{ucrt64_bindir}/libcamd.dll %{ucrt64_bindir}/libccolamd.dll %{ucrt64_bindir}/libcholmod.dll %{ucrt64_bindir}/libcolamd.dll %{ucrt64_bindir}/libcxsparse.dll %{ucrt64_bindir}/libsuitesparseconfig.dll %{ucrt64_includedir}/suitesparse %{ucrt64_libdir}/libamd.dll.a %{ucrt64_libdir}/libcamd.dll.a %{ucrt64_libdir}/libccolamd.dll.a %{ucrt64_libdir}/libcholmod.dll.a %{ucrt64_libdir}/libcolamd.dll.a %{ucrt64_libdir}/libcxsparse.dll.a %{ucrt64_libdir}/libsuitesparseconfig.dll.a %{ucrt64_libdir}/cmake/AMD %{ucrt64_libdir}/cmake/CAMD %{ucrt64_libdir}/cmake/CCOLAMD %{ucrt64_libdir}/cmake/CHOLMOD %{ucrt64_libdir}/cmake/COLAMD %{ucrt64_libdir}/cmake/CXSparse %{ucrt64_libdir}/cmake/SuiteSparse %{ucrt64_libdir}/cmake/SuiteSparse_config %{ucrt64_libdir}/pkgconfig/AMD.pc %{ucrt64_libdir}/pkgconfig/CAMD.pc %{ucrt64_libdir}/pkgconfig/CCOLAMD.pc %{ucrt64_libdir}/pkgconfig/CHOLMOD.pc %{ucrt64_libdir}/pkgconfig/COLAMD.pc %{ucrt64_libdir}/pkgconfig/CXSparse.pc %{ucrt64_libdir}/pkgconfig/SuiteSparse_config.pc %changelog * Tue Sep 08 2026 Jack Greiner - 7.14.0-1 - Add initial mingw suitesparse package