From 18fb907a8562039b27d4015ec8bc2c0fb92f3494 Mon Sep 17 00:00:00 2001 From: chrisbeall Date: Tue, 17 Oct 2017 08:27:44 -0700 Subject: [PATCH] As of SuiteSparse 4.5.6 CCOLAMD is now licensed under BSD-3! --- LICENSE | 6 +-- gtsam/3rdparty/CCOLAMD/Demo/ccolamd_example | Bin 34002 -> 0 bytes .../3rdparty/CCOLAMD/Demo/ccolamd_example.out | 4 +- gtsam/3rdparty/CCOLAMD/Demo/ccolamd_l_example | Bin 34027 -> 0 bytes .../CCOLAMD/Demo/ccolamd_l_example.out | 4 +- .../CCOLAMD/Demo/my_ccolamd_example.out | 50 ------------------ .../CCOLAMD/Demo/my_ccolamd_l_example.out | 50 ------------------ gtsam/3rdparty/CCOLAMD/Doc/ChangeLog | 4 ++ gtsam/3rdparty/CCOLAMD/Doc/License.txt | 34 ++++++++---- gtsam/3rdparty/CCOLAMD/Include/ccolamd.h | 4 +- gtsam/3rdparty/CCOLAMD/Lib/Makefile | 4 +- gtsam/3rdparty/CCOLAMD/Lib/libccolamd.a | Bin 61080 -> 0 bytes gtsam/3rdparty/CCOLAMD/Makefile | 4 ++ .../3rdparty/CCOLAMD/Source/ccolamd_global.c | 28 ---------- gtsam/3rdparty/SuiteSparse_config/Makefile | 4 +- gtsam/3rdparty/SuiteSparse_config/README.txt | 2 +- .../SuiteSparse_config/SuiteSparse_config.h | 39 +++++++------- .../SuiteSparse_config/SuiteSparse_config.mk | 9 ++-- .../SuiteSparse_config/xerbla/Makefile | 4 +- gtsam/CMakeLists.txt | 1 - 20 files changed, 74 insertions(+), 177 deletions(-) delete mode 100755 gtsam/3rdparty/CCOLAMD/Demo/ccolamd_example delete mode 100755 gtsam/3rdparty/CCOLAMD/Demo/ccolamd_l_example delete mode 100644 gtsam/3rdparty/CCOLAMD/Demo/my_ccolamd_example.out delete mode 100644 gtsam/3rdparty/CCOLAMD/Demo/my_ccolamd_l_example.out delete mode 100644 gtsam/3rdparty/CCOLAMD/Lib/libccolamd.a delete mode 100644 gtsam/3rdparty/CCOLAMD/Source/ccolamd_global.c diff --git a/LICENSE b/LICENSE index e7424bbc2..e1c3be202 100644 --- a/LICENSE +++ b/LICENSE @@ -4,11 +4,11 @@ LICENSE.BSD in this directory. GTSAM contains two third party libraries, with documentation of licensing and modifications as follows: -- CCOLAMD 2.73: Tim Davis' constrained column approximate minimum degree +- CCOLAMD 2.9.3: Tim Davis' constrained column approximate minimum degree ordering library - Included unmodified in gtsam/3rdparty/CCOLAMD and gtsam/3rdparty/UFconfig - - http://www.cise.ufl.edu/research/sparse - - Licenced under LGPL v2.1, provided in gtsam/3rdparty/CCOLAMD/Doc/lesser.txt + - http://faculty.cse.tamu.edu/davis/suitesparse.html + - Licenced under BSD-3, provided in gtsam/3rdparty/CCOLAMD/Doc/License.txt - Eigen 3.2: General C++ matrix and linear algebra library - Modified with 3 patches that have been contributed back to the Eigen team: - http://eigen.tuxfamily.org/bz/show_bug.cgi?id=704 (Householder QR MKL selection) diff --git a/gtsam/3rdparty/CCOLAMD/Demo/ccolamd_example b/gtsam/3rdparty/CCOLAMD/Demo/ccolamd_example deleted file mode 100755 index aa64a157d949477d40c8e77443a9e47d6bd5939e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34002 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 diff --git a/gtsam/3rdparty/CCOLAMD/Demo/ccolamd_example.out b/gtsam/3rdparty/CCOLAMD/Demo/ccolamd_example.out index b456b0f11..ca0dc0021 100644 --- a/gtsam/3rdparty/CCOLAMD/Demo/ccolamd_example.out +++ b/gtsam/3rdparty/CCOLAMD/Demo/ccolamd_example.out @@ -15,7 +15,7 @@ Column 3, with 2 entries: row 1 row 3 -ccolamd version 2.9, Apr 1, 2016: OK. +ccolamd version 2.9, May 4, 2016: OK. ccolamd: number of dense or empty rows ignored: 0 ccolamd: number of dense or empty columns ignored: 0 ccolamd: number of garbage collections performed: 0 @@ -38,7 +38,7 @@ Column 3, with 1 entries: row 4 Column 4, with 0 entries: -csymamd version 2.9, Apr 1, 2016: OK. +csymamd version 2.9, May 4, 2016: OK. csymamd: number of dense or empty rows ignored: 0 csymamd: number of dense or empty columns ignored: 0 csymamd: number of garbage collections performed: 0 diff --git a/gtsam/3rdparty/CCOLAMD/Demo/ccolamd_l_example b/gtsam/3rdparty/CCOLAMD/Demo/ccolamd_l_example deleted file mode 100755 index a695d3823555c817b911222e9934ca1e0d1fdff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34027 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

Oj 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 N=#TNUycQ>E{|99m8S?-D diff --git a/gtsam/3rdparty/CCOLAMD/Makefile b/gtsam/3rdparty/CCOLAMD/Makefile index f04181d60..ecebb8b92 100644 --- a/gtsam/3rdparty/CCOLAMD/Makefile +++ b/gtsam/3rdparty/CCOLAMD/Makefile @@ -20,6 +20,10 @@ all: library: ( cd Lib ; $(MAKE) ) +# compile the static libraries only +static: + ( cd Lib ; $(MAKE) static ) + # remove object files, but keep the compiled programs and library archives clean: ( cd Lib ; $(MAKE) clean ) diff --git a/gtsam/3rdparty/CCOLAMD/Source/ccolamd_global.c b/gtsam/3rdparty/CCOLAMD/Source/ccolamd_global.c deleted file mode 100644 index e470804a6..000000000 --- a/gtsam/3rdparty/CCOLAMD/Source/ccolamd_global.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ========================================================================== */ -/* === ccolamd_global.c ===================================================== */ -/* ========================================================================== */ - -/* ---------------------------------------------------------------------------- - * CCOLAMD Copyright (C), Univ. of Florida. Authors: Timothy A. Davis, - * Sivasankaran Rajamanickam, and Stefan Larimore - * See License.txt for the Version 2.1 of the GNU Lesser General Public License - * http://www.cise.ufl.edu/research/sparse - * -------------------------------------------------------------------------- */ - -/* Global variables for CCOLAMD */ - -#ifndef NPRINT -#ifdef MATLAB_MEX_FILE -#include -#include -typedef uint16_t char16_t; -#include "mex.h" -int (*ccolamd_printf) (const char *, ...) = mexPrintf ; -#else -#include -int (*ccolamd_printf) (const char *, ...) = printf ; -#endif -#else -int (*ccolamd_printf) (const char *, ...) = ((void *) 0) ; -#endif - diff --git a/gtsam/3rdparty/SuiteSparse_config/Makefile b/gtsam/3rdparty/SuiteSparse_config/Makefile index 96db5772f..aa858aeab 100644 --- a/gtsam/3rdparty/SuiteSparse_config/Makefile +++ b/gtsam/3rdparty/SuiteSparse_config/Makefile @@ -7,7 +7,7 @@ export SUITESPARSE # version of SuiteSparse_config is also version of SuiteSparse meta-package LIBRARY = libsuitesparseconfig -VERSION = 4.5.2 +VERSION = 4.5.6 SO_VERSION = 4 default: library @@ -27,6 +27,8 @@ OBJ = SuiteSparse_config.o SuiteSparse_config.o: SuiteSparse_config.c SuiteSparse_config.h $(CC) $(CF) -c SuiteSparse_config.c +static: $(AR_TARGET) + $(AR_TARGET): $(OBJ) $(ARCHIVE) $(AR_TARGET) SuiteSparse_config.o $(RANLIB) $(AR_TARGET) diff --git a/gtsam/3rdparty/SuiteSparse_config/README.txt b/gtsam/3rdparty/SuiteSparse_config/README.txt index a76a5fab6..8129f5a04 100644 --- a/gtsam/3rdparty/SuiteSparse_config/README.txt +++ b/gtsam/3rdparty/SuiteSparse_config/README.txt @@ -1,4 +1,4 @@ -SuiteSparse_config, 2016, Timothy A. Davis, http://www.suitesparse.com +SuiteSparse_config, 2017, Timothy A. Davis, http://www.suitesparse.com (formerly the UFconfig package) This directory contains a default SuiteSparse_config.mk file. It tries to diff --git a/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.h b/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.h index 49296fc5a..7d4de65d3 100644 --- a/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.h +++ b/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.h @@ -184,24 +184,24 @@ int SuiteSparse_divcomplex * * SuiteSparse contains the following packages: * - * SuiteSparse_config version 4.5.2 (version always the same as SuiteSparse) - * AMD version 2.4.5 - * BTF version 1.2.5 - * CAMD version 2.4.5 - * CCOLAMD version 2.9.5 - * CHOLMOD version 3.0.10 - * COLAMD version 2.9.5 - * CSparse version 3.1.8 - * CXSparse version 3.1.8 - * GPUQREngine version 1.0.4 - * KLU version 1.3.7 - * LDL version 2.2.5 - * RBio version 2.2.5 - * SPQR version 2.0.6 - * SuiteSparse_GPURuntime version 1.0.4 - * UMFPACK version 5.7.5 + * SuiteSparse_config version 4.5.6 (version always the same as SuiteSparse) + * AMD version 2.4.6 + * BTF version 1.2.6 + * CAMD version 2.4.6 + * CCOLAMD version 2.9.6 + * CHOLMOD version 3.0.11 + * COLAMD version 2.9.6 + * CSparse version 3.1.9 + * CXSparse version 3.1.9 + * GPUQREngine version 1.0.5 + * KLU version 1.3.8 + * LDL version 2.2.6 + * RBio version 2.2.6 + * SPQR version 2.0.8 + * SuiteSparse_GPURuntime version 1.0.5 + * UMFPACK version 5.7.6 * MATLAB_Tools various packages & M-files - * xerbla version 1.0.2 + * xerbla version 1.0.3 * * Other package dependencies: * BLAS required by CHOLMOD and UMFPACK @@ -211,7 +211,6 @@ int SuiteSparse_divcomplex * they are compiled with GPU acceleration. */ - int SuiteSparse_version /* returns SUITESPARSE_VERSION */ ( /* output, not defined on input. Not used if NULL. Returns @@ -234,11 +233,11 @@ int SuiteSparse_version /* returns SUITESPARSE_VERSION */ */ #define SUITESPARSE_HAS_VERSION_FUNCTION -#define SUITESPARSE_DATE "Apr 1, 2016" +#define SUITESPARSE_DATE "Oct 3, 2017" #define SUITESPARSE_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define SUITESPARSE_MAIN_VERSION 4 #define SUITESPARSE_SUB_VERSION 5 -#define SUITESPARSE_SUBSUB_VERSION 2 +#define SUITESPARSE_SUBSUB_VERSION 6 #define SUITESPARSE_VERSION \ SUITESPARSE_VER_CODE(SUITESPARSE_MAIN_VERSION,SUITESPARSE_SUB_VERSION) diff --git a/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.mk b/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.mk index 40ad6b9af..2c13a6010 100644 --- a/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.mk +++ b/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.mk @@ -5,7 +5,7 @@ # This file contains all configuration settings for all packages in SuiteSparse, # except for CSparse (which is stand-alone) and the packages in MATLAB_Tools. -SUITESPARSE_VERSION = 4.5.2 +SUITESPARSE_VERSION = 4.5.6 #=============================================================================== # Options you can change without editing this file: @@ -115,6 +115,7 @@ SUITESPARSE_VERSION = 4.5.2 CC = icc -D_GNU_SOURCE CXX = $(CC) CFOPENMP = -qopenmp -I$(MKLROOT)/include + LDFLAGS += -openmp endif ifneq ($(shell which ifort 2>/dev/null),) # use the Intel ifort compiler for Fortran codes @@ -123,7 +124,7 @@ SUITESPARSE_VERSION = 4.5.2 endif #--------------------------------------------------------------------------- - # code formatting (for Tcov only) + # code formatting (for Tcov on Linux only) #--------------------------------------------------------------------------- PRETTY ?= grep -v "^\#" | indent -bl -nce -bli0 -i4 -sob -l120 @@ -224,7 +225,6 @@ SUITESPARSE_VERSION = 4.5.2 CUDA_INC = -I$(CUDA_INC_PATH) NVCC = $(CUDA_PATH)/bin/nvcc NVCCFLAGS = -Xcompiler -fPIC -O3 \ - -gencode=arch=compute_20,code=sm_20 \ -gencode=arch=compute_30,code=sm_30 \ -gencode=arch=compute_35,code=sm_35 \ -gencode=arch=compute_50,code=sm_50 \ @@ -305,8 +305,9 @@ SUITESPARSE_VERSION = 4.5.2 SPQR_CONFIG ?= $(GPU_CONFIG) - # to compile with Intel's TBB, use TBB=-ltbb SPQR_CONFIG=-DHAVE_TBB + # to compile with Intel's TBB, use TBB=-ltbb -DSPQR_CONFIG=-DHAVE_TBB TBB ?= + # TBB = -ltbb -DSPQR_CONFIG=-DHAVE_TBB # TODO: this *mk file should auto-detect the presence of Intel's TBB, # and set the compiler flags accordingly. diff --git a/gtsam/3rdparty/SuiteSparse_config/xerbla/Makefile b/gtsam/3rdparty/SuiteSparse_config/xerbla/Makefile index 420c50e88..db68a2ea8 100644 --- a/gtsam/3rdparty/SuiteSparse_config/xerbla/Makefile +++ b/gtsam/3rdparty/SuiteSparse_config/xerbla/Makefile @@ -4,7 +4,7 @@ USE_FORTRAN = 0 # USE_FORTRAN = 1 -VERSION = 1.0.2 +VERSION = 1.0.3 SO_VERSION = 1 default: library @@ -35,6 +35,8 @@ ccode: all fortran: all +static: $(AR_TARGET) + $(AR_TARGET): $(DEPENDS) $(COMPILE) $(ARCHIVE) $(AR_TARGET) xerbla.o diff --git a/gtsam/CMakeLists.txt b/gtsam/CMakeLists.txt index 8c1d8bb43..bceca6bcd 100644 --- a/gtsam/CMakeLists.txt +++ b/gtsam/CMakeLists.txt @@ -25,7 +25,6 @@ add_subdirectory(3rdparty) set (3rdparty_srcs ${eigen_headers} # Set by 3rdparty/CMakeLists.txt ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/CCOLAMD/Source/ccolamd.c - ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/CCOLAMD/Source/ccolamd_global.c ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/SuiteSparse_config/SuiteSparse_config.c) gtsam_assign_source_folders("${3rdparty_srcs}") # Create MSVC structure