diff --git a/CHOLMOD/CMakeLists.txt b/CHOLMOD/CMakeLists.txt index 44e1603487..30fc0c2a98 100644 --- a/CHOLMOD/CMakeLists.txt +++ b/CHOLMOD/CMakeLists.txt @@ -12,10 +12,10 @@ # cmake 3.22 is required to find the BLAS/LAPACK cmake_minimum_required ( VERSION 3.22 ) -set ( CHOLMOD_DATE "Dec 30, 2023" ) +set ( CHOLMOD_DATE "Jan XX, 2024" ) # FIXME for 7.5.0 set ( CHOLMOD_VERSION_MAJOR 5 CACHE STRING "" FORCE ) set ( CHOLMOD_VERSION_MINOR 1 CACHE STRING "" FORCE ) -set ( CHOLMOD_VERSION_SUB 0 CACHE STRING "" FORCE ) +set ( CHOLMOD_VERSION_SUB 1 CACHE STRING "" FORCE ) message ( STATUS "Building CHOLMOD version: v" ${CHOLMOD_VERSION_MAJOR}. @@ -88,7 +88,7 @@ if ( NOT SUITESPARSE_USE_OPENMP ) set ( CHOLMOD_USE_OPENMP "OFF" CACHE STRING "" FORCE ) endif ( ) if ( CHOLMOD_USE_OPENMP ) - find_package ( OpenMP GLOBAL ) + find_package ( OpenMP COMPONENTS C GLOBAL ) else ( ) # OpenMP has been disabled set ( OpenMP_C_FOUND OFF ) @@ -111,10 +111,10 @@ endif ( ) #------------------------------------------------------------------------------- if ( NOT SUITESPARSE_ROOT_CMAKELISTS ) - find_package ( SuiteSparse_config 7.4.0 + find_package ( SuiteSparse_config 7.5.0 PATHS ${CMAKE_SOURCE_DIR}/../SuiteSparse_config/build NO_DEFAULT_PATH ) if ( NOT TARGET SuiteSparse::SuiteSparseConfig ) - find_package ( SuiteSparse_config 7.4.0 REQUIRED ) + find_package ( SuiteSparse_config 7.5.0 REQUIRED ) endif ( ) find_package ( AMD 3.3.0 diff --git a/CHOLMOD/Config/CHOLMODConfig.cmake.in b/CHOLMOD/Config/CHOLMODConfig.cmake.in index 5415d32146..602a0da63d 100644 --- a/CHOLMOD/Config/CHOLMODConfig.cmake.in +++ b/CHOLMOD/Config/CHOLMODConfig.cmake.in @@ -53,7 +53,7 @@ endif ( ) # Look for OpenMP if ( @CHOLMOD_HAS_OPENMP@ AND NOT OpenMP_C_FOUND ) - find_dependency ( OpenMP ) + find_dependency ( OpenMP COMPONENTS C ) if ( NOT OpenMP_C_FOUND ) set ( _dependencies_found OFF ) endif ( ) diff --git a/CHOLMOD/Config/cholmod.h.in b/CHOLMOD/Config/cholmod.h.in index 31de0426d9..201749533c 100644 --- a/CHOLMOD/Config/cholmod.h.in +++ b/CHOLMOD/Config/cholmod.h.in @@ -303,8 +303,8 @@ int cholmod_l_version (int version [3]) ; #include "SuiteSparse_config.h" #if !defined (SUITESPARSE_VERSION) || \ - (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,4)) -#error "CHOLMOD @CHOLMOD_VERSION_MAJOR@.@CHOLMOD_VERSION_MINOR@.@CHOLMOD_VERSION_SUB@ requires SuiteSparse_config 7.4 or later" + (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,5)) +#error "CHOLMOD @CHOLMOD_VERSION_MAJOR@.@CHOLMOD_VERSION_MINOR@.@CHOLMOD_VERSION_SUB@ requires SuiteSparse_config 7.5 or later" #endif //------------------------------------------------------------------------------ diff --git a/CHOLMOD/Doc/CHOLMOD_UserGuide.pdf b/CHOLMOD/Doc/CHOLMOD_UserGuide.pdf index 46174736a1..a262bf412a 100644 Binary files a/CHOLMOD/Doc/CHOLMOD_UserGuide.pdf and b/CHOLMOD/Doc/CHOLMOD_UserGuide.pdf differ diff --git a/CHOLMOD/Doc/ChangeLog b/CHOLMOD/Doc/ChangeLog index 6de63c3d75..8012356c13 100644 --- a/CHOLMOD/Doc/ChangeLog +++ b/CHOLMOD/Doc/ChangeLog @@ -1,3 +1,8 @@ +Jan XX, 2024: version 5.1.1 FIXME for 7.5.0 + + * MATLAB interface: add -DNO_SSIZE_T for Windows + * minor updates to build system + Dec 30, 2023: version 5.1.0 * major change to build system: by Markus Mützel diff --git a/CHOLMOD/Doc/cholmod_version.tex b/CHOLMOD/Doc/cholmod_version.tex index 557d77e60a..baae53ec70 100644 --- a/CHOLMOD/Doc/cholmod_version.tex +++ b/CHOLMOD/Doc/cholmod_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/CHOLMOD -\date{VERSION 5.1.0, Dec 30, 2023} +\date{VERSION 5.1.1, Jan XX, 2024} diff --git a/CHOLMOD/Include/cholmod.h b/CHOLMOD/Include/cholmod.h index 0290f5ef50..14ab97ccce 100644 --- a/CHOLMOD/Include/cholmod.h +++ b/CHOLMOD/Include/cholmod.h @@ -240,10 +240,10 @@ // version control //------------------------------------------------------------------------------ -#define CHOLMOD_DATE "Dec 30, 2023" +#define CHOLMOD_DATE "Jan XX, 2024" #define CHOLMOD_MAIN_VERSION 5 #define CHOLMOD_SUB_VERSION 1 -#define CHOLMOD_SUBSUB_VERSION 0 +#define CHOLMOD_SUBSUB_VERSION 1 #define CHOLMOD_VER_CODE(main,sub) SUITESPARSE_VER_CODE(main,sub) #define CHOLMOD_VERSION \ @@ -303,8 +303,8 @@ int cholmod_l_version (int version [3]) ; #include "SuiteSparse_config.h" #if !defined (SUITESPARSE_VERSION) || \ - (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,4)) -#error "CHOLMOD 5.1.0 requires SuiteSparse_config 7.4 or later" + (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,5)) +#error "CHOLMOD 5.1.1 requires SuiteSparse_config 7.5 or later" #endif //------------------------------------------------------------------------------ diff --git a/CHOLMOD/MATLAB/cholmod_make.m b/CHOLMOD/MATLAB/cholmod_make.m index ad75ccf116..61729861a5 100644 --- a/CHOLMOD/MATLAB/cholmod_make.m +++ b/CHOLMOD/MATLAB/cholmod_make.m @@ -35,6 +35,11 @@ % -R2018a: interleaved complex is required flags = '-O -R2018a -silent ' ; +if (pc) + % MSVC does not define ssize_t + flags = [flags ' -DNO_SSIZE_T'] ; +end + include = '-I. -I.. -I../../AMD/Include -I../../COLAMD/Include -I../../CCOLAMD/Include -I../../CAMD/Include -I../Include -I../../SuiteSparse_config' ; if (~pc) diff --git a/CMakeLists.txt b/CMakeLists.txt index cb2a211612..f48d50871e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,7 +136,7 @@ endif ( ) if ( SUITESPARSE_USE_SYSTEM_CHOLMOD ) list ( REMOVE_ITEM SUITESPARSE_ENABLE_PROJECTS "cholmod" ) - find_package ( CHOLMOD 5.1.0 REQUIRED ) + find_package ( CHOLMOD 5.1.1 REQUIRED ) else ( ) if ( ( KLU_USE_CHOLMOD AND "klu" IN_LIST SUITESPARSE_ENABLE_PROJECTS ) OR ( UMFPACK_USE_CHOLMOD AND "umfpack" IN_LIST SUITESPARSE_ENABLE_PROJECTS ) diff --git a/ChangeLog b/ChangeLog index 25c09cecde..87e8d987f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,11 +1,12 @@ -Jan 1, 2024: version 7.5.0 +Jan XX, 2024: version 7.5.0 FIXME for 7.5.0 * Suitesparse_config: 7.5.0, to reflect the addition of GraphBLAS 9.0.0. - No change to the build system from SuiteSparse 7.4.0, except to update - the date and version numbers. * GraphBLAS 9.0.0: supporting the v2.1 C API; see https://github.com/GraphBLAS/graphblas-api-c - * Example 1.6.0: using GraphBLAS 9.0.0 and SuiteSparse_config 7.5.0 + * Example 1.6.0: using GraphBLAS 9.0.0 and SuiteSparse_config 7.5.0, + remove explicit dependencies on OpenMP, libm, GMP, and MPFR + * CHOLMOD 5.1.1, SPQR 4.3.1, ParU 0.1.1, LAGraph 1.1.1: + minor updates to build system Dec 30, 2023: version 7.4.0 diff --git a/Example/CMakeLists.txt b/Example/CMakeLists.txt index 88a7c5ef0a..8f48ea555c 100644 --- a/Example/CMakeLists.txt +++ b/Example/CMakeLists.txt @@ -53,7 +53,7 @@ message ( STATUS "MY prefix path: ${CMAKE_PREFIX_PATH}" ) #------------------------------------------------------------------------------- # cmake inserts the date and version number into Include/my.h: -set ( MY_DATE "Jan 1, 2024" ) +set ( MY_DATE "Jan XX, 2024" ) # FIXME for 7.5.0 set ( MY_VERSION_MAJOR 1 ) set ( MY_VERSION_MINOR 6 ) set ( MY_VERSION_PATCH 0 ) @@ -92,29 +92,21 @@ find_package ( AMD 3.3.0 REQUIRED ) find_package ( BTF 2.3.0 REQUIRED ) find_package ( CAMD 3.3.0 REQUIRED ) find_package ( CCOLAMD 3.3.0 REQUIRED ) -find_package ( CHOLMOD 5.1.0 REQUIRED ) +find_package ( CHOLMOD 5.1.1 REQUIRED ) find_package ( COLAMD 3.3.0 REQUIRED ) find_package ( CXSparse 4.3.0 REQUIRED ) find_package ( GraphBLAS 9.0.0 ) find_package ( KLU 2.3.0 REQUIRED ) find_package ( KLU_CHOLMOD 2.3.0 REQUIRED ) find_package ( LDL 3.3.0 REQUIRED ) -find_package ( LAGraph 1.1.0 ) +find_package ( LAGraph 1.1.1 ) find_package ( SuiteSparse_Mongoose 3.3.0 REQUIRED ) -find_package ( ParU 0.1.0 REQUIRED ) +find_package ( ParU 0.1.1 REQUIRED ) find_package ( RBio 4.3.0 REQUIRED ) find_package ( SPEX 2.3.0 REQUIRED ) # requires GMP and MPFR -find_package ( SPQR 4.3.0 REQUIRED ) +find_package ( SPQR 4.3.1 REQUIRED ) find_package ( UMFPACK 6.3.0 REQUIRED ) -# look for all external libaries: -find_package ( OpenMP REQUIRED ) -find_package ( BLAS REQUIRED ) -find_package ( LAPACK REQUIRED ) -# the SPEX/Find*.cmake packages are installed when SPEX is installed. -find_package ( GMP 6.1.2 REQUIRED ) -find_package ( MPFR 4.0.2 REQUIRED ) - #------------------------------------------------------------------------------- # configure files #------------------------------------------------------------------------------- @@ -510,82 +502,100 @@ if ( BUILD_STATIC_LIBS ) endif ( ) endif ( ) -# OpenMP: -message ( STATUS "OpenMP C libraries: ${OpenMP_C_LIBRARIES}" ) -message ( STATUS "OpenMP C include: ${OpenMP_C_INCLUDE_DIRS}" ) -message ( STATUS "OpenMP C flags: ${OpenMP_C_FLAGS}" ) -if ( BUILD_SHARED_LIBS ) - target_link_libraries ( my PRIVATE OpenMP::OpenMP_C ) - target_link_libraries ( my_cxx PRIVATE OpenMP::OpenMP_CXX ) -endif ( ) -if ( BUILD_STATIC_LIBS ) - target_link_libraries ( my_static PUBLIC OpenMP::OpenMP_C ) - target_link_libraries ( my_cxx_static PUBLIC OpenMP::OpenMP_CXX ) -endif ( ) +#------------------------------------------------------------------------------- +# other libraries +#------------------------------------------------------------------------------- + +# The "MY" library does not directly rely on the OpenMP, libm, BLAS, LAPACK, +# GMP, and MPFR libraries. However, if you wish to create a library that +# uses those libraries, uncomment the corresponding section. For example, +# when using SPEX, it would be common to also need direct access to GMP and +# MPFR. These direct dependencies are left out of the MY CMakeLists.txt, as +# a test for the other SuiteSparse cmake build system, to ensure that the +# libraries should be linked via the libraries that depend on them. For +# example, linking with SPEX (above) should bring in GMP and MPRF for use in +# SPEX (but not in MY). + +if ( 0 ) -# libm: -if ( NOT WIN32 ) + # OpenMP: + message ( STATUS "OpenMP C libraries: ${OpenMP_C_LIBRARIES}" ) + message ( STATUS "OpenMP C include: ${OpenMP_C_INCLUDE_DIRS}" ) + message ( STATUS "OpenMP C flags: ${OpenMP_C_FLAGS}" ) if ( BUILD_SHARED_LIBS ) - target_link_libraries ( my PRIVATE m ) - target_link_libraries ( my_cxx PRIVATE m ) + target_link_libraries ( my PRIVATE OpenMP::OpenMP_C ) + target_link_libraries ( my_cxx PRIVATE OpenMP::OpenMP_CXX ) endif ( ) if ( BUILD_STATIC_LIBS ) - target_link_libraries ( my_static PUBLIC m ) - target_link_libraries ( my_cxx_static PUBLIC m ) + target_link_libraries ( my_static PUBLIC OpenMP::OpenMP_C ) + target_link_libraries ( my_cxx_static PUBLIC OpenMP::OpenMP_CXX ) endif ( ) -endif ( ) -# BLAS: -message ( STATUS "BLAS libraries: ${BLAS_LIBRARIES}" ) -message ( STATUS "BLAS include: ${BLAS_INCLUDE_DIRS}" ) -message ( STATUS "BLAS linker flags: ${BLAS_LINKER_FLAGS}" ) -if ( BUILD_SHARED_LIBS ) - target_link_libraries ( my PRIVATE ${BLAS_LIBRARIES} ) - target_link_libraries ( my_cxx PRIVATE ${BLAS_LIBRARIES} ) -endif ( ) -if ( BUILD_STATIC_LIBS ) - target_link_libraries ( my_static PUBLIC ${BLAS_LIBRARIES} ) - target_link_libraries ( my_cxx_static PUBLIC ${BLAS_LIBRARIES} ) -endif ( ) -include_directories ( ${BLAS_INCLUDE_DIRS} ) + # libm: + if ( NOT WIN32 ) + if ( BUILD_SHARED_LIBS ) + target_link_libraries ( my PRIVATE m ) + target_link_libraries ( my_cxx PRIVATE m ) + endif ( ) + if ( BUILD_STATIC_LIBS ) + target_link_libraries ( my_static PUBLIC m ) + target_link_libraries ( my_cxx_static PUBLIC m ) + endif ( ) + endif ( ) -# LAPACK: -message ( STATUS "LAPACK libraries: ${LAPACK_LIBRARIES}" ) -message ( STATUS "LAPACK include: ${LAPACK_INCLUDE_DIRS}" ) -message ( STATUS "LAPACK linker flags: ${LAPACK_LINKER_FLAGS}" ) -if ( BUILD_SHARED_LIBS ) - target_link_libraries ( my PRIVATE ${LAPACK_LIBRARIES} ) - target_link_libraries ( my_cxx PRIVATE ${LAPACK_LIBRARIES} ) -endif ( ) -if ( BUILD_STATIC_LIBS ) - target_link_libraries ( my_static PUBLIC ${LAPACK_LIBRARIES} ) - target_link_libraries ( my_cxx_static PUBLIC ${LAPACK_LIBRARIES} ) -endif ( ) -include_directories ( ${LAPACK_INCLUDE_DIRS} ) + # BLAS: + message ( STATUS "BLAS libraries: ${BLAS_LIBRARIES}" ) + message ( STATUS "BLAS include: ${BLAS_INCLUDE_DIRS}" ) + message ( STATUS "BLAS linker flags: ${BLAS_LINKER_FLAGS}" ) + if ( BUILD_SHARED_LIBS ) + target_link_libraries ( my PRIVATE ${BLAS_LIBRARIES} ) + target_link_libraries ( my_cxx PRIVATE ${BLAS_LIBRARIES} ) + endif ( ) + if ( BUILD_STATIC_LIBS ) + target_link_libraries ( my_static PUBLIC ${BLAS_LIBRARIES} ) + target_link_libraries ( my_cxx_static PUBLIC ${BLAS_LIBRARIES} ) + endif ( ) + include_directories ( ${BLAS_INCLUDE_DIRS} ) -# gmp: -message ( STATUS "GMP library: ${GMP_LIBRARIES}" ) -if ( BUILD_SHARED_LIBS ) - target_link_libraries ( my PRIVATE ${GMP_LIBRARIES} ) - target_link_libraries ( my_cxx PRIVATE ${GMP_LIBRARIES} ) -endif ( ) -if ( BUILD_STATIC_LIBS ) - target_link_libraries ( my_static PUBLIC ${GMP_STATIC} ) - target_link_libraries ( my_cxx_static PUBLIC ${GMP_STATIC} ) -endif ( ) -include_directories ( ${GMP_INCLUDE_DIR} ) + # LAPACK: + message ( STATUS "LAPACK libraries: ${LAPACK_LIBRARIES}" ) + message ( STATUS "LAPACK include: ${LAPACK_INCLUDE_DIRS}" ) + message ( STATUS "LAPACK linker flags: ${LAPACK_LINKER_FLAGS}" ) + if ( BUILD_SHARED_LIBS ) + target_link_libraries ( my PRIVATE ${LAPACK_LIBRARIES} ) + target_link_libraries ( my_cxx PRIVATE ${LAPACK_LIBRARIES} ) + endif ( ) + if ( BUILD_STATIC_LIBS ) + target_link_libraries ( my_static PUBLIC ${LAPACK_LIBRARIES} ) + target_link_libraries ( my_cxx_static PUBLIC ${LAPACK_LIBRARIES} ) + endif ( ) + include_directories ( ${LAPACK_INCLUDE_DIRS} ) + + # gmp: + message ( STATUS "GMP library: ${GMP_LIBRARIES}" ) + if ( BUILD_SHARED_LIBS ) + target_link_libraries ( my PRIVATE ${GMP_LIBRARIES} ) + target_link_libraries ( my_cxx PRIVATE ${GMP_LIBRARIES} ) + endif ( ) + if ( BUILD_STATIC_LIBS ) + target_link_libraries ( my_static PUBLIC ${GMP_STATIC} ) + target_link_libraries ( my_cxx_static PUBLIC ${GMP_STATIC} ) + endif ( ) + include_directories ( ${GMP_INCLUDE_DIR} ) + + # mpfr: + message ( STATUS "MPFR library: ${MPFR_LIBRARIES}" ) + if ( BUILD_SHARED_LIBS ) + target_link_libraries ( my PRIVATE ${MPFR_LIBRARIES} ) + target_link_libraries ( my_cxx PRIVATE ${MPFR_LIBRARIES} ) + endif ( ) + if ( BUILD_STATIC_LIBS ) + target_link_libraries ( my_static PUBLIC ${MPFR_STATIC} ) + target_link_libraries ( my_cxx_static PUBLIC ${MPFR_STATIC} ) + endif ( ) + include_directories ( ${MPFR_INCLUDE_DIR} ) -# mpfr: -message ( STATUS "MPFR library: ${MPFR_LIBRARIES}" ) -if ( BUILD_SHARED_LIBS ) - target_link_libraries ( my PRIVATE ${MPFR_LIBRARIES} ) - target_link_libraries ( my_cxx PRIVATE ${MPFR_LIBRARIES} ) -endif ( ) -if ( BUILD_STATIC_LIBS ) - target_link_libraries ( my_static PUBLIC ${MPFR_STATIC} ) - target_link_libraries ( my_cxx_static PUBLIC ${MPFR_STATIC} ) endif ( ) -include_directories ( ${MPFR_INCLUDE_DIR} ) #------------------------------------------------------------------------------- # installation location diff --git a/Example/Include/my.h b/Example/Include/my.h index 0353d94426..955cf6188e 100644 --- a/Example/Include/my.h +++ b/Example/Include/my.h @@ -11,7 +11,7 @@ // file, since it is constructed from Config/my.h.in by cmake. // version and date for example user library -#define MY_DATE "Jan 1, 2024" +#define MY_DATE "Jan XX, 2024" #define MY_MAJOR_VERSION 1 #define MY_MINOR_VERSION 6 #define MY_PATCH_VERSION 0 diff --git a/Example/Include/my_internal.h b/Example/Include/my_internal.h index 7f5a0f9187..ccab4440f7 100644 --- a/Example/Include/my_internal.h +++ b/Example/Include/my_internal.h @@ -18,8 +18,8 @@ // SuiteSparse include files for C/C++: #include "SuiteSparse_config.h" #if !defined (SUITESPARSE_VERSION) || \ - (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,4)) -#error "This library requires SuiteSparse_config 7.4.0 or later" + (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,5)) +#error "This library requires SuiteSparse_config 7.5.0 or later" #endif #include "amd.h" @@ -43,7 +43,7 @@ #endif #include "cholmod.h" -#if CHOLMOD_VERSION < SUITESPARSE_VER_CODE(3,3) +#if CHOLMOD_VERSION < SUITESPARSE_VER_CODE(5,1) #error "This library requires CHOLMOD 5.1.0 or later" #endif @@ -60,16 +60,16 @@ #if ! defined (NO_GRAPHBLAS) #include "GraphBLAS.h" #if !defined ( GxB_SUITESPARSE_GRAPHBLAS ) || \ - GxB_IMPLEMENTATION < GxB_VERSION (8,3,1) - #error "This library requires SuiteSparse:GraphBLAS 8.3.1 or later" + GxB_IMPLEMENTATION < GxB_VERSION (9,0,0) + #error "This library requires SuiteSparse:GraphBLAS 9.0.0 or later" #endif #endif #if ! defined (NO_LAGRAPH) #include "LAGraph.h" #if VER3CODE (LAGRAPH_VERSION_MAJOR,LAGRAPH_VERSION_MINOR, \ - LAGRAPH_VERSION_UPDATE) < VER3CODE(1,1,0) - #error "This library requires LAGraph 1.1.0 or later" + LAGRAPH_VERSION_UPDATE) < VER3CODE(1,1,1) + #error "This library requires LAGraph 1.1.1 or later" #endif #endif @@ -100,7 +100,7 @@ #endif #include "umfpack.h" -#if UMFPACK_VER < SUITESPARSE_VER_CODE(4,3) +#if UMFPACK_VER < SUITESPARSE_VER_CODE(6,3) #error "This library requires UMFPACK 6.3.0 or later" #endif diff --git a/GraphBLAS/CMakeLists.txt b/GraphBLAS/CMakeLists.txt index ab72d746b8..e741a3ebef 100644 --- a/GraphBLAS/CMakeLists.txt +++ b/GraphBLAS/CMakeLists.txt @@ -105,7 +105,7 @@ if ( NOT SUITESPARSE_USE_OPENMP ) set ( GRAPHBLAS_USE_OPENMP "OFF" CACHE STRING "" FORCE ) endif ( ) if ( GRAPHBLAS_USE_OPENMP ) - find_package ( OpenMP GLOBAL ) + find_package ( OpenMP COMPONENTS C GLOBAL ) else ( ) # OpenMP has been disabled. set ( OpenMP_C_FOUND OFF ) @@ -461,9 +461,9 @@ if ( GRAPHBLAS_HAS_OPENMP ) endif ( ) message ( STATUS "CMAKE OpenMP C flags: ${OpenMP_C_FLAGS}" ) else ( ) - message ( WARNING + message ( WARNING "WARNING: OpenMP was not found (or was disabled with " - "GRAPHBLAS_USE_OPENMP). See the GrapBLAS user guide on the consequences " + "GRAPHBLAS_USE_OPENMP). See the GraphBLAS user guide on the consequences " "of compiling GraphBLAS without OpenMP. GraphBLAS will work but may not be " "thread-safe, since it relies on '#pragma omp flush' to ensure the work " "performed by one user thread is available to another, in GrB_wait. If " @@ -476,7 +476,7 @@ else ( ) include ( SuiteSparse__thread ) if ( NOT HAVE_KEYWORD__DECLSPEC_THREAD AND NOT HAVE_KEYWORD__THREAD AND NOT HAVE_KEYWORD__THREAD_LOCAL ) - message ( WARNING + message ( WARNING "The C compiler does not support thread-local-storage; " "GxB_Context_engage will return GrB_NOT_IMPLEMENTED." ) endif ( ) diff --git a/GraphBLAS/Config/GraphBLASConfig.cmake.in b/GraphBLAS/Config/GraphBLASConfig.cmake.in index 76bf4273e4..a806fc3217 100644 --- a/GraphBLAS/Config/GraphBLASConfig.cmake.in +++ b/GraphBLAS/Config/GraphBLASConfig.cmake.in @@ -63,7 +63,7 @@ endif ( ) # Look for OpenMP if ( @GRAPHBLAS_HAS_OPENMP@ AND NOT OpenMP_C_FOUND ) - find_dependency ( OpenMP ) + find_dependency ( OpenMP COMPONENTS C ) if ( NOT OpenMP_C_FOUND ) set ( _dependencies_found OFF ) endif ( ) @@ -111,6 +111,7 @@ set ( _var_prefix "GRAPHBLAS" ) if ( NOT @BUILD_SHARED_LIBS@ AND NOT TARGET ${_target_shared} ) # make sure there is always an import target without suffix ) add_library ( ${_target_shared} ALIAS ${_target_static} ) + set ( _shared_is_aliased ON ) endif ( ) get_target_property ( ${_var_prefix}_INCLUDE_DIR ${_target_shared} INTERFACE_INCLUDE_DIRECTORIES ) @@ -189,3 +190,63 @@ message ( STATUS "GraphBLAS version: ${GRAPHBLAS_VERSION}" ) message ( STATUS "GraphBLAS include: ${GRAPHBLAS_INCLUDE_DIR}" ) message ( STATUS "GraphBLAS library: ${GRAPHBLAS_LIBRARY}" ) message ( STATUS "GraphBLAS static: ${GRAPHBLAS_STATIC}" ) + +if ( NOT _shared_is_aliased AND GRAPHBLAS_LIBRARY ) + # Get library name from filename of library + # This might be something like: + # /usr/lib/libgraphblas.so or /usr/lib/libgraphblas.a or graphblas64 + # convert to library name that can be used with -l flags for pkg-config + set ( GRAPHBLAS_LIBRARY_TMP ${GRAPHBLAS_LIBRARY} ) + string ( FIND ${GRAPHBLAS_LIBRARY} "." _pos REVERSE ) + if ( ${_pos} EQUAL "-1" ) + set ( _graphblas_library_name ${GRAPHBLAS_LIBRARY} ) + else ( ) + set ( _kinds "SHARED" "STATIC" ) + if ( WIN32 ) + list ( PREPEND _kinds "IMPORT" ) + endif ( ) + foreach ( _kind IN LISTS _kinds ) + set ( _regex ".*\\/(lib)?([^\\.]*)(${CMAKE_${_kind}_LIBRARY_SUFFIX})" ) + if ( ${GRAPHBLAS_LIBRARY} MATCHES ${_regex} ) + string ( REGEX REPLACE ${_regex} "\\2" _libname ${GRAPHBLAS_LIBRARY} ) + if ( NOT "${_libname}" STREQUAL "" ) + set ( _graphblas_library_name ${_libname} ) + break () + endif ( ) + endif ( ) + endforeach ( ) + endif ( ) + + set_target_properties ( SuiteSparse::GraphBLAS PROPERTIES + OUTPUT_NAME ${_graphblas_library_name} ) +endif ( ) + +if ( GRAPHBLAS_STATIC ) + # Get library name from filename of library + # This might be something like: + # /usr/lib/libgraphblas.so or /usr/lib/libgraphblas.a or graphblas64 + # convert to library name that can be used with -l flags for pkg-config + set ( GRAPHBLAS_LIBRARY_TMP ${GRAPHBLAS_STATIC} ) + string ( FIND ${GRAPHBLAS_STATIC} "." _pos REVERSE ) + if ( ${_pos} EQUAL "-1" ) + set ( _graphblas_library_name ${GRAPHBLAS_STATIC} ) + else ( ) + set ( _kinds "SHARED" "STATIC" ) + if ( WIN32 ) + list ( PREPEND _kinds "IMPORT" ) + endif ( ) + foreach ( _kind IN LISTS _kinds ) + set ( _regex ".*\\/(lib)?([^\\.]*)(${CMAKE_${_kind}_LIBRARY_SUFFIX})" ) + if ( ${GRAPHBLAS_STATIC} MATCHES ${_regex} ) + string ( REGEX REPLACE ${_regex} "\\2" _libname ${GRAPHBLAS_STATIC} ) + if ( NOT "${_libname}" STREQUAL "" ) + set ( _graphblas_library_name ${_libname} ) + break () + endif ( ) + endif ( ) + endforeach ( ) + endif ( ) + + set_target_properties ( SuiteSparse::GraphBLAS_static PROPERTIES + OUTPUT_NAME ${_graphblas_library_name} ) +endif ( ) diff --git a/GraphBLAS/Doc/ChangeLog b/GraphBLAS/Doc/ChangeLog index 8739c676bd..1f11bf04f2 100644 --- a/GraphBLAS/Doc/ChangeLog +++ b/GraphBLAS/Doc/ChangeLog @@ -1,4 +1,4 @@ -Jan 1, 2024: version 9.0.0 +Jan XX, 2024: version 9.0.0 FIXME for 7.5.0 * GrB_get/GrB_set: new functions from the v2.1 C API. * GrB_Type_new, GrB_UnaryOp_new, GrB_IndexUnaryOp_new: no longer macros, @@ -17,6 +17,7 @@ Jan 1, 2024: version 9.0.0 GrB_STORAGE_ORIENTATION_HINT in place of GxB_FORMAT. * hyper_hash: constructed only if the # of non-empty vectors in a hypersparse matrix is large (> 1024, by default) + * minor updates to build system: *.pc files for pkgconfig Dec 30, 2023: version 8.3.1 diff --git a/GraphBLAS/Doc/GraphBLAS_UserGuide.pdf b/GraphBLAS/Doc/GraphBLAS_UserGuide.pdf index 093f7018f3..d496990120 100644 Binary files a/GraphBLAS/Doc/GraphBLAS_UserGuide.pdf and b/GraphBLAS/Doc/GraphBLAS_UserGuide.pdf differ diff --git a/GraphBLAS/Doc/GraphBLAS_UserGuide.tex b/GraphBLAS/Doc/GraphBLAS_UserGuide.tex index 1323de157a..c5c43e909e 100644 --- a/GraphBLAS/Doc/GraphBLAS_UserGuide.tex +++ b/GraphBLAS/Doc/GraphBLAS_UserGuide.tex @@ -14768,7 +14768,7 @@ \section{Release Notes} \begin{itemize} -\item Version 9.0.0, Jan 1, 2024 +\item Version 9.0.0, Jan XX, 2024 % FIXME for 7.5.0 \begin{itemize} \item \verb'GrB_get/GrB_set': new functions from the v2.1 C API. @@ -14791,6 +14791,7 @@ \section{Release Notes} \verb'GrB_STORAGE_ORIENTATION_HINT' in place of \verb'GxB_FORMAT'. \item \verb'hyper_hash': constructed only if the number of non-empty vectors in a hypersparse matrix is large ($> 1024$, by default). + \item minor updates to build system: \verb'*.pc' files for \verb'pkgconfig' \end{itemize} \item Dec 30, 2023: version 8.3.1 diff --git a/GraphBLAS/Doc/GraphBLAS_version.tex b/GraphBLAS/Doc/GraphBLAS_version.tex index 71ebf2c8ea..7fd5eda1af 100644 --- a/GraphBLAS/Doc/GraphBLAS_version.tex +++ b/GraphBLAS/Doc/GraphBLAS_version.tex @@ -1,5 +1,5 @@ % version of SuiteSparse:GraphBLAS \date{VERSION 9.0.0, -Jan 1, 2024} +Jan XX, 2024} diff --git a/GraphBLAS/GraphBLAS/CMakeLists.txt b/GraphBLAS/GraphBLAS/CMakeLists.txt index 5251f12075..a1e795b4d0 100644 --- a/GraphBLAS/GraphBLAS/CMakeLists.txt +++ b/GraphBLAS/GraphBLAS/CMakeLists.txt @@ -69,7 +69,7 @@ if ( NOT SUITESPARSE_USE_OPENMP ) set ( GRAPHBLAS_USE_OPENMP "OFF" CACHE STRING "" FORCE ) endif ( ) if ( GRAPHBLAS_USE_OPENMP ) - find_package ( OpenMP ) + find_package ( OpenMP COMPONENTS C ) else ( ) # OpenMP has been disabled set ( OpenMP_C_FOUND OFF ) diff --git a/GraphBLAS/Include/GraphBLAS.h b/GraphBLAS/Include/GraphBLAS.h index 9ca2ea35ba..f6f84d7463 100644 --- a/GraphBLAS/Include/GraphBLAS.h +++ b/GraphBLAS/Include/GraphBLAS.h @@ -226,7 +226,7 @@ // The version of this implementation, and the GraphBLAS API version: #define GxB_IMPLEMENTATION_NAME "SuiteSparse:GraphBLAS" -#define GxB_IMPLEMENTATION_DATE "Jan 1, 2024" +#define GxB_IMPLEMENTATION_DATE "Jan XX, 2024" #define GxB_IMPLEMENTATION_MAJOR 9 #define GxB_IMPLEMENTATION_MINOR 0 #define GxB_IMPLEMENTATION_SUB 0 diff --git a/GraphBLAS/README.md b/GraphBLAS/README.md index 7837de87ff..befab03e68 100644 --- a/GraphBLAS/README.md +++ b/GraphBLAS/README.md @@ -4,7 +4,7 @@ SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2024, All Rights Reserved. SPDX-License-Identifier: Apache-2.0 -VERSION 9.0.0, Jan 1, 2024 +VERSION 9.0.0, Jan XX, 2024 SuiteSparse:GraphBLAS is a complete implementation of the GraphBLAS standard, which defines a set of sparse matrix operations on an extended algebra of diff --git a/GraphBLAS/cmake_modules/GraphBLAS_version.cmake b/GraphBLAS/cmake_modules/GraphBLAS_version.cmake index b3235ff141..cf5779552d 100644 --- a/GraphBLAS/cmake_modules/GraphBLAS_version.cmake +++ b/GraphBLAS/cmake_modules/GraphBLAS_version.cmake @@ -8,7 +8,7 @@ #------------------------------------------------------------------------------- # version of SuiteSparse:GraphBLAS -set ( GraphBLAS_DATE "Jan 1, 2024" ) +set ( GraphBLAS_DATE "Jan XX, 2024" ) # FIXME for 7.5.0 set ( GraphBLAS_VERSION_MAJOR 9 CACHE STRING "" FORCE ) set ( GraphBLAS_VERSION_MINOR 0 CACHE STRING "" FORCE ) set ( GraphBLAS_VERSION_SUB 0 CACHE STRING "" FORCE ) diff --git a/KLU/Config/KLUConfig.cmake.in b/KLU/Config/KLUConfig.cmake.in index 9005332dda..7e1d40acc6 100644 --- a/KLU/Config/KLUConfig.cmake.in +++ b/KLU/Config/KLUConfig.cmake.in @@ -35,8 +35,6 @@ set ( KLU_VERSION_MINOR @KLU_VERSION_MINOR@ ) set ( KLU_VERSION_PATCH @KLU_VERSION_SUB@ ) set ( KLU_VERSION "@KLU_VERSION_MAJOR@.@KLU_VERSION_MINOR@.@KLU_VERSION_SUB@" ) -include ( ${CMAKE_CURRENT_LIST_DIR}/KLUTargets.cmake ) - # Check for dependent targets include ( CMakeFindDependencyMacro ) @@ -103,6 +101,9 @@ if ( NOT SuiteSparse_config_FOUND OR NOT BTF_FOUND OR NOT AMD_FOUND OR NOT COLAM endif ( ) +# Import target +include ( ${CMAKE_CURRENT_LIST_DIR}/KLUTargets.cmake ) + # The following is only for backward compatibility with FindKLU. set ( _target_shared SuiteSparse::KLU ) diff --git a/KLU/Doc/KLU_UserGuide.pdf b/KLU/Doc/KLU_UserGuide.pdf index ed61e78a72..e727526be6 100644 Binary files a/KLU/Doc/KLU_UserGuide.pdf and b/KLU/Doc/KLU_UserGuide.pdf differ diff --git a/KLU/MATLAB/klu_make.m b/KLU/MATLAB/klu_make.m index 26bfc1e836..29fedd61f4 100644 --- a/KLU/MATLAB/klu_make.m +++ b/KLU/MATLAB/klu_make.m @@ -31,6 +31,11 @@ d = ['-silent ' d] ; end +if (ispc) + % MSVC does not define ssize_t + d = [d ' -DNO_SSIZE_T'] ; +end + fprintf ('Compiling KLU ') ; kk = 0 ; diff --git a/LAGraph/CMakeLists.txt b/LAGraph/CMakeLists.txt index 975582e662..2a208ef32f 100644 --- a/LAGraph/CMakeLists.txt +++ b/LAGraph/CMakeLists.txt @@ -39,10 +39,10 @@ cmake_minimum_required ( VERSION 3.20 ) # LAGraph can be built stand-alone # version of LAGraph -set ( LAGraph_DATE "Dec 30, 2023" ) +set ( LAGraph_DATE "Jan XX, 2024" ) set ( LAGraph_VERSION_MAJOR 1 CACHE STRING "" FORCE ) set ( LAGraph_VERSION_MINOR 1 CACHE STRING "" FORCE ) -set ( LAGraph_VERSION_SUB 0 CACHE STRING "" FORCE ) +set ( LAGraph_VERSION_SUB 1 CACHE STRING "" FORCE ) message ( STATUS "Building LAGraph version: v" ${LAGraph_VERSION_MAJOR}. @@ -167,7 +167,7 @@ if ( COVERAGE ) message ( STATUS "OpenMP disabled for test coverage" ) else ( ) if ( LAGRAPH_USE_OPENMP ) - find_package ( OpenMP GLOBAL ) + find_package ( OpenMP COMPONENTS C GLOBAL ) if ( OpenMP_C_FOUND AND BUILD_STATIC_LIBS ) list ( APPEND LAGRAPH_STATIC_LIBS ${OpenMP_C_LIBRARIES} ) endif ( ) diff --git a/LAGraph/ChangeLog b/LAGraph/ChangeLog index c88d5f479d..fab3529f24 100644 --- a/LAGraph/ChangeLog +++ b/LAGraph/ChangeLog @@ -1,3 +1,7 @@ +Jan XX, 2024: version 1.1.1 FIXME for 7.5.0 + + * minor update to build system + Dec 30, 2023: version 1.1.0 * major change to build system: by Markus Mützel diff --git a/LAGraph/config/LAGraphConfig.cmake.in b/LAGraph/config/LAGraphConfig.cmake.in index 96ae114d08..ffa6a0e344 100644 --- a/LAGraph/config/LAGraphConfig.cmake.in +++ b/LAGraph/config/LAGraphConfig.cmake.in @@ -53,7 +53,7 @@ endif ( ) # Look for OpenMP if ( @LAGRAPH_HAS_OPENMP@ AND NOT OpenMP_C_FOUND ) - find_dependency ( OpenMP ) + find_dependency ( OpenMP COMPONENTS C ) if ( NOT OpenMP_C_FOUND ) set ( _dependencies_found OFF ) endif ( ) diff --git a/LAGraph/include/LAGraph.h b/LAGraph/include/LAGraph.h index 46a4f45a6d..e31b0c5efd 100644 --- a/LAGraph/include/LAGraph.h +++ b/LAGraph/include/LAGraph.h @@ -37,10 +37,10 @@ // See also the LAGraph_Version utility method, which returns these values. // These definitions are derived from LAGraph/CMakeLists.txt. -#define LAGRAPH_DATE "Dec 30, 2023" +#define LAGRAPH_DATE "Jan XX, 2024" #define LAGRAPH_VERSION_MAJOR 1 #define LAGRAPH_VERSION_MINOR 1 -#define LAGRAPH_VERSION_UPDATE 0 +#define LAGRAPH_VERSION_UPDATE 1 //============================================================================== // include files and helper macros diff --git a/ParU/CMakeLists.txt b/ParU/CMakeLists.txt index f6c10f87fc..6c310e2fe2 100644 --- a/ParU/CMakeLists.txt +++ b/ParU/CMakeLists.txt @@ -13,10 +13,10 @@ # cmake 3.22 is required to find the BLAS in SuiteSparse_config cmake_minimum_required ( VERSION 3.22 ) -set ( PARU_DATE "Dec 30, 2023" ) +set ( PARU_DATE "Jan XX, 2024" ) # FIXME for 7.5.0 set ( PARU_VERSION_MAJOR 0 CACHE STRING "" FORCE ) set ( PARU_VERSION_MINOR 1 CACHE STRING "" FORCE ) -set ( PARU_VERSION_UPDATE 0 CACHE STRING "" FORCE ) +set ( PARU_VERSION_UPDATE 1 CACHE STRING "" FORCE ) message ( STATUS "Building PARU version: v" ${PARU_VERSION_MAJOR}. @@ -61,7 +61,7 @@ endif ( ) if ( PARU_USE_OPENMP ) # OpenMP 4.5 or later is required - find_package ( OpenMP GLOBAL ) + find_package ( OpenMP COMPONENTS C CXX GLOBAL ) if ( OpenMP_CXX_FOUND AND OpenMP_C_FOUND ) set ( PARU_HAS_OPENMP ON ) if (( OpenMP_CXX_VERSION VERSION_LESS 4.5 ) OR @@ -96,16 +96,16 @@ endif ( ) #------------------------------------------------------------------------------- if ( NOT SUITESPARSE_ROOT_CMAKELISTS ) - find_package ( SuiteSparse_config 7.4.0 + find_package ( SuiteSparse_config 7.5.0 PATHS ${CMAKE_SOURCE_DIR}/../SuiteSparse_config/build NO_DEFAULT_PATH ) if ( NOT TARGET SuiteSparse::SuiteSparseConfig ) - find_package ( SuiteSparse_config 7.4.0 REQUIRED ) + find_package ( SuiteSparse_config 7.5.0 REQUIRED ) endif ( ) - find_package ( CHOLMOD 5.1.0 + find_package ( CHOLMOD 5.1.1 PATHS ${CMAKE_SOURCE_DIR}/../CHOLMOD/build NO_DEFAULT_PATH ) if ( NOT CHOLMOD_FOUND ) - find_package ( CHOLMOD 5.1.0 REQUIRED ) + find_package ( CHOLMOD 5.1.1 REQUIRED ) endif ( ) find_package ( UMFPACK 6.3.0 diff --git a/ParU/Config/ParUConfig.cmake.in b/ParU/Config/ParUConfig.cmake.in index 9aa2f94c5e..202bfc3edf 100644 --- a/ParU/Config/ParUConfig.cmake.in +++ b/ParU/Config/ParUConfig.cmake.in @@ -88,6 +88,14 @@ if ( NOT SuiteSparse_config_FOUND OR NOT CHOLMOD_FOUND OR NOT UMFPACK_FOUND ) set ( _dependencies_found OFF ) endif ( ) +# Look for OpenMP +if ( @PARU_HAS_OPENMP@ AND NOT OpenMP_CXX_FOUND ) + find_dependency ( OpenMP COMPONENTS CXX ) + if ( NOT OpenMP_CXX_FOUND ) + set ( _dependencies_found OFF ) + endif ( ) +endif ( ) + if ( NOT _dependencies_found ) set ( ParU_FOUND OFF ) return ( ) @@ -96,6 +104,31 @@ endif ( ) # Import target include ( ${CMAKE_CURRENT_LIST_DIR}/ParUTargets.cmake ) +if ( @PARU_HAS_OPENMP@ ) + if ( TARGET SuiteSparse::ParU ) + get_property ( _paru_aliased TARGET SuiteSparse::ParU + PROPERTY ALIASED_TARGET ) + if ( "${_paru_aliased}" STREQUAL "" ) + target_include_directories ( SuiteSparse::ParU SYSTEM AFTER INTERFACE + "$" ) + else ( ) + target_include_directories ( ${_paru_aliased} SYSTEM AFTER INTERFACE + "$" ) + endif ( ) + endif ( ) + if ( TARGET SuiteSparse::ParU_static ) + get_property ( _paru_aliased TARGET SuiteSparse::ParU_static + PROPERTY ALIASED_TARGET ) + if ( "${_paru_aliased}" STREQUAL "" ) + target_include_directories ( SuiteSparse::ParU_static SYSTEM AFTER INTERFACE + "$" ) + else ( ) + target_include_directories ( ${_paru_aliased} SYSTEM AFTER INTERFACE + "$" ) + endif ( ) + endif ( ) +endif ( ) + # The following is only for backward compatibility with FindParU. set ( _target_shared SuiteSparse::ParU ) diff --git a/ParU/Config/ParU_definitions.h.in b/ParU/Config/ParU_definitions.h.in index 173c60e196..e31df1cd25 100644 --- a/ParU/Config/ParU_definitions.h.in +++ b/ParU/Config/ParU_definitions.h.in @@ -31,8 +31,8 @@ typedef enum ParU_Ret #define PARU_VERSION_UPDATE @PARU_VERSION_UPDATE@ #if !defined (SUITESPARSE_VERSION) || \ - (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,4)) -#error "ParU @PARU_VERSION_MAJOR@.@PARU_VERSION_MINOR@.@PARU_VERSION_SUB@ requires SuiteSparse_config 7.4.0 or later" + (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,5)) +#error "ParU @PARU_VERSION_MAJOR@.@PARU_VERSION_MINOR@.@PARU_VERSION_SUB@ requires SuiteSparse_config 7.5.0 or later" #endif #if UMFPACK_VER < SUITESPARSE_VER_CODE(6,3) diff --git a/ParU/Doc/ChangeLog b/ParU/Doc/ChangeLog index 372aa249bc..6b24bc8dbd 100644 --- a/ParU/Doc/ChangeLog +++ b/ParU/Doc/ChangeLog @@ -1,3 +1,7 @@ +Jan XX, 2024: version 0.1.1 FIXME for 7.5.0 + + * minor update to build system + Dec 30, 2023: version 0.1.0 * first release: in SuiteSparse 7.4.0 diff --git a/ParU/Doc/paru_user_guide.pdf b/ParU/Doc/paru_user_guide.pdf index 5b04cab087..acabbc1501 100644 Binary files a/ParU/Doc/paru_user_guide.pdf and b/ParU/Doc/paru_user_guide.pdf differ diff --git a/ParU/Doc/paru_version.tex b/ParU/Doc/paru_version.tex index f95c501d51..f3871f0deb 100644 --- a/ParU/Doc/paru_version.tex +++ b/ParU/Doc/paru_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/ParU -\date{VERSION 0.1.0, Dec 30, 2023} +\date{VERSION 0.1.1, Jan XX, 2024} diff --git a/ParU/Include/ParU_definitions.h b/ParU/Include/ParU_definitions.h index cc2ca2d88c..03cb5e4ea1 100644 --- a/ParU/Include/ParU_definitions.h +++ b/ParU/Include/ParU_definitions.h @@ -25,14 +25,14 @@ typedef enum ParU_Ret #define PARU_MEM_CHUNK (1024*1024) -#define PARU_DATE "Dec 30, 2023" +#define PARU_DATE "Jan XX, 2024" #define PARU_VERSION_MAJOR 0 #define PARU_VERSION_MINOR 1 -#define PARU_VERSION_UPDATE 0 +#define PARU_VERSION_UPDATE 1 #if !defined (SUITESPARSE_VERSION) || \ - (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,4)) -#error "ParU 0.1. requires SuiteSparse_config 7.4.0 or later" + (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,5)) +#error "ParU 0.1. requires SuiteSparse_config 7.5.0 or later" #endif #if UMFPACK_VER < SUITESPARSE_VER_CODE(6,3) diff --git a/ParU/MATLAB/paru_make.m b/ParU/MATLAB/paru_make.m index 6a5350f25d..72f9aec9ea 100644 --- a/ParU/MATLAB/paru_make.m +++ b/ParU/MATLAB/paru_make.m @@ -60,6 +60,11 @@ % use all of CHOLMOD except for the Modify module flags = [flags ' -DNMODIFY -DBLAS64' ] ; +if (ispc) + % MSVC does not define ssize_t + flags = [flags ' -DNO_SSIZE_T'] ; +end + suitesparse_src = { ... '../../SuiteSparse_config/SuiteSparse_config', ... '../../AMD/Source/amd_l1', ... diff --git a/README.md b/README.md index 92c587a3e1..59214d781c 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ SuiteSparse: A Suite of Sparse matrix packages at http://suitesparse.com ----------------------------------------------------------------------------- -Jan 1, 2024, SuiteSparse VERSION 7.5.0 +Jan XX, 2024, SuiteSparse VERSION 7.5.0 SuiteSparse is a set of sparse-matrix-related packages written or co-authored by Tim Davis, available at https://github.com/DrTimothyAldenDavis/SuiteSparse . diff --git a/SPQR/CMakeLists.txt b/SPQR/CMakeLists.txt index e1f49e517b..9fc9d0baaa 100644 --- a/SPQR/CMakeLists.txt +++ b/SPQR/CMakeLists.txt @@ -13,10 +13,10 @@ # cmake 3.22 is required to find the BLAS in SuiteSparsePolicy.cmake cmake_minimum_required ( VERSION 3.22 ) -set ( SPQR_DATE "Dec 30, 2023" ) +set ( SPQR_DATE "Jan XX, 2023" ) # FIXME for 7.5.0 set ( SPQR_VERSION_MAJOR 4 CACHE STRING "" FORCE ) set ( SPQR_VERSION_MINOR 3 CACHE STRING "" FORCE ) -set ( SPQR_VERSION_SUB 0 CACHE STRING "" FORCE ) +set ( SPQR_VERSION_SUB 1 CACHE STRING "" FORCE ) message ( STATUS "Building SPQR version: v" ${SPQR_VERSION_MAJOR}. @@ -45,16 +45,16 @@ include ( SuiteSparsePolicy ) #------------------------------------------------------------------------------- if ( NOT SUITESPARSE_ROOT_CMAKELISTS ) - find_package ( SuiteSparse_config 7.4.0 + find_package ( SuiteSparse_config 7.5.0 PATHS ${CMAKE_SOURCE_DIR}/../SuiteSparse_config/build NO_DEFAULT_PATH ) if ( NOT TARGET SuiteSparse::SuiteSparseConfig ) - find_package ( SuiteSparse_config 7.4.0 REQUIRED ) + find_package ( SuiteSparse_config 7.5.0 REQUIRED ) endif ( ) - find_package ( CHOLMOD 5.1.0 + find_package ( CHOLMOD 5.1.1 PATHS ${CMAKE_SOURCE_DIR}/../CHOLMOD/build NO_DEFAULT_PATH ) if ( NOT TARGET SuiteSparse::CHOLMOD ) - find_package ( CHOLMOD 5.1.0 REQUIRED ) + find_package ( CHOLMOD 5.1.1 REQUIRED ) endif ( ) endif ( ) @@ -191,6 +191,7 @@ if ( SPQR_HAS_CUDA ) if ( BUILD_STATIC_LIBS ) target_link_libraries ( SPQR_static PRIVATE GPUQREngine_static GPURuntime_static ) target_compile_definitions ( SPQR_static PUBLIC "SPQR_HAS_CUDA" ) + set ( SPQR_STATIC_MODULES "${SPQR_STATIC_MODULES} GPUQREngine SuiteSparse_GPURuntime" ) endif ( ) add_subdirectory ( SPQRGPU ) else ( ) diff --git a/SPQR/Config/SPQR.pc.in b/SPQR/Config/SPQR.pc.in index 2d8a907eef..e5f600f7a2 100644 --- a/SPQR/Config/SPQR.pc.in +++ b/SPQR/Config/SPQR.pc.in @@ -13,7 +13,7 @@ Name: SPQR URL: https://github.com/DrTimothyAldenDavis/SuiteSparse Description: Multithreaded, multifrontal, rank-revealing sparse QR factorization method in SuiteSparse Version: @SPQR_VERSION_MAJOR@.@SPQR_VERSION_MINOR@.@SPQR_VERSION_SUB@ -Requires.private: SuiteSparse_config CHOLMOD +Requires.private: SuiteSparse_config CHOLMOD @SPQR_STATIC_MODULES@ Libs: -L${libdir} -l@SUITESPARSE_LIB_BASE_NAME@ Libs.private: @SPQR_STATIC_LIBS@ Cflags: -I${includedir} @SPQR_CFLAGS@ diff --git a/SPQR/Config/SuiteSparseQR_definitions.h.in b/SPQR/Config/SuiteSparseQR_definitions.h.in index 6938e55b30..30c9f5231e 100644 --- a/SPQR/Config/SuiteSparseQR_definitions.h.in +++ b/SPQR/Config/SuiteSparseQR_definitions.h.in @@ -73,8 +73,8 @@ #define SPQR_VERSION SPQR_VER_CODE(SPQR_MAIN_VERSION,SPQR_SUB_VERSION) #if !defined (SUITESPARSE_VERSION) || \ - (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,4)) -#error "SPQR @SPQR_VERSION_MAJOR@.@SPQR_VERSION_MINOR@.@SPQR_VERSION_SUB@ requires SuiteSparse_config 7.4.0 or later" + (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,5)) +#error "SPQR @SPQR_VERSION_MAJOR@.@SPQR_VERSION_MINOR@.@SPQR_VERSION_SUB@ requires SuiteSparse_config 7.5.0 or later" #endif #if (CHOLMOD_VERSION < SUITESPARSE_VER_CODE(5,1)) diff --git a/SPQR/Doc/ChangeLog b/SPQR/Doc/ChangeLog index e00b72cf72..ec683b2f38 100644 --- a/SPQR/Doc/ChangeLog +++ b/SPQR/Doc/ChangeLog @@ -1,3 +1,8 @@ +Jan XX, 2024: version 4.3.1 FIXME for 7.5.0 + + * MATLAB interface: add -DNO_SSIZE_T for Windows + * minor updates to build system + Dec 30, 2023: version 4.3.0 * major change to build system: by Markus Mützel diff --git a/SPQR/Doc/spqr_user_guide.pdf b/SPQR/Doc/spqr_user_guide.pdf index 3feb9b8142..f416c43551 100644 Binary files a/SPQR/Doc/spqr_user_guide.pdf and b/SPQR/Doc/spqr_user_guide.pdf differ diff --git a/SPQR/Doc/spqr_version.tex b/SPQR/Doc/spqr_version.tex index 5d1ee64638..3675179ad5 100644 --- a/SPQR/Doc/spqr_version.tex +++ b/SPQR/Doc/spqr_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/SPQR -\date{VERSION 4.3.0, Dec 30, 2023} +\date{VERSION 4.3.1, Jan XX, 2023} diff --git a/SPQR/GPUQREngine/CMakeLists.txt b/SPQR/GPUQREngine/CMakeLists.txt index 686f0fbfa0..cd25523dbe 100644 --- a/SPQR/GPUQREngine/CMakeLists.txt +++ b/SPQR/GPUQREngine/CMakeLists.txt @@ -43,10 +43,10 @@ set ( DEMO_OK false ) if ( NOT SUITESPARSE_ROOT_CMAKELISTS AND SUITESPARSE_DEMOS AND DEMO_OK ) # for the demo only: - find_package ( CHOLMOD 5.1.0 + find_package ( CHOLMOD 5.1.1 PATHS ${CMAKE_SOURCE_DIR}/../../CHOLMOD/build NO_DEFAULT_PATH ) if ( NOT TARGET SuiteSparse::CHOLMOD ) - find_package ( CHOLMOD 5.1.0 ) + find_package ( CHOLMOD 5.1.1 ) endif ( ) endif ( ) @@ -215,11 +215,20 @@ if ( NOT MSVC ) else ( ) set ( includedir "\${prefix}/${SUITESPARSE_INCLUDEDIR}") endif ( ) + if ( BUILD_SHARED_LIBS ) + set ( SUITESPARSE_LIB_BASE_NAME $ ) + else ( ) + set ( SUITESPARSE_LIB_BASE_NAME $ ) + endif ( ) configure_file ( Config/GPUQREngine.pc.in - GPUQREngine.pc + GPUQREngine.pc.out @ONLY NEWLINE_STYLE LF ) + file ( GENERATE + OUTPUT GPUQREngine.pc + INPUT ${CMAKE_CURRENT_BINARY_DIR}/GPUQREngine.pc.out + NEWLINE_STYLE LF ) install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/GPUQREngine.pc DESTINATION ${SUITESPARSE_PKGFILEDIR}/pkgconfig ) diff --git a/SPQR/GPUQREngine/Config/GPUQREngine.pc.in b/SPQR/GPUQREngine/Config/GPUQREngine.pc.in index 2ff8ca6f70..f5a534fde0 100644 --- a/SPQR/GPUQREngine/Config/GPUQREngine.pc.in +++ b/SPQR/GPUQREngine/Config/GPUQREngine.pc.in @@ -13,5 +13,5 @@ Name: GPUQREngine URL: https://github.com/DrTimothyAldenDavis/SuiteSparse Description: GPU-accelerated QR factorization engine supporting SuiteSparseQR in SuiteSparse Version: @SPQR_VERSION_MAJOR@.@SPQR_VERSION_MINOR@.@SPQR_VERSION_SUB@ -Libs: -L${libdir} -lgpuqrengine@CMAKE_RELEASE_POSTFIX@ +Libs: -L${libdir} -l@SUITESPARSE_LIB_BASE_NAME@ Cflags: -I${includedir} diff --git a/SPQR/GPURuntime/CMakeLists.txt b/SPQR/GPURuntime/CMakeLists.txt index b3ab4bcdb5..60210801b8 100644 --- a/SPQR/GPURuntime/CMakeLists.txt +++ b/SPQR/GPURuntime/CMakeLists.txt @@ -23,7 +23,7 @@ message ( STATUS "Building SPQR/GPURUNTIME version: v" project ( suitesparse_gpuruntime VERSION "${SPQR_VERSION_MAJOR}.${SPQR_VERSION_MINOR}.${SPQR_VERSION_SUB}" - LANGUAGES C CXX CUDA ) + LANGUAGES CXX ) #------------------------------------------------------------------------------- # SuiteSparse policies @@ -190,11 +190,20 @@ if ( NOT MSVC ) else ( ) set ( includedir "\${prefix}/${SUITESPARSE_INCLUDEDIR}") endif ( ) + if ( BUILD_SHARED_LIBS ) + set ( SUITESPARSE_LIB_BASE_NAME $ ) + else ( ) + set ( SUITESPARSE_LIB_BASE_NAME $ ) + endif ( ) configure_file ( Config/SuiteSparse_GPURuntime.pc.in - SuiteSparse_GPURuntime.pc + SuiteSparse_GPURuntime.pc.out @ONLY NEWLINE_STYLE LF ) + file ( GENERATE + OUTPUT SuiteSparse_GPURuntime.pc + INPUT ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_GPURuntime.pc.out + NEWLINE_STYLE LF ) install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_GPURuntime.pc DESTINATION ${SUITESPARSE_PKGFILEDIR}/pkgconfig ) diff --git a/SPQR/GPURuntime/Config/SuiteSparse_GPURuntime.pc.in b/SPQR/GPURuntime/Config/SuiteSparse_GPURuntime.pc.in index 9da6885dd5..273dbdc5a6 100644 --- a/SPQR/GPURuntime/Config/SuiteSparse_GPURuntime.pc.in +++ b/SPQR/GPURuntime/Config/SuiteSparse_GPURuntime.pc.in @@ -14,5 +14,5 @@ URL: https://github.com/DrTimothyAldenDavis/SuiteSparse Description: Helper functions for the GPU in SuiteSparse Version: @SPQR_VERSION_MAJOR@.@SPQR_VERSION_MINOR@.@SPQR_VERSION_SUB@ Requires.private: SuiteSparse_config -Libs: -L${libdir} -lsuitesparse_gpuruntime@CMAKE_RELEASE_POSTFIX@ +Libs: -L${libdir} -l@SUITESPARSE_LIB_BASE_NAME@ Cflags: -I${includedir} diff --git a/SPQR/Include/SuiteSparseQR_definitions.h b/SPQR/Include/SuiteSparseQR_definitions.h index 54aafa5e97..20ab95d6bc 100644 --- a/SPQR/Include/SuiteSparseQR_definitions.h +++ b/SPQR/Include/SuiteSparseQR_definitions.h @@ -64,21 +64,21 @@ #endif */ -#define SPQR_DATE "Dec 30, 2023" +#define SPQR_DATE "Jan XX, 2023" #define SPQR_MAIN_VERSION 4 #define SPQR_SUB_VERSION 3 -#define SPQR_SUBSUB_VERSION 0 +#define SPQR_SUBSUB_VERSION 1 #define SPQR_VER_CODE(main,sub) SUITESPARSE_VER_CODE(main,sub) #define SPQR_VERSION SPQR_VER_CODE(SPQR_MAIN_VERSION,SPQR_SUB_VERSION) #if !defined (SUITESPARSE_VERSION) || \ - (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,4)) -#error "SPQR 4.3.0 requires SuiteSparse_config 7.4.0 or later" + (SUITESPARSE_VERSION < SUITESPARSE_VER_CODE(7,5)) +#error "SPQR 4.3.1 requires SuiteSparse_config 7.5.0 or later" #endif #if (CHOLMOD_VERSION < SUITESPARSE_VER_CODE(5,1)) -#error "SPQR 4.3.0 requires CHOLMOD 5.1.0 or later" +#error "SPQR 4.3.1 requires CHOLMOD 5.1.0 or later" #endif #endif diff --git a/SPQR/MATLAB/spqr_make.m b/SPQR/MATLAB/spqr_make.m index ff0c04b2f6..715b82ae91 100644 --- a/SPQR/MATLAB/spqr_make.m +++ b/SPQR/MATLAB/spqr_make.m @@ -25,16 +25,6 @@ v = version ; fprintf ('Compiling SuiteSparseQR on MATLAB Version %s\n', v); -try - % ispc does not appear in MATLAB 5.3 - pc = ispc ; - mac = ismac ; -catch %#ok - % if ispc fails, assume we are on a Windows PC if it's not unix - pc = ~isunix ; - mac = 0 ; -end - flags = '' ; is64 = (~isempty (strfind (computer, '64'))) ; if (is64) @@ -49,6 +39,11 @@ flags = ['-silent ' flags] ; end +if (ispc) + % MSVC does not define ssize_t + flags = [flags ' -DNO_SSIZE_T'] ; +end + include = '-DNMATRIXOPS -DNMODIFY -I. -I../../AMD/Include -I../../COLAMD/Include -I../../CHOLMOD/Include -I../Include -I../../SuiteSparse_config' ; % Determine if METIS is available (not available on Windows) @@ -71,7 +66,7 @@ % find the LAPACK and BLAS libraries, which is a real portability nightmare. % The correct option is highly variable and depends on the MATLAB version. -if (pc) +if (ispc) % BLAS/LAPACK functions have no underscore on Windows flags = [flags ' -DBLAS_NO_UNDERSCORE'] ; if (verLessThan ('matlab', '6.5')) @@ -110,7 +105,7 @@ % GPU not yet supported for the spqr MATLAB mexFunction % flags = [flags ' -DSPQR_HAS_CUDA'] ; -if (~(pc || mac)) +if (~(ispc || ismac)) % for POSIX timing routine lib = [lib ' -lrt'] ; end @@ -435,7 +430,7 @@ % SuiteSparseQR mexFunctions spqr_mex_cpp_src = { 'spqr', 'spqr_qmult', 'spqr_solve', 'spqr_singletons' } ; -if (pc) +if (ispc) obj_extension = '.obj' ; else obj_extension = '.o' ; diff --git a/SuiteSparse_config/CMakeLists.txt b/SuiteSparse_config/CMakeLists.txt index f72cb7d831..ed94857adb 100644 --- a/SuiteSparse_config/CMakeLists.txt +++ b/SuiteSparse_config/CMakeLists.txt @@ -15,7 +15,7 @@ cmake_minimum_required ( VERSION 3.22 ) # version of both SuiteSparse and SuiteSparse_config -set ( SUITESPARSE_DATE "Jan 1, 2024" ) +set ( SUITESPARSE_DATE "Jan XX, 2024" ) # FIXME for 7.5.0 set ( SUITESPARSE_VERSION_MAJOR 7 ) set ( SUITESPARSE_VERSION_MINOR 5 ) set ( SUITESPARSE_VERSION_SUB 0 ) @@ -70,7 +70,7 @@ if ( NOT SUITESPARSE_USE_OPENMP ) set ( SUITESPARSE_CONFIG_USE_OPENMP "OFF" CACHE STRING "" FORCE ) endif ( ) if ( SUITESPARSE_CONFIG_USE_OPENMP OR SUITESPARSE_USE_OPENMP ) - find_package ( OpenMP GLOBAL ) + find_package ( OpenMP COMPONENTS C GLOBAL ) else ( ) # OpenMP has been disabled set ( OpenMP_C_FOUND OFF ) @@ -177,6 +177,7 @@ if ( NOT WIN32 ) endif ( ) if ( BUILD_STATIC_LIBS ) target_link_libraries ( SuiteSparseConfig_static PUBLIC m ) + list ( APPEND SUITESPARSE_CONFIG_STATIC_LIBS "m" ) endif ( ) endif ( ) @@ -194,6 +195,7 @@ if ( SUITESPARSE_CONFIG_USE_OPENMP ) target_link_libraries ( SuiteSparseConfig_static PRIVATE OpenMP::OpenMP_C ) target_include_directories ( SuiteSparseConfig_static SYSTEM AFTER INTERFACE "$" ) + list ( APPEND SUITESPARSE_CONFIG_STATIC_LIBS ${OpenMP_C_LIBRARIES} ) endif ( ) endif ( ) @@ -263,6 +265,33 @@ install ( FILES #------------------------------------------------------------------------------- if ( NOT MSVC ) + # This might be something like: + # /usr/lib/libgomp.so;/usr/lib/libpthread.a;m + # convert to -l flags for pkg-config, i.e.: "-lgomp -lpthread -lm" + set ( SUITESPARSE_CONFIG_STATIC_LIBS_LIST ${SUITESPARSE_CONFIG_STATIC_LIBS} ) + set ( SUITESPARSE_CONFIG_STATIC_LIBS "" ) + foreach ( _lib ${SUITESPARSE_CONFIG_STATIC_LIBS_LIST} ) + string ( FIND ${_lib} "." _pos REVERSE ) + if ( ${_pos} EQUAL "-1" ) + set ( SUITESPARSE_CONFIG_STATIC_LIBS "${SUITESPARSE_CONFIG_STATIC_LIBS} -l${_lib}" ) + continue () + endif ( ) + set ( _kinds "SHARED" "STATIC" ) + if ( WIN32 ) + list ( PREPEND _kinds "IMPORT" ) + endif ( ) + foreach ( _kind IN LISTS _kinds ) + set ( _regex ".*\\/(lib)?([^\\.]*)(${CMAKE_${_kind}_LIBRARY_SUFFIX})" ) + if ( ${_lib} MATCHES ${_regex} ) + string ( REGEX REPLACE ${_regex} "\\2" _libname ${_lib} ) + if ( NOT "${_libname}" STREQUAL "" ) + set ( SUITESPARSE_CONFIG_STATIC_LIBS "${SUITESPARSE_CONFIG_STATIC_LIBS} -l${_libname}" ) + break () + endif ( ) + endif ( ) + endforeach ( ) + endforeach ( ) + set ( prefix "${CMAKE_INSTALL_PREFIX}" ) set ( exec_prefix "\${prefix}" ) cmake_path ( IS_ABSOLUTE SUITESPARSE_LIBDIR SUITESPARSE_LIBDIR_IS_ABSOLUTE ) diff --git a/SuiteSparse_config/Config/SuiteSparse_config.pc.in b/SuiteSparse_config/Config/SuiteSparse_config.pc.in index f83cfc0b03..f082c22602 100644 --- a/SuiteSparse_config/Config/SuiteSparse_config.pc.in +++ b/SuiteSparse_config/Config/SuiteSparse_config.pc.in @@ -12,4 +12,5 @@ URL: https://github.com/DrTimothyAldenDavis/SuiteSparse Description: Configuration for SuiteSparse Version: @SUITESPARSE_VERSION_MAJOR@.@SUITESPARSE_VERSION_MINOR@.@SUITESPARSE_VERSION_SUB@ Libs: -L${libdir} -l@SUITESPARSE_LIB_BASE_NAME@ +Libs.private: @SUITESPARSE_CONFIG_STATIC_LIBS@ Cflags: -I${includedir} diff --git a/SuiteSparse_config/Config/SuiteSparse_configConfig.cmake.in b/SuiteSparse_config/Config/SuiteSparse_configConfig.cmake.in index fd1a134fb5..3a40b9d52a 100644 --- a/SuiteSparse_config/Config/SuiteSparse_configConfig.cmake.in +++ b/SuiteSparse_config/Config/SuiteSparse_configConfig.cmake.in @@ -41,7 +41,7 @@ set ( _dependencies_found ON ) # Look for OpenMP if ( @SUITESPARSE_HAS_OPENMP@ AND NOT OpenMP_C_FOUND ) - find_dependency ( OpenMP ) + find_dependency ( OpenMP COMPONENTS C ) if ( NOT OpenMP_C_FOUND ) set ( _dependencies_found OFF ) endif ( ) @@ -53,6 +53,7 @@ if ( NOT _dependencies_found ) endif ( ) +# Import target include ( ${CMAKE_CURRENT_LIST_DIR}/SuiteSparse_configTargets.cmake ) if ( @SUITESPARSE_HAS_OPENMP@ ) @@ -80,6 +81,7 @@ if ( @SUITESPARSE_HAS_OPENMP@ ) endif ( ) endif ( ) + # The following is only for backward compatibility with FindSuiteSparse_config. set ( _target_shared SuiteSparse::SuiteSparseConfig ) diff --git a/SuiteSparse_config/SuiteSparse_config.h b/SuiteSparse_config/SuiteSparse_config.h index 057d17fd04..de047c538d 100644 --- a/SuiteSparse_config/SuiteSparse_config.h +++ b/SuiteSparse_config/SuiteSparse_config.h @@ -421,7 +421,7 @@ int SuiteSparse_version // returns SUITESPARSE_VERSION #define SUITESPARSE_HAS_VERSION_FUNCTION -#define SUITESPARSE_DATE "Jan 1, 2024" +#define SUITESPARSE_DATE "Jan XX, 2024" #define SUITESPARSE_MAIN_VERSION 7 #define SUITESPARSE_SUB_VERSION 5 #define SUITESPARSE_SUBSUB_VERSION 0 diff --git a/UMFPACK/Config/UMFPACKConfig.cmake.in b/UMFPACK/Config/UMFPACKConfig.cmake.in index 10c4c11226..11716a57d8 100644 --- a/UMFPACK/Config/UMFPACKConfig.cmake.in +++ b/UMFPACK/Config/UMFPACKConfig.cmake.in @@ -92,6 +92,8 @@ if ( NOT SuiteSparse_config_FOUND OR NOT AMD_FOUND return ( ) endif ( ) + +# Import target include ( ${CMAKE_CURRENT_LIST_DIR}/UMFPACKTargets.cmake ) # The following is only for backward compatibility with FindUMFPACK. diff --git a/UMFPACK/MATLAB/umfpack_make.m b/UMFPACK/MATLAB/umfpack_make.m index 4f0ee83ea3..5cdbdc5083 100644 --- a/UMFPACK/MATLAB/umfpack_make.m +++ b/UMFPACK/MATLAB/umfpack_make.m @@ -34,20 +34,16 @@ flags = ['-silent ' flags] ; end -v = version ; -try - % ispc does not appear in MATLAB 5.3 - pc = ispc ; - mac = ismac ; -catch - % if ispc fails, assume we are on a Windows PC if it's not unix - pc = ~isunix ; - mac = 0 ; +if (ispc) + % MSVC does not define ssize_t + flags = [flags ' -DNO_SSIZE_T'] ; end +v = version ; + fprintf ('Compiling UMFPACK for MATLAB Version %s\n', v) ; -if (pc) +if (ispc) obj = 'obj' ; else obj = 'o' ; @@ -62,7 +58,7 @@ % This is exceedingly ugly. The MATLAB mex command needs to be told where to % find the LAPACK and BLAS libraries, which is a real portability nightmare. -if (pc) +if (ispc) % BLAS/LAPACK functions have no underscore on Windows flags = [flags ' -DBLAS_NO_UNDERSCORE'] ; if (verLessThan ('matlab', '7.5')) @@ -91,7 +87,7 @@ flags = [flags ' -DBLAS32'] ; end -if (~(pc || mac)) +if (~(ispc || ismac)) % for POSIX timing routine lapack = [lapack ' -lrt'] ; end