changeset 5186:af2966900462

suitesparse: update to v4.5.6 * src/suitesparse.mk: update version, checksum and build rules. * src/suitesparse-1-fixes.patch, srs/suitesparse-2-metis.patch: Add new patches. * src/suitesparse-1.patch: Remove old patch. * dist-files.mk: Update list.
author Markus Mützel <markus.muetzel@gmx.de>
date Tue, 15 Oct 2019 19:13:54 +0200
parents ba61e5f8161e
children 1687486bfe67
files dist-files.mk src/suitesparse-1-fixes.patch src/suitesparse-1.patch src/suitesparse-2-metis.patch src/suitesparse.mk
diffstat 5 files changed, 858 insertions(+), 131 deletions(-) [+]
line wrap: on
line diff
--- a/dist-files.mk	Tue Oct 15 18:55:54 2019 +0200
+++ b/dist-files.mk	Tue Oct 15 19:13:54 2019 +0200
@@ -691,7 +691,8 @@
   src-msys-zlib.mk \
   stable-octave-1-gnulib.patch \
   stable-octave.mk \
-  suitesparse-1.patch \
+  suitesparse-1-fixes.patch \
+  suitesparse-2-metis.patch \
   suitesparse.mk \
   sundials-27-ida-1.patch \
   sundials-27-ida.mk \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/suitesparse-1-fixes.patch	Tue Oct 15 19:13:54 2019 +0200
@@ -0,0 +1,719 @@
+This file is part of MXE.
+See index.html for further information.
+
+Contains ad hoc patches for cross building.
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Tony Theodore <tonyt@logyst.com>
+Date: Tue, 21 Nov 2017 00:39:21 +1100
+Subject: [PATCH 1/3] mingw-w64-Use-a-not-lib-as-AR_TARGET-extension
+
+taken from:
+https://github.com/Alexpux/MINGW-packages/blob/6d1afc34842f2faf6c50c04e5904cdb8b7f20e3b/mingw-w64-suitesparse/0001-mingw-w64-Use-a-not-lib-as-AR_TARGET-extension.patch
+
+diff --git a/SuiteSparse_config/SuiteSparse_config.mk b/SuiteSparse_config/SuiteSparse_config.mk
+index 1111111..2222222 100644
+--- a/SuiteSparse_config/SuiteSparse_config.mk
++++ b/SuiteSparse_config/SuiteSparse_config.mk
+@@ -429,10 +429,8 @@ 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
++    AR_TARGET = $(LIBRARY).a
++    SO_TARGET = $(LIBRARY).dll
+     SO_INSTALL_NAME = echo
+ else
+     # Mac or Linux/Unix
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Tony Theodore <tonyt@logyst.com>
+Date: Tue, 21 Nov 2017 00:41:07 +1100
+Subject: [PATCH 2/3] 
+ mingw-w64-Set-SO_OPTS--shared-move-dlls-create-import-libs
+
+taken from:
+https://github.com/Alexpux/MINGW-packages/blob/6d1afc34842f2faf6c50c04e5904cdb8b7f20e3b/mingw-w64-suitesparse/0002-mingw-w64-Set-SO_OPTS--shared-move-dlls-create-import-libs.patch
+
+diff --git a/AMD/Lib/Makefile b/AMD/Lib/Makefile
+index 1111111..2222222 100644
+--- a/AMD/Lib/Makefile
++++ b/AMD/Lib/Makefile
+@@ -81,28 +81,24 @@ libamdf77.a: $(AMDF77)
+ #-------------------------------------------------------------------------------
+ 
+ # install AMD
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJ)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(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 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/amd.h
+ 	chmod 644 $(INSTALL_DOC)/AMD_UserGuide.pdf
+ 	chmod 644 $(INSTALL_DOC)/AMD_README.txt
+ 
+ # uninstall AMD
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/amd.h
+ 	$(RM) $(INSTALL_DOC)/AMD_UserGuide.pdf
+ 	$(RM) $(INSTALL_DOC)/AMD_README.txt
+diff --git a/BTF/Lib/Makefile b/BTF/Lib/Makefile
+index 1111111..2222222 100644
+--- a/BTF/Lib/Makefile
++++ b/BTF/Lib/Makefile
+@@ -66,25 +66,21 @@ btf_l_strongcomp.o: ../Source/btf_strongcomp.c
+ #-------------------------------------------------------------------------------
+ 
+ # install BTF
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJ)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(CP) ../Include/btf.h $(INSTALL_INCLUDE)
+ 	$(CP) ../README.txt $(INSTALL_DOC)/BTF_README.txt
+-	chmod 755 $(INSTALL_LIB)/$(SO_TARGET)
++	chmod 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/btf.h
+ 	chmod 644 $(INSTALL_DOC)/BTF_README.txt
+ 
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/btf.h
+ 	$(RM) $(INSTALL_DOC)/BTF_README.txt
+ 
+diff --git a/CAMD/Lib/Makefile b/CAMD/Lib/Makefile
+index 1111111..2222222 100644
+--- a/CAMD/Lib/Makefile
++++ b/CAMD/Lib/Makefile
+@@ -62,28 +62,24 @@ $(AR_TARGET): $(OBJ)
+ #-------------------------------------------------------------------------------
+ 
+ # install CAMD
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJ)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(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 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/camd.h
+ 	chmod 644 $(INSTALL_DOC)/CAMD_UserGuide.pdf
+ 	chmod 644 $(INSTALL_DOC)/CAMD_README.txt
+ 
+ # uninstall CAMD
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/camd.h
+ 	$(RM) $(INSTALL_DOC)/CAMD_UserGuide.pdf
+ 	$(RM) $(INSTALL_DOC)/CAMD_README.txt
+diff --git a/CCOLAMD/Lib/Makefile b/CCOLAMD/Lib/Makefile
+index 1111111..2222222 100644
+--- a/CCOLAMD/Lib/Makefile
++++ b/CCOLAMD/Lib/Makefile
+@@ -49,25 +49,21 @@ distclean: clean
+ 	- $(RM) -r $(PURGE)
+ 
+ # install CCOLAMD
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJ)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(CP) ../Include/ccolamd.h $(INSTALL_INCLUDE)
+ 	$(CP) ../README.txt $(INSTALL_DOC)/CCOLAMD_README.txt
+-	chmod 755 $(INSTALL_LIB)/$(SO_TARGET)
++	chmod 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/ccolamd.h
+ 	chmod 644 $(INSTALL_DOC)/CCOLAMD_README.txt
+ 
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/ccolamd.h
+ 	$(RM) $(INSTALL_DOC)/CCOLAMD_README.txt
+ 
+diff --git a/CHOLMOD/Lib/Makefile b/CHOLMOD/Lib/Makefile
+index 1111111..2222222 100644
+--- a/CHOLMOD/Lib/Makefile
++++ b/CHOLMOD/Lib/Makefile
+@@ -535,29 +535,25 @@ cholmod_l_gpu.o: ../GPU/cholmod_gpu.c
+ #-------------------------------------------------------------------------------
+ 
+ # install CHOLMOD
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJ)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(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 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/cholmod*.h
+ 	chmod 644 $(INSTALL_DOC)/CHOLMOD_UserGuide.pdf
+ 	chmod 644 $(INSTALL_DOC)/CHOLMOD_README.txt
+ 
+ # uninstall CHOLMOD
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/cholmod*.h
+ 	$(RM) $(INSTALL_DOC)/CHOLMOD_UserGuide.pdf
+ 	$(RM) $(INSTALL_DOC)/CHOLMOD_README.txt
+diff --git a/COLAMD/Lib/Makefile b/COLAMD/Lib/Makefile
+index 1111111..2222222 100644
+--- a/COLAMD/Lib/Makefile
++++ b/COLAMD/Lib/Makefile
+@@ -49,25 +49,21 @@ distclean: clean
+ 	- $(RM) -r $(PURGE)
+ 
+ # install COLAMD
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJ)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(CP) ../Include/colamd.h $(INSTALL_INCLUDE)
+ 	$(CP) ../README.txt $(INSTALL_DOC)/COLAMD_README.txt
+-	chmod 755 $(INSTALL_LIB)/$(SO_TARGET)
++	chmod 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/colamd.h
+ 	chmod 644 $(INSTALL_DOC)/COLAMD_README.txt
+ 
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/colamd.h
+ 	$(RM) $(INSTALL_DOC)/COLAMD_README.txt
+ 
+diff --git a/CXSparse/Lib/Makefile b/CXSparse/Lib/Makefile
+index 1111111..2222222 100644
+--- a/CXSparse/Lib/Makefile
++++ b/CXSparse/Lib/Makefile
+@@ -113,26 +113,22 @@ distclean: clean
+ 	- $(RM) -r $(PURGE)
+ 
+ # install CXSparse
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(CS)
++$(INSTALL_SO)/$(SO_TARGET): $(CS)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(CP) ../Include/cs.h $(INSTALL_INCLUDE)
+ 	$(CP) ../README.txt $(INSTALL_DOC)/CXSPARSE_README.txt
+-	chmod 755 $(INSTALL_LIB)/$(SO_TARGET)
++	chmod 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/cs.h
+ 	chmod 644 $(INSTALL_DOC)/CXSPARSE_README.txt
+ 
+ # uninstall CXSparse
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/cs.h
+ 	$(RM) $(INSTALL_DOC)/CXSPARSE_README.txt
+ 
+diff --git a/CXSparse_newfiles/Lib/Makefile b/CXSparse_newfiles/Lib/Makefile
+index 1111111..2222222 100644
+--- a/CXSparse_newfiles/Lib/Makefile
++++ b/CXSparse_newfiles/Lib/Makefile
+@@ -113,26 +113,22 @@ distclean: clean
+ 	- $(RM) -r $(PURGE)
+ 
+ # install CXSparse
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(CS)
++$(INSTALL_SO)/$(SO_TARGET): $(CS)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(CP) ../Include/cs.h $(INSTALL_INCLUDE)
+ 	$(CP) ../README.txt $(INSTALL_DOC)/CXSPARSE_README.txt
+-	chmod 755 $(INSTALL_LIB)/$(SO_TARGET)
++	chmod 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/cs.h
+ 	chmod 644 $(INSTALL_DOC)/CXSPARSE_README.txt
+ 
+ # uninstall CXSparse
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/cs.h
+ 	$(RM) $(INSTALL_DOC)/CXSPARSE_README.txt
+ 
+diff --git a/GPUQREngine/Lib/Makefile b/GPUQREngine/Lib/Makefile
+index 1111111..2222222 100644
+--- a/GPUQREngine/Lib/Makefile
++++ b/GPUQREngine/Lib/Makefile
+@@ -129,24 +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)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJS)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJS)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CXX) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( 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)
++	chmod 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_DOC)/GPUQRENGINE_README.txt
+ 
+ # uninstall GPUQREngine
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_DOC)/GPUQRENGINE_README.txt
+ 
+ #-------------------------------------------------------------------------------
+diff --git a/KLU/Lib/Makefile b/KLU/Lib/Makefile
+index 1111111..2222222 100644
+--- a/KLU/Lib/Makefile
++++ b/KLU/Lib/Makefile
+@@ -263,28 +263,24 @@ klu_l_memory.o: ../Source/klu_memory.c
+ #-------------------------------------------------------------------------------
+ 
+ # install KLU
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJ)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(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 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/klu.h
+ 	chmod 644 $(INSTALL_DOC)/KLU_UserGuide.pdf
+ 	chmod 644 $(INSTALL_DOC)/KLU_README.txt
+ 
+ # uninstall KLU
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/klu.h
+ 	$(RM) $(INSTALL_DOC)/KLU_UserGuide.pdf
+ 	$(RM) $(INSTALL_DOC)/KLU_README.txt
+diff --git a/LDL/Lib/Makefile b/LDL/Lib/Makefile
+index 1111111..2222222 100644
+--- a/LDL/Lib/Makefile
++++ b/LDL/Lib/Makefile
+@@ -46,28 +46,24 @@ clean:
+ 	- $(RM) -r $(CLEAN)
+ 
+ # install LDL
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJ)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(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 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/ldl.h
+ 	chmod 644 $(INSTALL_DOC)/ldl_userguide.pdf
+ 	chmod 644 $(INSTALL_DOC)/LDL_README.txt
+ 
+ # uninstall LDL
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/ldl.h
+ 	$(RM) $(INSTALL_DOC)/ldl_userguide.pdf
+ 	$(RM) $(INSTALL_DOC)/LDL_README.txt
+diff --git a/Makefile b/Makefile
+index 1111111..2222222 100644
+--- a/Makefile
++++ b/Makefile
+@@ -63,13 +63,13 @@ ifeq (,$(MY_METIS_LIB))
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+-	- $(CP) lib/libmetis.* $(INSTALL_LIB)
++	- $(CP) lib/libmetis.* $(INSTALL_SO)
+ 	- $(CP) metis-5.1.0/manual/manual.pdf $(INSTALL_DOC)/METIS_manual.pdf
+ 	- $(CP) metis-5.1.0/README.txt $(INSTALL_DOC)/METIS_README.txt
+         # the following is needed only on the Mac, so *.dylib is hardcoded:
+ 	$(SO_INSTALL_NAME) $(INSTALL_LIB)/libmetis.dylib $(INSTALL_LIB)/libmetis.dylib
+ 	- $(CP) include/metis.h $(INSTALL_INCLUDE)
+-	chmod 755 $(INSTALL_LIB)/libmetis.*
++	chmod 755 $(INSTALL_SO)/libmetis.*
+ 	chmod 644 $(INSTALL_INCLUDE)/metis.h
+ 	chmod 644 $(INSTALL_DOC)/METIS_manual.pdf
+ 	chmod 644 $(INSTALL_DOC)/METIS_README.txt
+diff --git a/RBio/Lib/Makefile b/RBio/Lib/Makefile
+index 1111111..2222222 100644
+--- a/RBio/Lib/Makefile
++++ b/RBio/Lib/Makefile
+@@ -60,25 +60,21 @@ RBio_i.o: ../Source/RBio.c
+ #-------------------------------------------------------------------------------
+ 
+ # install RBio
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJ)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(CP) ../Include/RBio.h $(INSTALL_INCLUDE)
+ 	$(CP) ../README.txt $(INSTALL_DOC)/RBIO_README.txt
+-	chmod 755 $(INSTALL_LIB)/$(SO_TARGET)
++	chmod 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/RBio.h
+ 	chmod 644 $(INSTALL_DOC)/RBIO_README.txt
+ 
+ # uninstall RBio
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/RBio.h
+ 	$(RM) $(INSTALL_DOC)/RBIO_README.txt
+diff --git a/SPQR/Lib/Makefile b/SPQR/Lib/Makefile
+index 1111111..2222222 100644
+--- a/SPQR/Lib/Makefile
++++ b/SPQR/Lib/Makefile
+@@ -242,22 +242,20 @@ spqrgpu_computeFrontStaging.o: ../SPQRGPU/spqrgpu_computeFrontStaging.cpp
+ #-------------------------------------------------------------------------------
+ 
+ # install SPQR
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJ)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CXX) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(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 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/SuiteSparseQR.hpp
+ 	chmod 644 $(INSTALL_INCLUDE)/SuiteSparseQR_C.h
+ 	chmod 644 $(INSTALL_INCLUDE)/SuiteSparseQR_definitions.h
+@@ -267,9 +265,7 @@ $(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
+ 
+ # uninstall SPQR
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/SuiteSparseQR.hpp
+ 	$(RM) $(INSTALL_INCLUDE)/SuiteSparseQR_C.h
+ 	$(RM) $(INSTALL_INCLUDE)/SuiteSparseQR_definitions.h
+diff --git a/SuiteSparse_GPURuntime/Lib/Makefile b/SuiteSparse_GPURuntime/Lib/Makefile
+index 1111111..2222222 100644
+--- a/SuiteSparse_GPURuntime/Lib/Makefile
++++ b/SuiteSparse_GPURuntime/Lib/Makefile
+@@ -70,23 +70,19 @@ 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)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJS)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJS)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CXX) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( 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)
++	chmod 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_DOC)/GPURUNTIME_README.txt
+ 
+ # uninstall SuiteSparse_GPURuntime
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_DOC)/GPURUNTIME_README.txt
+ 
+diff --git a/SuiteSparse_config/Makefile b/SuiteSparse_config/Makefile
+index 1111111..2222222 100644
+--- a/SuiteSparse_config/Makefile
++++ b/SuiteSparse_config/Makefile
+@@ -44,27 +44,22 @@ clean:
+ 	- $(RM) -r $(CLEAN)
+ 
+ # install SuiteSparse_config
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJ)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( 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)
++	chmod 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/SuiteSparse_config.h
+ 	chmod 644 $(INSTALL_DOC)/SUITESPARSECONFIG_README.txt
+ 
+ # uninstall SuiteSparse_config
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/SuiteSparse_config.h
+ 	$(RM) $(INSTALL_DOC)/SUITESPARSECONFIG_README.txt
+ 	( cd xerbla ; $(MAKE) uninstall )
+diff --git a/SuiteSparse_config/SuiteSparse_config.mk b/SuiteSparse_config/SuiteSparse_config.mk
+index 1111111..2222222 100644
+--- a/SuiteSparse_config/SuiteSparse_config.mk
++++ b/SuiteSparse_config/SuiteSparse_config.mk
+@@ -54,6 +54,7 @@ SUITESPARSE_VERSION = 4.5.6
+     # and documentation in /solo/mydox.
+     INSTALL ?= $(SUITESPARSE)
+     INSTALL_LIB ?= $(INSTALL)/lib
++    INSTALL_SO ?= $(INSTALL)/lib
+     INSTALL_INCLUDE ?= $(INSTALL)/include
+     INSTALL_DOC ?= $(INSTALL)/share/doc/suitesparse-$(SUITESPARSE_VERSION)
+ 
+@@ -339,7 +340,7 @@ SUITESPARSE_VERSION = 4.5.6
+ 
+     ifeq ($(UNAME),Linux)
+         # add the realtime library, librt, and SuiteSparse/lib
+-        LDLIBS += -lrt -Wl,-rpath=$(INSTALL_LIB)
++        LDLIBS += -lrt -Wl,-rpath=$(INSTALL_SO)
+     endif
+ 
+     #---------------------------------------------------------------------------
+@@ -428,10 +429,11 @@ SUITESPARSE_VERSION = 4.5.6
+ SO_OPTS = $(LDFLAGS)
+ 
+ ifeq ($(UNAME),Windows)
+-    # Cygwin Make on Windows (untested)
+     AR_TARGET = $(LIBRARY).a
+     SO_TARGET = $(LIBRARY).dll
+     SO_INSTALL_NAME = echo
++    SO_OPTS  += -shared -Wl,--out-implib,$(INSTALL_LIB)/$(LIBRARY).dll.a
++    INSTALL_SO = $(INSTALL)/bin
+ else
+     # Mac or Linux/Unix
+     AR_TARGET = $(LIBRARY).a
+@@ -550,6 +552,7 @@ config:
+ 	@echo 'System:                   UNAME=          ' '$(UNAME)'
+ 	@echo 'Install directory:        INSTALL=        ' '$(INSTALL)'
+ 	@echo 'Install libraries in:     INSTALL_LIB=    ' '$(INSTALL_LIB)'
++	@echo 'Install shared libs in:   INSTALL_SO=     ' '$(INSTALL_SO)'
+ 	@echo 'Install include files in: INSTALL_INCLUDE=' '$(INSTALL_INCLUDE)'
+ 	@echo 'Install documentation in: INSTALL_DOC=    ' '$(INSTALL_DOC)'
+ 	@echo 'Optimization level:       OPTIMIZATION=   ' '$(OPTIMIZATION)'
+diff --git a/SuiteSparse_config/xerbla/Makefile b/SuiteSparse_config/xerbla/Makefile
+index 1111111..2222222 100644
+--- a/SuiteSparse_config/xerbla/Makefile
++++ b/SuiteSparse_config/xerbla/Makefile
+@@ -53,16 +53,13 @@ $(INSTALL_LIB)/$(SO_TARGET): $(DEPENDS)
+ 	$(COMPILE)
+ 	$(CC) $(SO_OPTS) xerbla.o -o $@
+ 	- $(RM) xerbla.o
+-	( 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)
++	chmod 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/xerbla.h
+ 
+ # uninstall libcerbla / libxerbla
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/xerbla.h
+ 
+ distclean: purge
+diff --git a/UMFPACK/Lib/Makefile b/UMFPACK/Lib/Makefile
+index 1111111..2222222 100644
+--- a/UMFPACK/Lib/Makefile
++++ b/UMFPACK/Lib/Makefile
+@@ -288,20 +288,18 @@ clean:
+ 
+ #-------------------------------------------------------------------------------
+ # install UMFPACK
+-install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
++install: $(AR_TARGET) $(INSTALL_SO)/$(SO_TARGET)
+ 
+-$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
++$(INSTALL_SO)/$(SO_TARGET): $(OBJ)
+ 	@mkdir -p $(INSTALL_LIB)
+ 	@mkdir -p $(INSTALL_INCLUDE)
+ 	@mkdir -p $(INSTALL_DOC)
+ 	$(CC) $(SO_OPTS) $^ -o $@ $(LDLIBS)
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
+-	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
+ 	$(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 755 $(INSTALL_SO)/$(SO_TARGET)
+ 	chmod 644 $(INSTALL_INCLUDE)/umfpack*.h
+ 	chmod 644 $(INSTALL_DOC)/UMFPACK_UserGuide.pdf
+ 	chmod 644 $(INSTALL_DOC)/UMFPACK_QuickStart.pdf
+@@ -309,9 +307,7 @@ $(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
+ 
+ # uninstall UMFPACK
+ uninstall:
+-	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
+-	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
+-	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
++	$(RM) $(INSTALL_SO)/$(SO_TARGET)
+ 	$(RM) $(INSTALL_INCLUDE)/umfpack*.h
+ 	$(RM) $(INSTALL_DOC)/UMFPACK_UserGuide.pdf
+ 	$(RM) $(INSTALL_DOC)/UMFPACK_QuickStart.pdf
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Tony Theodore <tonyt@logyst.com>
+Date: Tue, 21 Nov 2017 01:20:21 +1100
+Subject: [PATCH 3/3] add $(TBB) libs to SPQR
+
+
+diff --git a/SPQR/Lib/Makefile b/SPQR/Lib/Makefile
+index 1111111..2222222 100644
+--- a/SPQR/Lib/Makefile
++++ b/SPQR/Lib/Makefile
+@@ -13,7 +13,7 @@ ccode: all
+ include ../../SuiteSparse_config/SuiteSparse_config.mk
+ 
+ # SPQR depends on CHOLMOD, AMD, COLAMD, LAPACK, the BLAS and SuiteSparse_config
+-LDLIBS += -lamd -lcolamd -lcholmod -lsuitesparseconfig $(LAPACK) $(BLAS)
++LDLIBS += -lamd -lcolamd -lcholmod -lsuitesparseconfig $(LAPACK) $(BLAS) $(TBB)
+ 
+ # compile and install in SuiteSparse/lib
+ library:
+
--- a/src/suitesparse-1.patch	Tue Oct 15 18:55:54 2019 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-This file is part of MXE.
-See index.html for further information.
-
-From 169f88aef7ff1d302aa3eac48d779d009780b87f Mon Sep 17 00:00:00 2001
-From: Mark Brand <mabrand@mabrand.nl>
-Date: Sun, 20 May 2012 23:41:27 +0200
-Subject: [PATCH] build lib not demo
-
----
- CHOLMOD/Makefile |    2 +-
- UMFPACK/Makefile |    2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/CHOLMOD/Makefile b/CHOLMOD/Makefile
-index 97911ef..4a3bcae 100644
---- a/CHOLMOD/Makefile
-+++ b/CHOLMOD/Makefile
-@@ -14,7 +14,7 @@ include ../SuiteSparse_config/SuiteSparse_config.mk
- 
- # Compile the C-callable libraries and the Demo programs.
- all:
--	( cd Demo ; $(MAKE) )
-+	( cd Lib ; $(MAKE) )
- 
- # Compile the C-callable libraries only.
- library:
-diff --git a/UMFPACK/Makefile b/UMFPACK/Makefile
-index 622ee39..e19cd2f 100644
---- a/UMFPACK/Makefile
-+++ b/UMFPACK/Makefile
-@@ -12,7 +12,7 @@ include ../SuiteSparse_config/SuiteSparse_config.mk
- 
- # compile all C code (except hb, fortran, and fortran64), incl. AMD and demos
- all:
--	( cd Demo   ; $(MAKE) )
-+	( cd Lib    ; $(MAKE) )
- 
- # compile just the C-callable UMFPACK library
- library:
--- 
-1.7.10.4
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/suitesparse-2-metis.patch	Tue Oct 15 19:13:54 2019 +0200
@@ -0,0 +1,85 @@
+This file is part of MXE.
+See index.html for further information.
+
+Contains ad hoc patches for cross building.
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Tony Theodore <tonyt@logyst.com>
+Date: Mon, 20 Nov 2017 22:54:25 +1100
+Subject: [PATCH 1/3] mingw-w64-does-not-have-sys-resource-h
+
+taken from:
+https://github.com/Alexpux/MINGW-packages/blob/484b873e8a1967b7809127682635888b7329417f/mingw-w64-metis/0001-mingw-w64-does-not-have-sys-resource-h.patch
+
+diff --git a/metis-5.1.0/GKlib/gk_arch.h b/metis-5.1.0/GKlib/gk_arch.h
+index 1111111..2222222 100644
+--- a/metis-5.1.0/GKlib/gk_arch.h
++++ b/metis-5.1.0/GKlib/gk_arch.h
+@@ -41,7 +41,9 @@
+ #endif
+   #include <inttypes.h>
+   #include <sys/types.h>
+-  #include <sys/resource.h>
++  #ifndef __MINGW32__
++    #include <sys/resource.h>
++  #endif
+   #include <sys/time.h>
+ #endif
+ 
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Tony Theodore <tonyt@logyst.com>
+Date: Mon, 20 Nov 2017 22:55:34 +1100
+Subject: [PATCH 2/3] mingw-w64-do-not-use-reserved-double-underscored-names
+
+taken from:
+https://github.com/Alexpux/MINGW-packages/blob/484b873e8a1967b7809127682635888b7329417f/mingw-w64-metis/0002-mingw-w64-do-not-use-reserved-double-underscored-names.patch
+
+diff --git a/metis-5.1.0/GKlib/gk_getopt.h b/metis-5.1.0/GKlib/gk_getopt.h
+index 1111111..2222222 100644
+--- a/metis-5.1.0/GKlib/gk_getopt.h
++++ b/metis-5.1.0/GKlib/gk_getopt.h
+@@ -52,10 +52,10 @@ struct gk_option {
+ 
+ 
+ /* Function prototypes */
+-extern int gk_getopt(int __argc, char **__argv, char *__shortopts);
+-extern int gk_getopt_long(int __argc, char **__argv, char *__shortopts,
++extern int gk_getopt(int gk_argc, char **gk_argv, char *__shortopts);
++extern int gk_getopt_long(int gk_argc, char **gk_argv, char *__shortopts,
+               struct gk_option *__longopts, int *__longind);
+-extern int gk_getopt_long_only (int __argc, char **__argv,
++extern int gk_getopt_long_only (int gk_argc, char **gk_argv,
+               char *__shortopts, struct gk_option *__longopts, int *__longind);
+ 
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Tony Theodore <tonyt@logyst.com>
+Date: Mon, 20 Nov 2017 22:58:20 +1100
+Subject: [PATCH 3/3] WIN32-Install-RUNTIME-to-bin
+
+taken from:
+https://github.com/Alexpux/MINGW-packages/blob/484b873e8a1967b7809127682635888b7329417f/mingw-w64-metis/0003-WIN32-Install-RUNTIME-to-bin.patch
+
+diff --git a/metis-5.1.0/libmetis/CMakeLists.txt b/metis-5.1.0/libmetis/CMakeLists.txt
+index 1111111..2222222 100644
+--- a/metis-5.1.0/libmetis/CMakeLists.txt
++++ b/metis-5.1.0/libmetis/CMakeLists.txt
+@@ -8,9 +8,15 @@ if(UNIX)
+   target_link_libraries(metis m)
+ endif()
+ 
++if(WIN32)
++  set(RT_DEST bin)
++else()
++  set(RT_DEST lib)
++endif()
++
+ if(METIS_INSTALL)
+   install(TARGETS metis
+     LIBRARY DESTINATION lib
+-    RUNTIME DESTINATION lib
++    RUNTIME DESTINATION ${RT_DEST}
+     ARCHIVE DESTINATION lib)
+ endif()
+
--- a/src/suitesparse.mk	Tue Oct 15 18:55:54 2019 +0200
+++ b/src/suitesparse.mk	Tue Oct 15 19:13:54 2019 +0200
@@ -2,13 +2,13 @@
 # See index.html for further information.
 
 PKG             := suitesparse
-$(PKG)_VERSION  := 4.2.1
-$(PKG)_CHECKSUM := 2fec3bf93314bd14cbb7470c0a2c294988096ed6
+$(PKG)_VERSION  := 4.5.6
+$(PKG)_CHECKSUM := 06ed5f6f61bfe09f08ce03971a24381a627446b1
 $(PKG)_SUBDIR   := SuiteSparse
 $(PKG)_FILE     := SuiteSparse-$($(PKG)_VERSION).tar.gz
 $(PKG)_URL      := http://faculty.cse.tamu.edu/davis/SuiteSparse/$($(PKG)_FILE)
 $(PKG)_URL_2    := https://distfiles.macports.org/SuiteSparse/$($(PKG)_FILE)
-$(PKG)_DEPS     := blas lapack
+$(PKG)_DEPS     := openblas lapack libgomp
 
 ifeq ($(MXE_NATIVE_MINGW_BUILD),yes)
   $(PKG)_DESTDIR :=
@@ -22,22 +22,6 @@
     head -1
 endef
 
-$(PKG)_STATICLIBS_1 := \
-  SuiteSparse_config/libsuitesparseconfig.a \
-  SuiteSparse_config/xerbla/libcerbla.a \
-  AMD/Lib/libamd.a \
-  CAMD/Lib/libcamd.a \
-  COLAMD/Lib/libcolamd.a \
-  CCOLAMD/Lib/libccolamd.a \
-  CSparse/Lib/libcsparse.a \
-  CXSparse/Lib/libcxsparse.a \
-  CHOLMOD/Lib/libcholmod.a \
-  SPQR/Lib/libspqr.a \
-  BTF/Lib/libbtf.a \
-  LDL/Lib/libldl.a \
-  KLU/Lib/libklu.a \
-  RBio/Lib/librbio.a \
-  UMFPACK/Lib/libumfpack.a
 
 $(PKG)_CPPFLAGS := -DNTIMER
 
@@ -49,78 +33,58 @@
   endif
 endif
 
-define $(PKG)_BUILD
-    # exclude demos
-    find '$(1)' -name 'Makefile' \
-        -exec $(SED) -i 's,( cd Demo,#( cd Demo,' {} \;
+$(PKG)_MAKE_OPTS = \
+    UNAME=Windows \
+    CPPFLAGS="$($(PKG)_CPPFLAGS)" \
+    CC='$(MXE_CC)' \
+    CXX='$(MXE_CXX)' \
+    CPLUSPLUS='$(MXE_CXX)' \
+    F77='$(MXE_F77)' \
+    FFLAGS='$(MXE_FFLAGS)' \
+    CFLAGS='$(MXE_CFLAGS)' \
+    CXXFLAGS='$(MXE_CXXFLAGS)' \
+    AR='$(MXE_AR)' \
+    RANLIB='$(MXE_RANLIB)' \
+    BLAS="`'$(TARGET)-pkg-config' --libs openblas`" \
+    LAPACK='-llapack' \
+    CHOLMOD_CONFIG='-DNPARTITION'
 
-    if test $(MXE_SYSTEM) = msvc; then \
-        (cd '$(1)'; \
-	 (cd CXSparse_newfiles && tar cfz ../CXSparse_newfiles.tar.gz .); \
-	 ./CSparse_to_CXSparse CSparse CXSparse CXSparse_newfiles.tar.gz) \
-    fi
+$(PKG)_cputype = $(shell uname -m | sed "s/\\ /_/g")
+$(PKG)_systype = $(shell uname -s)
+$(PKG)_METIS_BUILDDIR = build/$($(PKG)_systype)-$($(PKG)_cputype)
+$(PKG)_METIS_CONFIG_FLAGS = -DCMAKE_VERBOSE_MAKEFILE=1 \
+    -DGKLIB_PATH=$(1)/metis-5.1.0/GKlib \
+    -DCMAKE_INSTALL_PREFIX=$(1) \
+    -DSHARED=1
+
+define $(PKG)_BUILD
+    # build metis
+    mkdir $(1)/metis-5.1.0/$($(PKG)_METIS_BUILDDIR)
+    cd $(1)/metis-5.1.0/$($(PKG)_METIS_BUILDDIR) && \
+        cmake $(1)/metis-5.1.0 \
+            -DCMAKE_TOOLCHAIN_FILE='$(CMAKE_TOOLCHAIN_FILE)' \
+            $($(PKG)_METIS_CONFIG_FLAGS)
+    $(MAKE) -C '$(1)/metis-5.1.0/$($(PKG)_METIS_BUILDDIR)' metis -j '$(JOBS)'
+
+    # install metis
+    mkdir -p $($(PKG)_DESTDIR)$(HOST_LIBDIR)
+    mkdir -p $($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/
+    cp $(1)/metis-5.1.0/$($(PKG)_METIS_BUILDDIR)/libmetis/libmetis.* $($(PKG)_DESTDIR)$(HOST_BINDIR)
+    cp $(1)/metis-5.1.0/include/metis.h $($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/
+    chmod 755 $($(PKG)_DESTDIR)$(HOST_BINDIR)/libmetis.*
+    chmod 644 $($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/metis.h
 
     # build all
     $(MAKE) -C '$(1)' -j '$(JOBS)' \
-        CPPFLAGS="$($(PKG)_CPPFLAGS)" \
-        CC='$(MXE_CC)' \
-        CXX='$(MXE_CXX)' \
-        CPLUSPLUS='$(MXE_CXX)' \
-        F77='$(MXE_F77)' \
-        FFLAGS='$(MXE_FFLAGS)' \
-        CFLAGS='$(MXE_CFLAGS)' \
-        CXXFLAGS='$(MXE_CXXFLAGS)' \
-        AR='$(MXE_AR)' \
-        RANLIB='$(MXE_RANLIB)' \
-        BLAS='-lblas -lgfortran -lgfortranbegin' \
-        CHOLMOD_CONFIG='-DNPARTITION'
-
-    # install library files
-    $(INSTALL) -d '$($(PKG)_DESTDIR)$(HOST_LIBDIR)'
+        $($(PKG)_MAKE_OPTS) \
+        MY_METIS_LIB=$($(PKG)_DESTDIR)$(HOST_BINDIR) \
+        library
 
-    for f in $(addprefix $(1)/, $($(PKG)_STATICLIBS_1)); do \
-      if [ $(BUILD_SHARED) = yes ]; then \
-        lib=`basename $$f .a`; \
-        dir=`dirname $$f`; \
-        echo "building and installing shared libraries for $$lib"; \
-        deplibs=""; \
-        case $$lib in \
-          libcholmod) \
-            deplibs="-lamd -lcamd -lcolamd -lccolamd -lsuitesparseconfig -llapack -lblas"; \
-          ;; \
-          libklu) \
-            deplibs="-lbtf -lamd -lcolamd -lsuitesparseconfig"; \
-          ;; \
-          librbio) \
-            deplibs="-lsuitesparseconfig"; \
-          ;; \
-	  libspqr) \
-            deplibs="-lcholmod -lsuitesparseconfig -llapack -lblas"; \
-          ;; \
-          libumfpack) \
-            deplibs="-lcholmod -lamd -lsuitesparseconfig -lblas"; \
-          ;; \
-        esac; \
-        if [ -n "$deplibs" ]; then \
-          echo "  deplibs = $$deplibs"; \
-        fi; \
-        $(MAKE_SHARED_FROM_STATIC) --ar '$(MXE_AR)' --ld '$(MXE_CXX)' $$f --install '$(INSTALL)' --libdir '$($(PKG)_DESTDIR)$(HOST_LIBDIR)' --bindir '$($(PKG)_DESTDIR)$(HOST_BINDIR)' $$deplibs; \
-      fi; \
-    done
+    # install libraries and headers
+    $(MAKE) -C '$(1)' -j 1 install \
+        $($(PKG)_MAKE_OPTS) \
+        INSTALL_INCLUDE='$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/' \
+        INSTALL_LIB='$($(PKG)_DESTDIR)$(HOST_LIBDIR)' \
+        INSTALL_SO='$($(PKG)_DESTDIR)$(HOST_BINDIR)'
+endef
 
-    # install include files
-    $(INSTALL) -d                                '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/SuiteSparse_config/'*.h '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/AMD/Include/'*.h      '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/BTF/Include/'*.h      '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/CAMD/Include/'*.h     '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/CCOLAMD/Include/'*.h  '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/CHOLMOD/Include/'*.h  '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/COLAMD/Include/'*.h   '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/CSparse/Include/'*.h  '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/CXSparse/Include/'*.h '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/KLU/Include/'*.h      '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/LDL/Include/'*.h      '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/SPQR/Include/'*       '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-    $(INSTALL) -m644 '$(1)/UMFPACK/Include/'*.h  '$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/'
-endef