From f7596580803cbc3d30a2ae0d0781c1b306702903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Bissey?= Date: Wed, 31 Jan 2024 16:44:07 +1300 Subject: [PATCH 1/8] upgrade shipped suitesparse components to 7.6.0 --- build/pkgs/suitesparse/SPKG.rst | 12 - build/pkgs/suitesparse/checksums.ini | 6 +- build/pkgs/suitesparse/dependencies | 2 +- build/pkgs/suitesparse/package-version.txt | 2 +- .../patches/01-no_cmake_project.patch | 90 -- .../suitesparse/patches/02-darwin_blas.patch | 15 - .../suitesparse/patches/03-buildflags.patch | 35 - .../pkgs/suitesparse/patches/04-cygwin.patch | 802 ------------------ build/pkgs/suitesparse/spkg-install.in | 18 +- 9 files changed, 12 insertions(+), 970 deletions(-) delete mode 100644 build/pkgs/suitesparse/patches/01-no_cmake_project.patch delete mode 100644 build/pkgs/suitesparse/patches/02-darwin_blas.patch delete mode 100644 build/pkgs/suitesparse/patches/03-buildflags.patch delete mode 100644 build/pkgs/suitesparse/patches/04-cygwin.patch diff --git a/build/pkgs/suitesparse/SPKG.rst b/build/pkgs/suitesparse/SPKG.rst index 7a9bd5d599c..8656085818b 100644 --- a/build/pkgs/suitesparse/SPKG.rst +++ b/build/pkgs/suitesparse/SPKG.rst @@ -6,23 +6,11 @@ hosted at http://faculty.cse.tamu.edu/davis/suitesparse.html This spkg does a minimal install of suitesparse disabling the following -- metis - GraphBLAS (need cmake) - Mongoose (need cmake) An external metis package can be used but we just disable its use. -Patches: - -- The first patch disable the building of package using cmake. -- The second patch make sure we use sage's blas/lapack on OS X. By - default - suitesparse discard any configurations to use the accelerate framework. - -The building of metis is diabled by passing MY_METIS_LIB=none to make -(any value would have done) We also configure cholmod so it doesn't -require metis by passing CHOLMOD_CONFIG=-DNPARTITION to make. - Other configurations are self explanatory. License: because SuiteSparse is a collection, it comes with a variety of diff --git a/build/pkgs/suitesparse/checksums.ini b/build/pkgs/suitesparse/checksums.ini index fa6fbb6f9a4..5b2f00872b7 100644 --- a/build/pkgs/suitesparse/checksums.ini +++ b/build/pkgs/suitesparse/checksums.ini @@ -1,5 +1,5 @@ tarball=SuiteSparse-VERSION.tar.gz -sha1=83dd96b32701e12b7577acb7d9aea80138d7e46e -md5=68bb912f3cf3d2b01f30ebafef690302 -cksum=178881779 +sha1=765bafd9645826a7502e69d666481840604c0073 +md5=79a68c2eca2d4b213a304bd08180c630 +cksum=4274458480 upstream_url=https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/refs/tags/vVERSION.tar.gz diff --git a/build/pkgs/suitesparse/dependencies b/build/pkgs/suitesparse/dependencies index c9663df28f5..8ea6f6f523a 100644 --- a/build/pkgs/suitesparse/dependencies +++ b/build/pkgs/suitesparse/dependencies @@ -1 +1 @@ -$(BLAS) gfortran mpfr $(MP_LIBRARY) +$(BLAS) gfortran mpfr $(MP_LIBRARY) | cmake diff --git a/build/pkgs/suitesparse/package-version.txt b/build/pkgs/suitesparse/package-version.txt index 4e32c7b1caf..93c8ddab9fe 100644 --- a/build/pkgs/suitesparse/package-version.txt +++ b/build/pkgs/suitesparse/package-version.txt @@ -1 +1 @@ -5.10.1 +7.6.0 diff --git a/build/pkgs/suitesparse/patches/01-no_cmake_project.patch b/build/pkgs/suitesparse/patches/01-no_cmake_project.patch deleted file mode 100644 index 8b2b1a2666c..00000000000 --- a/build/pkgs/suitesparse/patches/01-no_cmake_project.patch +++ /dev/null @@ -1,90 +0,0 @@ -diff --git a/Makefile b/Makefile -index abd00d0f..10c31390 100644 ---- a/Makefile -+++ b/Makefile -@@ -16,7 +16,6 @@ include SuiteSparse_config/SuiteSparse_config.mk - # installs all libraries SuiteSparse/lib. - go: metis - ( cd SuiteSparse_config && $(MAKE) ) -- ( cd Mongoose && $(MAKE) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' ) - ( cd AMD && $(MAKE) ) - ( cd BTF && $(MAKE) ) - ( cd CAMD && $(MAKE) ) -@@ -34,7 +33,6 @@ ifneq ($(GPU_CONFIG),) - ( cd GPUQREngine && $(MAKE) ) - endif - ( cd SPQR && $(MAKE) ) -- ( cd GraphBLAS && $(MAKE) JOBS=$(JOBS) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' ) - ( cd SLIP_LU && $(MAKE) ) - # ( cd PIRO_BAND && $(MAKE) ) - # ( cd SKYLINE_SVD && $(MAKE) ) -@@ -46,7 +44,6 @@ endif - # (note that CSparse is not installed; CXSparse is installed instead) - install: metisinstall - ( cd SuiteSparse_config && $(MAKE) install ) -- ( cd Mongoose && $(MAKE) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' install ) - ( cd AMD && $(MAKE) install ) - ( cd BTF && $(MAKE) install ) - ( cd CAMD && $(MAKE) install ) -@@ -63,7 +60,6 @@ ifneq (,$(GPU_CONFIG)) - ( cd GPUQREngine && $(MAKE) install ) - endif - ( cd SPQR && $(MAKE) install ) -- ( cd GraphBLAS && $(MAKE) JOBS=$(JOBS) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' install ) - # ( cd PIRO_BAND && $(MAKE) install ) - # ( cd SKYLINE_SVD && $(MAKE) install ) - ( cd SLIP_LU && $(MAKE) install ) -@@ -126,7 +122,6 @@ endif - # the static library - library: metis - ( cd SuiteSparse_config && $(MAKE) ) -- ( cd Mongoose && $(MAKE) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' library ) - ( cd AMD && $(MAKE) library ) - ( cd BTF && $(MAKE) library ) - ( cd CAMD && $(MAKE) library ) -@@ -144,7 +139,6 @@ ifneq (,$(GPU_CONFIG)) - ( cd GPUQREngine && $(MAKE) library ) - endif - ( cd SPQR && $(MAKE) library ) -- ( cd GraphBLAS && $(MAKE) JOBS=$(JOBS) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' library ) - ( cd SLIP_LU && $(MAKE) library ) - # ( cd PIRO_BAND && $(MAKE) library ) - # ( cd SKYLINE_SVD && $(MAKE) library ) -@@ -154,7 +148,6 @@ endif - # both the dynamic and static libraries. - static: metis - ( cd SuiteSparse_config && $(MAKE) static ) -- ( cd Mongoose && $(MAKE) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' static ) - ( cd AMD && $(MAKE) static ) - ( cd BTF && $(MAKE) static ) - ( cd CAMD && $(MAKE) static ) -@@ -172,7 +165,6 @@ ifneq (,$(GPU_CONFIG)) - ( cd GPUQREngine && $(MAKE) static ) - endif - ( cd SPQR && $(MAKE) static ) -- ( cd GraphBLAS && $(MAKE) JOBS=$(JOBS) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' static ) - ( cd SLIP_LU && $(MAKE) static ) - # ( cd PIRO_BAND && $(MAKE) static ) - # ( cd SKYLINE_SVD && $(MAKE) static ) -@@ -291,21 +283,3 @@ else - @echo 'Using pre-installed METIS 5.1.0 library at ' '[$(MY_METIS_LIB)]' - endif - --# just compile GraphBLAS --gb: -- echo $(CMAKE_OPTIONS) -- ( cd GraphBLAS && $(MAKE) JOBS=$(JOBS) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' ) -- --# just install GraphBLAS --gbinstall: -- echo $(CMAKE_OPTIONS) -- ( cd GraphBLAS && $(MAKE) JOBS=$(JOBS) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' install ) -- --# just compile Mongoose --mon: -- ( cd Mongoose && $(MAKE) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' ) -- --# just install Mongoose --moninstall: -- ( cd Mongoose && $(MAKE) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' install ) -- diff --git a/build/pkgs/suitesparse/patches/02-darwin_blas.patch b/build/pkgs/suitesparse/patches/02-darwin_blas.patch deleted file mode 100644 index 546bfc80642..00000000000 --- a/build/pkgs/suitesparse/patches/02-darwin_blas.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/SuiteSparse_config/SuiteSparse_config.mk b/SuiteSparse_config/SuiteSparse_config.mk -index 2fe1ab09..352ff593 100644 ---- a/SuiteSparse_config/SuiteSparse_config.mk -+++ b/SuiteSparse_config/SuiteSparse_config.mk -@@ -370,8 +370,8 @@ SUITESPARSE_VERSION = 5.10.1 - # command line in the Terminal, before doing 'make': - # xcode-select --install - CF += -fno-common -- BLAS ?= -framework Accelerate -- LAPACK ?= -framework Accelerate -+ #BLAS ?= -framework Accelerate -+ #LAPACK ?= -framework Accelerate - # OpenMP is not yet supported by default in clang - CFOPENMP = - LDLIBS += -rpath $(INSTALL_LIB) diff --git a/build/pkgs/suitesparse/patches/03-buildflags.patch b/build/pkgs/suitesparse/patches/03-buildflags.patch deleted file mode 100644 index 8a2c312be39..00000000000 --- a/build/pkgs/suitesparse/patches/03-buildflags.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff --git a/SuiteSparse_config/SuiteSparse_config.mk b/SuiteSparse_config/SuiteSparse_config.mk -index 352ff593..61f0076e 100644 ---- a/SuiteSparse_config/SuiteSparse_config.mk -+++ b/SuiteSparse_config/SuiteSparse_config.mk -@@ -72,9 +72,9 @@ SUITESPARSE_VERSION = 5.10.1 - # which puts the libraries in /yada/mylibs, include files in /yoda/myinc, - # and documentation in /solo/mydox. - INSTALL ?= $(SUITESPARSE) -- INSTALL_LIB ?= $(INSTALL)/lib -- INSTALL_INCLUDE ?= $(INSTALL)/include -- INSTALL_DOC ?= $(INSTALL)/share/doc/suitesparse-$(SUITESPARSE_VERSION) -+ INSTALL_LIB ?= $(DESTDIR)$(INSTALL)/lib -+ INSTALL_INCLUDE ?= $(DESTDIR)$(INSTALL)/include -+ INSTALL_DOC ?= $(DESTDIR)$(INSTALL)/share/doc/suitesparse-$(SUITESPARSE_VERSION) - - #--------------------------------------------------------------------------- - # parallel make -@@ -358,7 +358,7 @@ SUITESPARSE_VERSION = 5.10.1 - - ifeq ($(UNAME),Linux) - # add the realtime library, librt, and SuiteSparse/lib -- LDLIBS += -lrt -Wl,-rpath=$(INSTALL_LIB) -+ LDLIBS += -lrt - endif - - #--------------------------------------------------------------------------- -@@ -464,7 +464,7 @@ else - SO_TARGET = $(LIBRARY).$(VERSION).dylib - SO_OPTS += -dynamiclib -compatibility_version $(SO_VERSION) \ - -current_version $(VERSION) \ -- -Wl,-install_name -Wl,@rpath/$(SO_MAIN) \ -+ -Wl,-install_name -Wl,$(INSTALL)/lib/$(SO_MAIN) \ - -shared -undefined dynamic_lookup - # When a Mac *.dylib file is moved, this command is required - # to change its internal name to match its location in the filesystem: diff --git a/build/pkgs/suitesparse/patches/04-cygwin.patch b/build/pkgs/suitesparse/patches/04-cygwin.patch deleted file mode 100644 index f4118f86670..00000000000 --- a/build/pkgs/suitesparse/patches/04-cygwin.patch +++ /dev/null @@ -1,802 +0,0 @@ -diff --git a/AMD/Lib/Makefile b/AMD/Lib/Makefile -index 3b92f6a0..582bef2a 100644 ---- a/AMD/Lib/Makefile -+++ b/AMD/Lib/Makefile -@@ -2,7 +2,7 @@ - # AMD Lib/Makefile - #------------------------------------------------------------------------------- - --LIBRARY = libamd -+LIBRARY = amd - VERSION = 2.4.6 - SO_VERSION = 2 - -@@ -81,19 +81,22 @@ libamdf77.a: $(AMDF77) - #------------------------------------------------------------------------------- - - # install AMD --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/amd.h $(INSTALL_INCLUDE) - $(CP) ../Doc/AMD_UserGuide.pdf $(INSTALL_DOC) - $(CP) ../README.txt $(INSTALL_DOC)/AMD_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/amd.h - chmod 644 $(INSTALL_DOC)/AMD_UserGuide.pdf - chmod 644 $(INSTALL_DOC)/AMD_README.txt -diff --git a/BTF/Lib/Makefile b/BTF/Lib/Makefile -index 85b7a264..6e4e2ec4 100644 ---- a/BTF/Lib/Makefile -+++ b/BTF/Lib/Makefile -@@ -2,7 +2,7 @@ - # BTF Lib/Makefile - #------------------------------------------------------------------------------- - --LIBRARY = libbtf -+LIBRARY = btf - VERSION = 1.2.6 - SO_VERSION = 1 - -@@ -66,18 +66,21 @@ btf_l_strongcomp.o: ../Source/btf_strongcomp.c - #------------------------------------------------------------------------------- - - # install BTF --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/btf.h $(INSTALL_INCLUDE) - $(CP) ../README.txt $(INSTALL_DOC)/BTF_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/btf.h - chmod 644 $(INSTALL_DOC)/BTF_README.txt - -diff --git a/CAMD/Lib/Makefile b/CAMD/Lib/Makefile -index b3ae159e..27cb072a 100644 ---- a/CAMD/Lib/Makefile -+++ b/CAMD/Lib/Makefile -@@ -2,7 +2,7 @@ - # CAMD Lib/Makefile - #------------------------------------------------------------------------------- - --LIBRARY = libcamd -+LIBRARY = camd - VERSION = 2.4.6 - SO_VERSION = 2 - -@@ -62,19 +62,22 @@ $(AR_TARGET): $(OBJ) - #------------------------------------------------------------------------------- - - # install CAMD --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/camd.h $(INSTALL_INCLUDE) - $(CP) ../Doc/CAMD_UserGuide.pdf $(INSTALL_DOC) - $(CP) ../README.txt $(INSTALL_DOC)/CAMD_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/camd.h - chmod 644 $(INSTALL_DOC)/CAMD_UserGuide.pdf - chmod 644 $(INSTALL_DOC)/CAMD_README.txt -diff --git a/CCOLAMD/Lib/Makefile b/CCOLAMD/Lib/Makefile -index 52c52eb9..18190be0 100644 ---- a/CCOLAMD/Lib/Makefile -+++ b/CCOLAMD/Lib/Makefile -@@ -2,7 +2,7 @@ - # CCOLAMD Lib/Makefile - #------------------------------------------------------------------------------- - --LIBRARY = libccolamd -+LIBRARY = ccolamd - VERSION = 2.9.6 - SO_VERSION = 2 - -@@ -49,18 +49,21 @@ distclean: clean - - $(RM) -r $(PURGE) - - # install CCOLAMD --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/ccolamd.h $(INSTALL_INCLUDE) - $(CP) ../README.txt $(INSTALL_DOC)/CCOLAMD_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/ccolamd.h - chmod 644 $(INSTALL_DOC)/CCOLAMD_README.txt - -diff --git a/CHOLMOD/Lib/Makefile b/CHOLMOD/Lib/Makefile -index bc3eab69..d240b4cd 100644 ---- a/CHOLMOD/Lib/Makefile -+++ b/CHOLMOD/Lib/Makefile -@@ -2,7 +2,7 @@ - # CHOLMOD/Lib/Makefile: for compiling the CHOLMOD library - #=============================================================================== - --LIBRARY = libcholmod -+LIBRARY = cholmod - VERSION = 3.0.14 - SO_VERSION = 3 - -@@ -535,20 +535,23 @@ cholmod_l_gpu.o: ../GPU/cholmod_gpu.c - #------------------------------------------------------------------------------- - - # install CHOLMOD --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CXX) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/cholmod*.h $(INSTALL_INCLUDE) - $(RM) $(INSTALL_INCLUDE)/cholmod_internal.h - $(CP) ../Doc/CHOLMOD_UserGuide.pdf $(INSTALL_DOC) - $(CP) ../README.txt $(INSTALL_DOC)/CHOLMOD_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/cholmod*.h - chmod 644 $(INSTALL_DOC)/CHOLMOD_UserGuide.pdf - chmod 644 $(INSTALL_DOC)/CHOLMOD_README.txt -diff --git a/COLAMD/Lib/Makefile b/COLAMD/Lib/Makefile -index 2d0c5aa6..26720b62 100644 ---- a/COLAMD/Lib/Makefile -+++ b/COLAMD/Lib/Makefile -@@ -2,7 +2,7 @@ - # COLAMD Lib/Makefile - #------------------------------------------------------------------------------- - --LIBRARY = libcolamd -+LIBRARY = colamd - VERSION = 2.9.6 - SO_VERSION = 2 - -@@ -49,18 +49,21 @@ distclean: clean - - $(RM) -r $(PURGE) - - # install COLAMD --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/colamd.h $(INSTALL_INCLUDE) - $(CP) ../README.txt $(INSTALL_DOC)/COLAMD_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/colamd.h - chmod 644 $(INSTALL_DOC)/COLAMD_README.txt - -diff --git a/CSparse/Lib/Makefile b/CSparse/Lib/Makefile -index e3f32cec..468f7a47 100644 ---- a/CSparse/Lib/Makefile -+++ b/CSparse/Lib/Makefile -@@ -14,7 +14,7 @@ - # install' in this Makefile only installs a static compiled library in - # CSparse/Lib. It does not install it for system-wide usage. - --LIBRARY = libcsparse -+LIBRARY = csparse - CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O - - I = -I../Include -diff --git a/CXSparse/Lib/Makefile b/CXSparse/Lib/Makefile -index a21e3607..270b8027 100644 ---- a/CXSparse/Lib/Makefile -+++ b/CXSparse/Lib/Makefile -@@ -2,7 +2,7 @@ - # CXSparse Lib/Makefile - #------------------------------------------------------------------------------- - --LIBRARY = libcxsparse -+LIBRARY = cxsparse - VERSION = 3.2.0 - SO_VERSION = 3 - -@@ -113,18 +113,21 @@ distclean: clean - - $(RM) -r $(PURGE) - - # install CXSparse --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(CS) -+$(INSTALL_SO): $(CS) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/cs.h $(INSTALL_INCLUDE) - $(CP) ../README.txt $(INSTALL_DOC)/CXSPARSE_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/cs.h - chmod 644 $(INSTALL_DOC)/CXSPARSE_README.txt - -diff --git a/CXSparse_newfiles/Lib/Makefile b/CXSparse_newfiles/Lib/Makefile -index a21e3607..270b8027 100644 ---- a/CXSparse_newfiles/Lib/Makefile -+++ b/CXSparse_newfiles/Lib/Makefile -@@ -2,7 +2,7 @@ - # CXSparse Lib/Makefile - #------------------------------------------------------------------------------- - --LIBRARY = libcxsparse -+LIBRARY = cxsparse - VERSION = 3.2.0 - SO_VERSION = 3 - -@@ -113,18 +113,21 @@ distclean: clean - - $(RM) -r $(PURGE) - - # install CXSparse --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(CS) -+$(INSTALL_SO): $(CS) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/cs.h $(INSTALL_INCLUDE) - $(CP) ../README.txt $(INSTALL_DOC)/CXSPARSE_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/cs.h - chmod 644 $(INSTALL_DOC)/CXSPARSE_README.txt - -diff --git a/GPUQREngine/Lib/Makefile b/GPUQREngine/Lib/Makefile -index adf46039..7bb34807 100644 ---- a/GPUQREngine/Lib/Makefile -+++ b/GPUQREngine/Lib/Makefile -@@ -2,7 +2,7 @@ - # GPUQREngine/Lib/Makefile: for compiling the GPUQREngine library - #------------------------------------------------------------------------------- - --LIBRARY = libGPUQREngine -+LIBRARY = GPUQREngine - VERSION = 1.0.5 - SO_VERSION = 1 - -@@ -129,17 +129,20 @@ $(AR_TARGET): $(OBJS) - #------------------------------------------------------------------------------- - - # install GPUQREngine. Note that the include files are not installed. --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJS) -+$(INSTALL_SO): $(OBJS) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CXX) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -- $(CP) ../README.txt $(INSTALL_DOC)/GPUQRENGINE_README.txt - chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif -+ $(CP) ../README.txt $(INSTALL_DOC)/GPUQRENGINE_README.txt - chmod 644 $(INSTALL_DOC)/GPUQRENGINE_README.txt - - # uninstall GPUQREngine -diff --git a/KLU/Lib/Makefile b/KLU/Lib/Makefile -index 2dc62cb4..35e2ed3a 100644 ---- a/KLU/Lib/Makefile -+++ b/KLU/Lib/Makefile -@@ -2,7 +2,7 @@ - # KLU Lib/Makefile - #------------------------------------------------------------------------------- - --LIBRARY = libklu -+LIBRARY = klu - VERSION = 1.3.8 - SO_VERSION = 1 - -@@ -263,19 +263,22 @@ klu_l_memory.o: ../Source/klu_memory.c - #------------------------------------------------------------------------------- - - # install KLU --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/klu.h $(INSTALL_INCLUDE) - $(CP) ../Doc/KLU_UserGuide.pdf $(INSTALL_DOC) - $(CP) ../README.txt $(INSTALL_DOC)/KLU_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/klu.h - chmod 644 $(INSTALL_DOC)/KLU_UserGuide.pdf - chmod 644 $(INSTALL_DOC)/KLU_README.txt -diff --git a/LDL/Lib/Makefile b/LDL/Lib/Makefile -index 604ffa27..da5ecd53 100644 ---- a/LDL/Lib/Makefile -+++ b/LDL/Lib/Makefile -@@ -2,7 +2,7 @@ - # LDL Lib/Makefile - #------------------------------------------------------------------------------- - --LIBRARY = libldl -+LIBRARY = ldl - VERSION = 2.2.6 - SO_VERSION = 2 - -@@ -46,19 +46,22 @@ clean: - - $(RM) -r $(CLEAN) - - # install LDL --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/ldl.h $(INSTALL_INCLUDE) - $(CP) ../Doc/ldl_userguide.pdf $(INSTALL_DOC) - $(CP) ../README.txt $(INSTALL_DOC)/LDL_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/ldl.h - chmod 644 $(INSTALL_DOC)/ldl_userguide.pdf - chmod 644 $(INSTALL_DOC)/LDL_README.txt -diff --git a/RBio/Lib/Makefile b/RBio/Lib/Makefile -index 056715de..4ba42157 100644 ---- a/RBio/Lib/Makefile -+++ b/RBio/Lib/Makefile -@@ -2,7 +2,7 @@ - # RBio/Lib/Makefile: for compiling the RBio library - #=============================================================================== - --LIBRARY = librbio -+LIBRARY = rbio - VERSION = 2.2.6 - SO_VERSION = 2 - -@@ -60,18 +60,21 @@ RBio_i.o: ../Source/RBio.c - #------------------------------------------------------------------------------- - - # install RBio --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/RBio.h $(INSTALL_INCLUDE) - $(CP) ../README.txt $(INSTALL_DOC)/RBIO_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/RBio.h - chmod 644 $(INSTALL_DOC)/RBIO_README.txt - -diff --git a/SLIP_LU/Lib/Makefile b/SLIP_LU/Lib/Makefile -index 8b2221f1..b2153824 100644 ---- a/SLIP_LU/Lib/Makefile -+++ b/SLIP_LU/Lib/Makefile -@@ -8,7 +8,7 @@ - # To run a demo using the library - # cd ../Demo ; make - --LIBRARY = libsliplu -+LIBRARY = sliplu - VERSION = 1.0.2 - SO_VERSION = 1 - -@@ -63,19 +63,22 @@ $(AR_TARGET): $(OBJ) - #------------------------------------------------------------------------------- - - # install SLIP_LU --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/SLIP_LU.h $(INSTALL_INCLUDE) - $(CP) ../Doc/SLIP_LU_UserGuide.pdf $(INSTALL_DOC) - $(CP) ../README.md $(INSTALL_DOC)/SLIP_LU_README.md -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/SLIP_LU.h - chmod 644 $(INSTALL_DOC)/SLIP_LU_UserGuide.pdf - chmod 644 $(INSTALL_DOC)/SLIP_LU_README.md -diff --git a/SPQR/Lib/Makefile b/SPQR/Lib/Makefile -index 06c142ae..10e32007 100644 ---- a/SPQR/Lib/Makefile -+++ b/SPQR/Lib/Makefile -@@ -2,7 +2,7 @@ - # SuiteSparseQR/Lib/Makefile - #=============================================================================== - --LIBRARY = libspqr -+LIBRARY = spqr - VERSION = 2.0.9 - SO_VERSION = 2 - -@@ -242,22 +242,25 @@ spqrgpu_computeFrontStaging.o: ../SPQRGPU/spqrgpu_computeFrontStaging.cpp - #------------------------------------------------------------------------------- - - # install SPQR --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CXX) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/SuiteSparseQR.hpp $(INSTALL_INCLUDE) - $(CP) ../Include/SuiteSparseQR_C.h $(INSTALL_INCLUDE) - $(CP) ../Include/SuiteSparseQR_definitions.h $(INSTALL_INCLUDE) - $(CP) ../Include/spqr.hpp $(INSTALL_INCLUDE) - $(CP) ../Doc/spqr_user_guide.pdf $(INSTALL_DOC) - $(CP) ../README.txt $(INSTALL_DOC)/SPQR_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/SuiteSparseQR.hpp - chmod 644 $(INSTALL_INCLUDE)/SuiteSparseQR_C.h - chmod 644 $(INSTALL_INCLUDE)/SuiteSparseQR_definitions.h -diff --git a/SuiteSparse_GPURuntime/Lib/Makefile b/SuiteSparse_GPURuntime/Lib/Makefile -index 31f536a5..2f6c54d0 100644 ---- a/SuiteSparse_GPURuntime/Lib/Makefile -+++ b/SuiteSparse_GPURuntime/Lib/Makefile -@@ -2,7 +2,7 @@ - # SuiteSparse_GPURuntime/Lib/Makfile - #------------------------------------------------------------------------------- - --LIBRARY = libSuiteSparse_GPURuntime -+LIBRARY = SuiteSparse_GPURuntime - VERSION = 1.0.5 - SO_VERSION = 1 - -@@ -70,17 +70,20 @@ SuiteSparseGPU_Workspace_transfer.o: ../Source/SuiteSparseGPU_Workspace_transfer - #------------------------------------------------------------------------------- - - # install SuiteSparse_GPURuntime (just the library, not the include files) --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJS) -+$(INSTALL_SO): $(OBJS) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CXX) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -- $(CP) ../README.txt $(INSTALL_DOC)/GPURUNTIME_README.txt - chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif -+ $(CP) ../README.txt $(INSTALL_DOC)/GPURUNTIME_README.txt - chmod 644 $(INSTALL_DOC)/GPURUNTIME_README.txt - - # uninstall SuiteSparse_GPURuntime -diff --git a/SuiteSparse_config/Makefile b/SuiteSparse_config/Makefile -index 6a5814d4..e2acc53e 100644 ---- a/SuiteSparse_config/Makefile -+++ b/SuiteSparse_config/Makefile -@@ -6,7 +6,7 @@ SUITESPARSE ?= $(realpath $(CURDIR)/..) - export SUITESPARSE - - # version of SuiteSparse_config is also version of SuiteSparse meta-package --LIBRARY = libsuitesparseconfig -+LIBRARY = suitesparseconfig - VERSION = 5.10.1 - SO_VERSION = 5 - -@@ -44,19 +44,23 @@ clean: - - $(RM) -r $(CLEAN) - - # install SuiteSparse_config --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+# Likely redundant with the above but not on Cygwin -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -- $(CP) SuiteSparse_config.h $(INSTALL_INCLUDE) -- $(CP) README.txt $(INSTALL_DOC)/SUITESPARSECONFIG_README.txt - chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 755 $(INSTALL_LIB)/$(SO_PLAIN) -+endif -+ $(CP) SuiteSparse_config.h $(INSTALL_INCLUDE) -+ $(CP) README.txt $(INSTALL_DOC)/SUITESPARSECONFIG_README.txt - chmod 644 $(INSTALL_INCLUDE)/SuiteSparse_config.h - chmod 644 $(INSTALL_DOC)/SUITESPARSECONFIG_README.txt - -diff --git a/SuiteSparse_config/SuiteSparse_config.mk b/SuiteSparse_config/SuiteSparse_config.mk -index 61f0076e..5caa89dd 100644 ---- a/SuiteSparse_config/SuiteSparse_config.mk -+++ b/SuiteSparse_config/SuiteSparse_config.mk -@@ -16,14 +16,14 @@ SUITESPARSE_VERSION = 5.10.1 - # To disable these auto configurations, use 'make UNAME=custom' - - ifndef UNAME -- ifeq ($(OS),Windows_NT) -- # Cygwin Make on Windows has an $(OS) variable, but not uname. -- # Note that this option is untested. -- UNAME = Windows -- else -- # Linux and Darwin (Mac OSX) have been tested. -- UNAME := $(shell uname) -- endif -+ # Linux and Darwin (Mac OSX) have been tested. -+ UNAME := $(shell uname) -+ endif -+ -+ # On Cygwin we'll typically have UNAME=CYGWIN but just normalize -+ # to "CYGWIN" -+ ifeq ($(findstring CYGWIN,$(UNAME)),CYGWIN) -+ UNAME := Cygwin - endif - - #=============================================================================== -@@ -170,6 +170,11 @@ SUITESPARSE_VERSION = 5.10.1 - # It places its shared *.so libraries in SuiteSparse/lib. - # Linux also requires the -lrt library (see below) - LDLIBS ?= -lm -+ # Note: Because suitesparse doesn't really do install staging properly -+ # (it just outputs final build artifacts directly to their install paths) -+ # we must add that path to our linker flags in order to link properly -+ # against built libraries; it might be better to fix the whole build -+ # system though). - LDFLAGS += -L$(INSTALL_LIB) - - # NOTE: Use of the Intel MKL BLAS is strongly recommended. The OpenBLAS can -@@ -447,21 +452,23 @@ SUITESPARSE_VERSION = 5.10.1 - - SO_OPTS = $(LDFLAGS) - --ifeq ($(UNAME),Windows) -- # Cygwin Make on Windows (untested) -- AR_TARGET = $(LIBRARY).lib -- SO_PLAIN = $(LIBRARY).dll -- SO_MAIN = $(LIBRARY).$(SO_VERSION).dll -- SO_TARGET = $(LIBRARY).$(VERSION).dll -- SO_INSTALL_NAME = echo -+ifeq ($(UNAME),Cygwin) -+ # Cygwin Make on Windows -+ AR_TARGET = lib$(LIBRARY).a -+ SO_TARGET = cyg$(LIBRARY)-$(SO_VERSION).dll -+ IMPLIB = lib$(LIBRARY).dll.a -+ SO_OPTS += -shared -Wl,--no-undefined -Wl,--out-implib -Wl,$(INSTALL_LIB)/$(IMPLIB) -+ INSTALL_DLL := $(DESTDIR)$(INSTALL)/bin -+ INSTALL_SO = $(INSTALL_DLL)/$(SO_TARGET) - else - # Mac or Linux/Unix -- AR_TARGET = $(LIBRARY).a -+ AR_TARGET = lib$(LIBRARY).a -+ INSTALL_SO = $(INSTALL_LIB)/$(SO_TARGET) - ifeq ($(UNAME),Darwin) - # Mac -- SO_PLAIN = $(LIBRARY).dylib -- SO_MAIN = $(LIBRARY).$(SO_VERSION).dylib -- SO_TARGET = $(LIBRARY).$(VERSION).dylib -+ SO_PLAIN = lib$(LIBRARY).dylib -+ SO_MAIN = lib$(LIBRARY).$(SO_VERSION).dylib -+ SO_TARGET = lib$(LIBRARY).$(VERSION).dylib - SO_OPTS += -dynamiclib -compatibility_version $(SO_VERSION) \ - -current_version $(VERSION) \ - -Wl,-install_name -Wl,$(INSTALL)/lib/$(SO_MAIN) \ -@@ -471,9 +478,9 @@ else - SO_INSTALL_NAME = install_name_tool -id - else - # Linux and other variants of Unix -- SO_PLAIN = $(LIBRARY).so -- SO_MAIN = $(LIBRARY).so.$(SO_VERSION) -- SO_TARGET = $(LIBRARY).so.$(VERSION) -+ SO_PLAIN = lib$(LIBRARY).so -+ SO_MAIN = lib$(LIBRARY).so.$(SO_VERSION) -+ SO_TARGET = lib$(LIBRARY).so.$(VERSION) - SO_OPTS += -shared -Wl,-soname -Wl,$(SO_MAIN) -Wl,--no-undefined - # Linux/Unix *.so files can be moved without modification: - SO_INSTALL_NAME = echo -diff --git a/SuiteSparse_config/xerbla/Makefile b/SuiteSparse_config/xerbla/Makefile -index db68a2ea..c59820c2 100644 ---- a/SuiteSparse_config/xerbla/Makefile -+++ b/SuiteSparse_config/xerbla/Makefile -@@ -16,9 +16,9 @@ library: - all: library - - ifeq ($(USE_FORTRAN),0) -- LIBRARY = libcerbla -+ LIBRARY = cerbla - else -- LIBRARY = libxerbla -+ LIBRARY = xerbla - endif - - include ../SuiteSparse_config.mk -@@ -44,19 +44,22 @@ $(AR_TARGET): $(DEPENDS) - - $(RM) xerbla.o - - # install libcerbla / libxerbla --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(DEPENDS) -+$(INSTALL_SO): $(DEPENDS) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(COMPILE) - $(CC) $(SO_OPTS) xerbla.o -o $@ - - $(RM) xerbla.o -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -- $(CP) xerbla.h $(INSTALL_INCLUDE) - chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif -+ $(CP) xerbla.h $(INSTALL_INCLUDE) - chmod 644 $(INSTALL_INCLUDE)/xerbla.h - - # uninstall libcerbla / libxerbla -diff --git a/UMFPACK/Lib/Makefile b/UMFPACK/Lib/Makefile -index 78436de1..0f291068 100644 ---- a/UMFPACK/Lib/Makefile -+++ b/UMFPACK/Lib/Makefile -@@ -2,7 +2,7 @@ - # UMFPACK Makefile for compiling on Unix systems - #------------------------------------------------------------------------------- - --LIBRARY = libumfpack -+LIBRARY = umfpack - VERSION = 5.7.9 - SO_VERSION = 5 - -@@ -288,20 +288,23 @@ clean: - - #------------------------------------------------------------------------------- - # install UMFPACK --install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET) -+install: $(AR_TARGET) $(INSTALL_SO) - --$(INSTALL_LIB)/$(SO_TARGET): $(OBJ) -+$(INSTALL_SO): $(OBJ) - @mkdir -p $(INSTALL_LIB) -+ @mkdir -p $(dir $(INSTALL_SO)) - @mkdir -p $(INSTALL_INCLUDE) - @mkdir -p $(INSTALL_DOC) - $(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS) -+ifneq ($(UNAME),Cygwin) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) ) - ( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) ) -+ chmod 755 $(INSTALL_LIB)/$(SO_TARGET) -+endif - $(CP) ../Include/umfpack*.h $(INSTALL_INCLUDE) - $(CP) ../Doc/UMFPACK_UserGuide.pdf $(INSTALL_DOC) - $(CP) ../Doc/UMFPACK_QuickStart.pdf $(INSTALL_DOC) - $(CP) ../README.txt $(INSTALL_DOC)/UMFPACK_README.txt -- chmod 755 $(INSTALL_LIB)/$(SO_TARGET) - chmod 644 $(INSTALL_INCLUDE)/umfpack*.h - chmod 644 $(INSTALL_DOC)/UMFPACK_UserGuide.pdf - chmod 644 $(INSTALL_DOC)/UMFPACK_QuickStart.pdf diff --git a/build/pkgs/suitesparse/spkg-install.in b/build/pkgs/suitesparse/spkg-install.in index b6944a409ba..aad88653705 100644 --- a/build/pkgs/suitesparse/spkg-install.in +++ b/build/pkgs/suitesparse/spkg-install.in @@ -1,14 +1,10 @@ -# -*- shell-script -*- cd src -export CC="${CC-gcc} -std=c99" - -echo "print configuration" -$MAKE MY_METIS_LIB=none CHOLMOD_CONFIG=-DNPARTITION \ - BLAS="$(pkg-config --libs blas)" LAPACK="$(pkg-config --libs lapack)" \ - INSTALL="$SAGE_LOCAL" DESTDIR="$SAGE_DESTDIR" config -# build and install -$MAKE MY_METIS_LIB=none CHOLMOD_CONFIG=-DNPARTITION \ - BLAS="$(pkg-config --libs blas)" LAPACK="$(pkg-config --libs lapack)" \ - INSTALL="$SAGE_LOCAL" DESTDIR="$SAGE_DESTDIR" install +echo "Configuring suitesparse" +sdh_cmake -DCMAKE_VERBOSE_MAKEFILE=ON \ + -DNSTATIC=ON \ + -DSUITESPARSE_USE_FORTRAN=ON \ + -DSUITESPARSE_INCLUDEDIR_POSTFIX="" \ + -DSUITESPARSE_ENABLE_PROJECTS="suitesparse_config;amd;camd;ccolamd;colamd;cholmod;umfpack" +sdh_make_install From 9b01bbb97f621c059da8faeb5d1a01141c7ea869 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Bissey?= Date: Wed, 31 Jan 2024 16:58:10 +1300 Subject: [PATCH 2/8] better documentation in SPKG.rst --- build/pkgs/suitesparse/SPKG.rst | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/build/pkgs/suitesparse/SPKG.rst b/build/pkgs/suitesparse/SPKG.rst index 8656085818b..0268913651f 100644 --- a/build/pkgs/suitesparse/SPKG.rst +++ b/build/pkgs/suitesparse/SPKG.rst @@ -2,14 +2,19 @@ suitesparse: A suite of sparse matrix software ============================================== SuiteSparse is a collection of software to deal with sparse matrix. It is -hosted at http://faculty.cse.tamu.edu/davis/suitesparse.html +hosted at https://people.engr.tamu.edu/davis/suitesparse.html with source code +now on github at https://github.com/DrTimothyAldenDavis/SuiteSparse -This spkg does a minimal install of suitesparse disabling the following +This spkg does a minimal install of suitesparse only intalling the following -- GraphBLAS (need cmake) -- Mongoose (need cmake) +- AMD +- CAMD +- COLAMD +- CCOLAMD +- CHOLMOD +- UMFPACK -An external metis package can be used but we just disable its use. +Those are all the packages needed for cvxopt. Other configurations are self explanatory. From aa7f7f81f2935f142c640c15e6b427e38cbac340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Bissey?= Date: Fri, 2 Feb 2024 11:06:19 +1300 Subject: [PATCH 3/8] document the cmake options used --- build/pkgs/suitesparse/spkg-install.in | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/build/pkgs/suitesparse/spkg-install.in b/build/pkgs/suitesparse/spkg-install.in index aad88653705..6efa5e57231 100644 --- a/build/pkgs/suitesparse/spkg-install.in +++ b/build/pkgs/suitesparse/spkg-install.in @@ -1,6 +1,13 @@ cd src echo "Configuring suitesparse" +# * NSTATIC suitesparse defines some negative options like this one "NSTATIC=ON" means no static libraries. +# Hopefully these sill be normalised in the future. +# * SUITESPARSE_INCLUDEDIR_POSTFIX sets the subfolder in which to install headers. +# It default to "suitesparse" if not defined, which currently breaks dependencies. +# * SUITESPARSE_USE_FORTRAN make sure the fortran interface is built. May not be useful. +# * SUITESPARSE_ENABLE_PROJECTS semi column separated list of the desired packages. Default is +# all the packages in the suitesparse tarball. sdh_cmake -DCMAKE_VERBOSE_MAKEFILE=ON \ -DNSTATIC=ON \ -DSUITESPARSE_USE_FORTRAN=ON \ From 253c77e42e9cc9fc2aa5bc88a76f01639c8b3387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Bissey?= Date: Fri, 2 Feb 2024 11:20:12 +1300 Subject: [PATCH 4/8] =?UTF-8?q?add=20comma=20as=20suggested=20by=20Matthia?= =?UTF-8?q?s=20K=C3=B6ppe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/pkgs/suitesparse/SPKG.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/pkgs/suitesparse/SPKG.rst b/build/pkgs/suitesparse/SPKG.rst index 0268913651f..ab673b390e7 100644 --- a/build/pkgs/suitesparse/SPKG.rst +++ b/build/pkgs/suitesparse/SPKG.rst @@ -5,7 +5,7 @@ SuiteSparse is a collection of software to deal with sparse matrix. It is hosted at https://people.engr.tamu.edu/davis/suitesparse.html with source code now on github at https://github.com/DrTimothyAldenDavis/SuiteSparse -This spkg does a minimal install of suitesparse only intalling the following +This spkg does a minimal install of suitesparse, only intalling the following - AMD - CAMD From d20fb91fd9629dabf4509b420703222f203e92ab Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sun, 11 Dec 2022 21:50:31 -0800 Subject: [PATCH 5/8] build/pkgs/cmake/spkg-configure.m4: Require version >= 3.22 --- build/pkgs/cmake/spkg-configure.m4 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/pkgs/cmake/spkg-configure.m4 b/build/pkgs/cmake/spkg-configure.m4 index ce36e8aa0cc..921682b279f 100644 --- a/build/pkgs/cmake/spkg-configure.m4 +++ b/build/pkgs/cmake/spkg-configure.m4 @@ -1,11 +1,11 @@ SAGE_SPKG_CONFIGURE( [cmake], [ - AC_CACHE_CHECK([for cmake >= 3.11], [ac_cv_path_CMAKE], [ + AC_CACHE_CHECK([for cmake >= 3.22], [ac_cv_path_CMAKE], [ AC_PATH_PROGS_FEATURE_CHECK([CMAKE], [cmake], [ cmake_version=`$ac_path_CMAKE --version 2>&1 \ | $SED -n -e 's/cmake version *\([[0-9]]*\.[[0-9]]*\.[[0-9]]*\)/\1/p'` AS_IF([test -n "$cmake_version"], [ - AX_COMPARE_VERSION([$cmake_version], [ge], [3.11], [ + AX_COMPARE_VERSION([$cmake_version], [ge], [3.22], [ ac_cv_path_CMAKE="$ac_path_CMAKE" ac_path_CMAKE_found=: ]) From 5d58857251a94413398efd6586aaaa518ada4d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Bissey?= Date: Sat, 3 Feb 2024 10:19:11 +1300 Subject: [PATCH 6/8] disable lto --- build/pkgs/suitesparse/spkg-install.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build/pkgs/suitesparse/spkg-install.in b/build/pkgs/suitesparse/spkg-install.in index 6efa5e57231..4f1b3a97af1 100644 --- a/build/pkgs/suitesparse/spkg-install.in +++ b/build/pkgs/suitesparse/spkg-install.in @@ -1,5 +1,9 @@ cd src +# disable lto to avoid trouble when mixing different version of gcc and gfortran +CFLAGS="${CFLAGS} -fno-lto" +export CFLAGS + echo "Configuring suitesparse" # * NSTATIC suitesparse defines some negative options like this one "NSTATIC=ON" means no static libraries. # Hopefully these sill be normalised in the future. From 2ef43877cd70493992614783ec683b1e07cd823a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Bissey?= Date: Sat, 3 Feb 2024 14:53:22 +1300 Subject: [PATCH 7/8] drop -fno-lto and turn off fortran --- build/pkgs/suitesparse/spkg-install.in | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/build/pkgs/suitesparse/spkg-install.in b/build/pkgs/suitesparse/spkg-install.in index 4f1b3a97af1..ab5253d2e77 100644 --- a/build/pkgs/suitesparse/spkg-install.in +++ b/build/pkgs/suitesparse/spkg-install.in @@ -1,20 +1,17 @@ cd src -# disable lto to avoid trouble when mixing different version of gcc and gfortran -CFLAGS="${CFLAGS} -fno-lto" -export CFLAGS - echo "Configuring suitesparse" # * NSTATIC suitesparse defines some negative options like this one "NSTATIC=ON" means no static libraries. # Hopefully these sill be normalised in the future. # * SUITESPARSE_INCLUDEDIR_POSTFIX sets the subfolder in which to install headers. # It default to "suitesparse" if not defined, which currently breaks dependencies. -# * SUITESPARSE_USE_FORTRAN make sure the fortran interface is built. May not be useful. +# * SUITESPARSE_USE_FORTRAN make sure the fortran interface is off. There is trouble when +# gcc and gfortran version are not matching. # * SUITESPARSE_ENABLE_PROJECTS semi column separated list of the desired packages. Default is # all the packages in the suitesparse tarball. sdh_cmake -DCMAKE_VERBOSE_MAKEFILE=ON \ -DNSTATIC=ON \ - -DSUITESPARSE_USE_FORTRAN=ON \ + -DSUITESPARSE_USE_FORTRAN=OFF \ -DSUITESPARSE_INCLUDEDIR_POSTFIX="" \ -DSUITESPARSE_ENABLE_PROJECTS="suitesparse_config;amd;camd;ccolamd;colamd;cholmod;umfpack" From c53fac10e7f031919fd1f6fc3db6b892b466c54e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Bissey?= Date: Mon, 19 Aug 2024 14:06:33 +1200 Subject: [PATCH 8/8] move to version 7.8.0 --- build/pkgs/suitesparse/checksums.ini | 4 ++-- build/pkgs/suitesparse/package-version.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/pkgs/suitesparse/checksums.ini b/build/pkgs/suitesparse/checksums.ini index 67bb5c0d9cb..d3b1ad9641a 100644 --- a/build/pkgs/suitesparse/checksums.ini +++ b/build/pkgs/suitesparse/checksums.ini @@ -1,4 +1,4 @@ tarball=SuiteSparse-VERSION.tar.gz -sha1=765bafd9645826a7502e69d666481840604c0073 -sha256=19cbeb9964ebe439413dd66d82ace1f904adc5f25d8a823c1b48c34bd0d29ea5 +sha1=aa2745d8e38d2c010e0a7256acd36eba1de19055 +sha256=8ea989f36be3646d0b0eecb06218698766ca06256c0de15a64350e993bf5c5f9 upstream_url=https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/refs/tags/vVERSION.tar.gz diff --git a/build/pkgs/suitesparse/package-version.txt b/build/pkgs/suitesparse/package-version.txt index 93c8ddab9fe..09a6d30847d 100644 --- a/build/pkgs/suitesparse/package-version.txt +++ b/build/pkgs/suitesparse/package-version.txt @@ -1 +1 @@ -7.6.0 +7.8.0