summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Theodore <tonyt@logyst.com>2017-11-20 16:12:34 (GMT)
committerTony Theodore <tonyt@logyst.com>2017-11-21 00:30:57 (GMT)
commite983597b0e45489b10fbea45ebaafbe288f89c2c (patch)
treecb943586a27c3f9e3744d3e51c9c538dd761a9b6
parent746d7d45dd0841e1cef6dd61220dba6e5d431d14 (diff)
downloadmxe-e983597b0e45489b10fbea45ebaafbe288f89c2c.zip
mxe-e983597b0e45489b10fbea45ebaafbe288f89c2c.tar.gz
mxe-e983597b0e45489b10fbea45ebaafbe288f89c2c.tar.bz2
suitesparse: update 4.2.1 --> 4.5.6 and enable shared,intel-tbb,metis,openblas
closes #1921
-rw-r--r--src/suitesparse-1-fixes.patch717
-rw-r--r--src/suitesparse-1.patch41
-rw-r--r--src/suitesparse.mk102
3 files changed, 784 insertions, 76 deletions
diff --git a/src/suitesparse-1-fixes.patch b/src/suitesparse-1-fixes.patch
new file mode 100644
index 0000000..97a18be
--- /dev/null
+++ b/src/suitesparse-1-fixes.patch
@@ -0,0 +1,717 @@
+This file is part of MXE. See LICENSE.md for licensing 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:
diff --git a/src/suitesparse-1.patch b/src/suitesparse-1.patch
deleted file mode 100644
index 9e19183..0000000
--- a/src/suitesparse-1.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-This file is part of MXE. See LICENSE.md for licensing 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
-
diff --git a/src/suitesparse.mk b/src/suitesparse.mk
index 9b2c995..e15b950 100644
--- a/src/suitesparse.mk
+++ b/src/suitesparse.mk
@@ -3,13 +3,13 @@
PKG := suitesparse
$(PKG)_WEBSITE := http://faculty.cse.tamu.edu/davis/suitesparse.html
$(PKG)_DESCR := SuiteSparse
-$(PKG)_VERSION := 4.2.1
-$(PKG)_CHECKSUM := e8023850bc30742e20a3623fabda02421cb5774b980e3e7c9c6d9e7e864946bd
+$(PKG)_VERSION := 4.5.6
+$(PKG)_CHECKSUM := de5fb496bdc029e55955e05d918a1862a177805fbbd5b957e8b5ce6632f6c77e
$(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 := gcc blas lapack
+$(PKG)_DEPS := gcc intel-tbb metis openblas
define $(PKG)_UPDATE
$(WGET) -q -O- 'http://faculty.cse.tamu.edu/davis/suitesparse.html' | \
@@ -17,42 +17,74 @@ define $(PKG)_UPDATE
head -1
endef
-define $(PKG)_BUILD
- # exclude demos
- find '$(1)' -name 'Makefile' \
- -exec $(SED) -i 's,( cd Demo,#( cd Demo,' {} \;
-
- # build all
- $(MAKE) -C '$(1)' -j '$(JOBS)' \
- CC='$(TARGET)-gcc' \
- CPLUSPLUS='$(TARGET)-g++' \
- CXX='$(TARGET)-g++' \
- F77='$(TARGET)-gfortran' \
- AR='$(TARGET)-ar' \
- RANLIB='$(TARGET)-ranlib' \
- BLAS='-lblas -lgfortran -lgfortranbegin -lquadmath' \
- CHOLMOD_CONFIG='-DNPARTITION'
+$(PKG)_MAKE_OPTS = \
+ UNAME=Windows \
+ AR='$(TARGET)-ar' \
+ CC='$(TARGET)-gcc' \
+ CXX='$(TARGET)-g++' \
+ F77='$(TARGET)-gfortran' \
+ RANLIB='$(TARGET)-ranlib' \
+ BLAS="`'$(TARGET)-pkg-config' --libs openblas`" \
+ LAPACK="`'$(TARGET)-pkg-config' --libs openblas`" \
+ MY_METIS_LIB="`'$(TARGET)-pkg-config' --libs metis`" \
+ TBB="`'$(TARGET)-pkg-config' --libs intel-tbb`" \
+ SPQR_CONFIG="-DHAVE_TBB"
+
+define $(PKG)_PC_TEST
+ # create pkg-config file for includes and base deps
+ $(INSTALL) -d '$(PREFIX)/$(TARGET)/lib/pkgconfig'
+ (echo 'Name: suitesparseconfig'; \
+ echo 'Version: $($(PKG)_VERSION)'; \
+ echo 'Description: SuiteSparse includes and deps'; \
+ echo 'Requires: intel-tbb openblas metis'; \
+ echo 'Libs: -lsuitesparseconfig'; \
+ echo 'Cflags: -I"$(PREFIX)/$(TARGET)/include/suitesparse"'; \
+ ) > '$(PREFIX)/$(TARGET)/lib/pkgconfig/suitesparseconfig.pc'
+
+ '$(TARGET)-g++' \
+ -W -Wall \
+ '$(SOURCE_DIR)/SPQR/Demo/qrdemo.cpp' \
+ -o '$(PREFIX)/$(TARGET)/bin/test-$(PKG).exe' \
+ -lspqr -lcholmod -lcolamd -lccolamd -lcamd -lamd \
+ `'$(TARGET)-pkg-config' suitesparseconfig --cflags --libs `
+
+ # batch file to run test program
+ cp '$(SOURCE_DIR)/SPQR/Matrix/a2.mtx' '$(PREFIX)/$(TARGET)/bin/test-$(PKG)-matrix.txt'
+ (printf 'test-$(PKG).exe < test-$(PKG)-matrix.txt\r\n'; \
+ ) > '$(PREFIX)/$(TARGET)/bin/test-$(PKG).bat'
+endef
+
+define $(PKG)_BUILD_STATIC
+ # build libraries
+ $(MAKE) -C '$(SOURCE_DIR)' -j '$(JOBS)' \
+ $($(PKG)_MAKE_OPTS) \
+ static
# install library files
$(INSTALL) -d '$(PREFIX)/$(TARGET)/lib'
- find '$(1)' -name '*.a' \
+ find '$(SOURCE_DIR)' -name 'lib*.a' \
-exec $(INSTALL) -m644 {} '$(PREFIX)/$(TARGET)/lib/' \;
- # install include files
- $(INSTALL) -d '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/SuiteSparse_config/'*.h '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/AMD/Include/'*.h '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/BTF/Include/'*.h '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/CAMD/Include/'*.h '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/CCOLAMD/Include/'*.h '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/CHOLMOD/Include/'*.h '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/COLAMD/Include/'*.h '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/CSparse/Include/'*.h '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/CXSparse/Include/'*.h '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/KLU/Include/'*.h '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/LDL/Include/'*.h '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/SPQR/Include/'* '$(PREFIX)/$(TARGET)/include/suitesparse/'
- $(INSTALL) -m644 '$(1)/UMFPACK/Include/'*.h '$(PREFIX)/$(TARGET)/include/suitesparse/'
+ # install headers
+ $(MAKE) -C '$(SOURCE_DIR)' -j 1 install \
+ $($(PKG)_MAKE_OPTS) \
+ INSTALL_INCLUDE='$(PREFIX)/$(TARGET)/include/suitesparse'
+
+ # pc and test
+ $($(PKG)_PC_TEST)
endef
-$(PKG)_BUILD_SHARED =
+define $(PKG)_BUILD_SHARED
+ # build and install libraries and headers
+ $(MAKE) -C '$(SOURCE_DIR)' -j '$(JOBS)' \
+ $($(PKG)_MAKE_OPTS) \
+ library
+ $(MAKE) -C '$(SOURCE_DIR)' -j 1 install \
+ $($(PKG)_MAKE_OPTS) \
+ INSTALL_INCLUDE='$(PREFIX)/$(TARGET)/include/suitesparse' \
+ INSTALL_LIB='$(PREFIX)/$(TARGET)/lib' \
+ INSTALL_SO='$(PREFIX)/$(TARGET)/bin'
+
+ # pc and test
+ $($(PKG)_PC_TEST)
+endef