From ab42fb3032acd29dd12cea7897f85025526a60e6 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Mon, 27 Jan 2025 22:52:41 +0200 Subject: [PATCH] [SuiteSparse] Update and split into sub-packages (v2) (#41929) Co-authored-by: Monica Co-authored-by: Monica --- ports/ceres/0001_cmakelists_fixes.patch | 60 +--- .../0003_fix_exported_ceres_config.patch | 19 +- ports/ceres/vcpkg.json | 10 +- ports/colmap/vcpkg.json | 1 + ports/g2o/portfile.cmake | 1 + ports/g2o/vcpkg.json | 5 +- ports/suitesparse-amd/portfile.cmake | 33 ++ ports/suitesparse-amd/vcpkg.json | 19 ++ ports/suitesparse-btf/portfile.cmake | 36 +++ ports/suitesparse-btf/vcpkg.json | 19 ++ ports/suitesparse-camd/portfile.cmake | 33 ++ ports/suitesparse-camd/vcpkg.json | 19 ++ ports/suitesparse-ccolamd/portfile.cmake | 33 ++ ports/suitesparse-ccolamd/vcpkg.json | 19 ++ ...001-dont-override-cuda-architectures.patch | 47 +++ ports/suitesparse-cholmod/portfile.cmake | 59 ++++ ports/suitesparse-cholmod/vcpkg.json | 71 +++++ ports/suitesparse-colamd/portfile.cmake | 33 ++ ports/suitesparse-colamd/vcpkg.json | 19 ++ .../suitesparse-config/SuiteSparseBLAS.cmake | 9 + ports/suitesparse-config/portfile.cmake | 52 ++++ ports/suitesparse-config/vcpkg.json | 24 ++ .../001-detect-complex-support.patch | 14 + ports/suitesparse-cxsparse/portfile.cmake | 38 +++ ports/suitesparse-cxsparse/vcpkg.json | 19 ++ ports/suitesparse-graphblas/portfile.cmake | 45 +++ ports/suitesparse-graphblas/vcpkg.json | 26 ++ ports/suitesparse-klu/portfile.cmake | 48 +++ ports/suitesparse-klu/vcpkg.json | 30 ++ ports/suitesparse-lagraph/portfile.cmake | 42 +++ ports/suitesparse-lagraph/vcpkg.json | 32 ++ ports/suitesparse-ldl/portfile.cmake | 36 +++ ports/suitesparse-ldl/vcpkg.json | 20 ++ ports/suitesparse-mongoose/portfile.cmake | 37 +++ ports/suitesparse-mongoose/vcpkg.json | 24 ++ ports/suitesparse-paru/portfile.cmake | 46 +++ ports/suitesparse-paru/vcpkg.json | 35 +++ ports/suitesparse-rbio/portfile.cmake | 33 ++ ports/suitesparse-rbio/vcpkg.json | 19 ++ ports/suitesparse-spex/portfile.cmake | 45 +++ ports/suitesparse-spex/vcpkg.json | 36 +++ ...001-dont-override-cuda-architectures.patch | 47 +++ ports/suitesparse-spqr/portfile.cmake | 61 ++++ ports/suitesparse-spqr/vcpkg.json | 34 +++ ports/suitesparse-umfpack/portfile.cmake | 45 +++ ports/suitesparse-umfpack/vcpkg.json | 31 ++ ports/suitesparse/FindCXSparse.cmake | 73 ----- ports/suitesparse/build_fixes.patch | 281 ------------------ ports/suitesparse/portfile.cmake | 56 +--- .../vcpkg-cmake-wrapper_cxsparse.cmake | 10 - ports/suitesparse/vcpkg.json | 109 ++++++- scripts/ci.baseline.txt | 13 + scripts/update_suitesparse.py | 120 ++++++++ versions/baseline.json | 82 ++++- versions/c-/ceres.json | 5 + versions/c-/colmap.json | 5 + versions/g-/g2o.json | 5 + versions/s-/suitesparse-amd.json | 9 + versions/s-/suitesparse-btf.json | 9 + versions/s-/suitesparse-camd.json | 9 + versions/s-/suitesparse-ccolamd.json | 9 + versions/s-/suitesparse-cholmod.json | 9 + versions/s-/suitesparse-colamd.json | 9 + versions/s-/suitesparse-config.json | 9 + versions/s-/suitesparse-cxsparse.json | 9 + versions/s-/suitesparse-graphblas.json | 9 + versions/s-/suitesparse-klu.json | 9 + versions/s-/suitesparse-lagraph.json | 9 + versions/s-/suitesparse-ldl.json | 9 + versions/s-/suitesparse-mongoose.json | 9 + versions/s-/suitesparse-paru.json | 9 + versions/s-/suitesparse-rbio.json | 9 + versions/s-/suitesparse-spex.json | 9 + versions/s-/suitesparse-spqr.json | 9 + versions/s-/suitesparse-umfpack.json | 9 + versions/s-/suitesparse.json | 5 + versions/t-/theia.json | 5 + 77 files changed, 1891 insertions(+), 504 deletions(-) create mode 100644 ports/suitesparse-amd/portfile.cmake create mode 100644 ports/suitesparse-amd/vcpkg.json create mode 100644 ports/suitesparse-btf/portfile.cmake create mode 100644 ports/suitesparse-btf/vcpkg.json create mode 100644 ports/suitesparse-camd/portfile.cmake create mode 100644 ports/suitesparse-camd/vcpkg.json create mode 100644 ports/suitesparse-ccolamd/portfile.cmake create mode 100644 ports/suitesparse-ccolamd/vcpkg.json create mode 100644 ports/suitesparse-cholmod/001-dont-override-cuda-architectures.patch create mode 100644 ports/suitesparse-cholmod/portfile.cmake create mode 100644 ports/suitesparse-cholmod/vcpkg.json create mode 100644 ports/suitesparse-colamd/portfile.cmake create mode 100644 ports/suitesparse-colamd/vcpkg.json create mode 100644 ports/suitesparse-config/SuiteSparseBLAS.cmake create mode 100644 ports/suitesparse-config/portfile.cmake create mode 100644 ports/suitesparse-config/vcpkg.json create mode 100644 ports/suitesparse-cxsparse/001-detect-complex-support.patch create mode 100644 ports/suitesparse-cxsparse/portfile.cmake create mode 100644 ports/suitesparse-cxsparse/vcpkg.json create mode 100644 ports/suitesparse-graphblas/portfile.cmake create mode 100644 ports/suitesparse-graphblas/vcpkg.json create mode 100644 ports/suitesparse-klu/portfile.cmake create mode 100644 ports/suitesparse-klu/vcpkg.json create mode 100644 ports/suitesparse-lagraph/portfile.cmake create mode 100644 ports/suitesparse-lagraph/vcpkg.json create mode 100644 ports/suitesparse-ldl/portfile.cmake create mode 100644 ports/suitesparse-ldl/vcpkg.json create mode 100644 ports/suitesparse-mongoose/portfile.cmake create mode 100644 ports/suitesparse-mongoose/vcpkg.json create mode 100644 ports/suitesparse-paru/portfile.cmake create mode 100644 ports/suitesparse-paru/vcpkg.json create mode 100644 ports/suitesparse-rbio/portfile.cmake create mode 100644 ports/suitesparse-rbio/vcpkg.json create mode 100644 ports/suitesparse-spex/portfile.cmake create mode 100644 ports/suitesparse-spex/vcpkg.json create mode 100644 ports/suitesparse-spqr/001-dont-override-cuda-architectures.patch create mode 100644 ports/suitesparse-spqr/portfile.cmake create mode 100644 ports/suitesparse-spqr/vcpkg.json create mode 100644 ports/suitesparse-umfpack/portfile.cmake create mode 100644 ports/suitesparse-umfpack/vcpkg.json delete mode 100644 ports/suitesparse/FindCXSparse.cmake delete mode 100644 ports/suitesparse/build_fixes.patch delete mode 100644 ports/suitesparse/vcpkg-cmake-wrapper_cxsparse.cmake create mode 100755 scripts/update_suitesparse.py create mode 100644 versions/s-/suitesparse-amd.json create mode 100644 versions/s-/suitesparse-btf.json create mode 100644 versions/s-/suitesparse-camd.json create mode 100644 versions/s-/suitesparse-ccolamd.json create mode 100644 versions/s-/suitesparse-cholmod.json create mode 100644 versions/s-/suitesparse-colamd.json create mode 100644 versions/s-/suitesparse-config.json create mode 100644 versions/s-/suitesparse-cxsparse.json create mode 100644 versions/s-/suitesparse-graphblas.json create mode 100644 versions/s-/suitesparse-klu.json create mode 100644 versions/s-/suitesparse-lagraph.json create mode 100644 versions/s-/suitesparse-ldl.json create mode 100644 versions/s-/suitesparse-mongoose.json create mode 100644 versions/s-/suitesparse-paru.json create mode 100644 versions/s-/suitesparse-rbio.json create mode 100644 versions/s-/suitesparse-spex.json create mode 100644 versions/s-/suitesparse-spqr.json create mode 100644 versions/s-/suitesparse-umfpack.json diff --git a/ports/ceres/0001_cmakelists_fixes.patch b/ports/ceres/0001_cmakelists_fixes.patch index e57308a737db26..d2a37d682d8c98 100644 --- a/ports/ceres/0001_cmakelists_fixes.patch +++ b/ports/ceres/0001_cmakelists_fixes.patch @@ -2,63 +2,7 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e49c19e..f8c61d92 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -292,27 +292,28 @@ if (SUITESPARSE) - # built with SuiteSparse support. - - # Check for SuiteSparse and dependencies. -- find_package(SuiteSparse 4.5.6 COMPONENTS CHOLMOD SPQR -- OPTIONAL_COMPONENTS Partition) -- if (SuiteSparse_FOUND) -- set(SuiteSparse_DEPENDENCY "find_dependency(SuiteSparse ${SuiteSparse_VERSION})") -+ find_package(SuiteSparse REQUIRED CONFIG) -+ if (SUITESPARSE_FOUND) -+ set(SuiteSparse_DEPENDENCY "find_dependency(SuiteSparse ${SuiteSparse_VERSION} CONFIG)") - # By default, if all of SuiteSparse's dependencies are found, Ceres is - # built with SuiteSparse support. - message("-- Found SuiteSparse ${SuiteSparse_VERSION}, " - "building with SuiteSparse.") -- -- if (SuiteSparse_NO_CMAKE OR NOT SuiteSparse_DIR) -- install(FILES ${Ceres_SOURCE_DIR}/cmake/FindSuiteSparse.cmake -- ${Ceres_SOURCE_DIR}/cmake/FindMETIS.cmake -- DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR}) -- endif (SuiteSparse_NO_CMAKE OR NOT SuiteSparse_DIR) -- else (SuiteSparse_FOUND) -+ add_library(SuiteSparse::CONFIG ALIAS SuiteSparse::suitesparseconfig) -+ add_library(SuiteSparse::AMD ALIAS SuiteSparse::amd) -+ add_library(SuiteSparse::CAMD ALIAS SuiteSparse::camd) -+ add_library(SuiteSparse::CCOLAMD ALIAS SuiteSparse::ccolamd) -+ add_library(SuiteSparse::COLAMD ALIAS SuiteSparse::colamd) -+ add_library(SuiteSparse::CHOLMOD ALIAS SuiteSparse::cholmod) -+ add_library(SuiteSparse::SPQR ALIAS SuiteSparse::spqr) -+ add_library(METIS::METIS ALIAS metis) -+ else (SUITESPARSE_FOUND) - # Disable use of SuiteSparse if it cannot be found and continue. - message("-- Did not find all SuiteSparse dependencies, disabling " - "SuiteSparse support.") - update_cache_variable(SUITESPARSE OFF) - list(APPEND CERES_COMPILE_OPTIONS CERES_NO_SUITESPARSE) -- endif (SuiteSparse_FOUND) -+ endif (SUITESPARSE_FOUND) - else (SUITESPARSE) - message("-- Building without SuiteSparse.") - list(APPEND CERES_COMPILE_OPTIONS CERES_NO_SUITESPARSE) -@@ -395,9 +396,12 @@ endif() - # GFlags. - if (GFLAGS) - # Don't search with REQUIRED as we can continue without gflags. -- find_package(gflags 2.2.0) -+ find_package(gflags CONFIG REQUIRED) - if (gflags_FOUND) -- if (TARGET gflags) -+ if (TARGET gflags::gflags) -+ if(NOT TARGET gflags) -+ add_library(gflags ALIAS gflags::gflags) -+ endif() - message("-- Found Google Flags (gflags) version ${gflags_VERSION}: ${gflags_DIR}") - else() - message("-- Detected version of gflags: ${gflags_VERSION} does not define " -@@ -430,28 +434,7 @@ if (MINIGLOG) +@@ -430,28 +430,7 @@ if (MINIGLOG) mark_as_advanced(FORCE GLOG_INCLUDE_DIR GLOG_LIBRARY) else (MINIGLOG) @@ -88,7 +32,7 @@ index 8e49c19e..f8c61d92 100644 endif (MINIGLOG) if (NOT SCHUR_SPECIALIZATIONS) -@@ -466,7 +449,7 @@ endif (NOT CUSTOM_BLAS) +@@ -466,7 +445,7 @@ endif (NOT CUSTOM_BLAS) if (BUILD_BENCHMARKS) # Version 1.3 was first to provide import targets diff --git a/ports/ceres/0003_fix_exported_ceres_config.patch b/ports/ceres/0003_fix_exported_ceres_config.patch index 008d798bafd569..b2c098a83f6be5 100644 --- a/ports/ceres/0003_fix_exported_ceres_config.patch +++ b/ports/ceres/0003_fix_exported_ceres_config.patch @@ -2,16 +2,28 @@ diff --git a/cmake/CeresConfig.cmake.in b/cmake/CeresConfig.cmake.in index ceb7e269..5dee7e3c 100644 --- a/cmake/CeresConfig.cmake.in +++ b/cmake/CeresConfig.cmake.in -@@ -195,7 +195,7 @@ set(CERES_EIGEN_VERSION @Eigen3_VERSION@) +@@ -178,7 +178,10 @@ + include(CMakeFindDependencyMacro) + # Optional dependencies + @METIS_DEPENDENCY@ +-@SuiteSparse_DEPENDENCY@ ++if (@SUITESPARSE@) ++ find_dependency(CHOLMOD) ++ find_dependency(SPQR) ++endif() + @CUDAToolkit_DEPENDENCY@ + @Threads_DEPENDENCY@ + +@@ -195,7 +198,7 @@ # Search quietly to control the timing of the error message if not found. The # search should be for an exact match, but for usability reasons do a soft # match and reject with an explanation below. -find_package(Eigen3 ${CERES_EIGEN_VERSION} QUIET) -+find_package(Eigen3 CONFIG ${CERES_EIGEN_VERSION} QUIET) ++find_dependency(Eigen3 CONFIG ${CERES_EIGEN_VERSION} QUIET) if (Eigen3_FOUND) if (NOT Eigen3_VERSION VERSION_EQUAL CERES_EIGEN_VERSION) # CMake's VERSION check in FIND_PACKAGE() will accept any version >= the -@@ -217,55 +217,8 @@ else (Eigen3_FOUND) +@@ -217,55 +220,7 @@ endif (Eigen3_FOUND) # glog (and maybe gflags). @@ -64,7 +76,6 @@ index ceb7e269..5dee7e3c 100644 - endif() - endif() -endif(CERES_USES_MINIGLOG) -+include(CMakeFindDependencyMacro) +find_dependency(glog NO_MODULE) # Import exported Ceres targets, if they have not already been imported. diff --git a/ports/ceres/vcpkg.json b/ports/ceres/vcpkg.json index 45492e32e82c46..5620a649db6a66 100644 --- a/ports/ceres/vcpkg.json +++ b/ports/ceres/vcpkg.json @@ -1,6 +1,7 @@ { "name": "ceres", "version": "2.2.0", + "port-version": 1, "description": "non-linear optimization package", "homepage": "https://github.com/ceres-solver/ceres-solver", "license": "Apache-2.0", @@ -49,9 +50,12 @@ ] }, { - "name": "suitesparse", - "default-features": false - } + "name": "suitesparse-cholmod", + "features": [ + "matrixops" + ] + }, + "suitesparse-spqr" ] }, "tools": { diff --git a/ports/colmap/vcpkg.json b/ports/colmap/vcpkg.json index 68593c5c181fa9..419a3282f475ac 100644 --- a/ports/colmap/vcpkg.json +++ b/ports/colmap/vcpkg.json @@ -1,6 +1,7 @@ { "name": "colmap", "version": "3.11.1", + "port-version": 1, "description": "COLMAP is a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline with a graphical and command-line interface. It offers a wide range of features for reconstruction of ordered and unordered image collections. The software is licensed under the new BSD license.", "homepage": "https://colmap.github.io/", "license": "BSD-3-Clause", diff --git a/ports/g2o/portfile.cmake b/ports/g2o/portfile.cmake index c6ef1910448ce5..3d756907e7d8c8 100644 --- a/ports/g2o/portfile.cmake +++ b/ports/g2o/portfile.cmake @@ -25,6 +25,7 @@ vcpkg_cmake_configure( -DBUILD_LGPL_SHARED_LIBS=${BUILD_LGPL_SHARED_LIBS} -DG2O_BUILD_EXAMPLES=OFF -DG2O_BUILD_APPS=OFF + -DBUILD_CSPARSE=OFF ) vcpkg_cmake_install() diff --git a/ports/g2o/vcpkg.json b/ports/g2o/vcpkg.json index c54ff90755dd66..cf172187116022 100644 --- a/ports/g2o/vcpkg.json +++ b/ports/g2o/vcpkg.json @@ -1,14 +1,15 @@ { "name": "g2o", "version-date": "2024-12-14", - "port-version": 2, + "port-version": 3, "description": "g2o: A General Framework for Graph Optimization", "homepage": "https://openslam.org/g2o.html", "dependencies": [ "ceres", "eigen3", "lapack", - "suitesparse", + "suitesparse-cholmod", + "suitesparse-cxsparse", { "name": "vcpkg-cmake", "host": true diff --git a/ports/suitesparse-amd/portfile.cmake b/ports/suitesparse-amd/portfile.cmake new file mode 100644 index 00000000000000..af24ce9d62e0be --- /dev/null +++ b/ports/suitesparse-amd/portfile.cmake @@ -0,0 +1,33 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME AMD) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/License.txt") diff --git a/ports/suitesparse-amd/vcpkg.json b/ports/suitesparse-amd/vcpkg.json new file mode 100644 index 00000000000000..d0e0743ee934e5 --- /dev/null +++ b/ports/suitesparse-amd/vcpkg.json @@ -0,0 +1,19 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-amd", + "version-semver": "3.3.3", + "description": "AMD: Routines for permuting sparse matrices prior to factorization in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "BSD-3-Clause", + "dependencies": [ + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} diff --git a/ports/suitesparse-btf/portfile.cmake b/ports/suitesparse-btf/portfile.cmake new file mode 100644 index 00000000000000..ec46fdb0870737 --- /dev/null +++ b/ports/suitesparse-btf/portfile.cmake @@ -0,0 +1,36 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME BTF) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST + "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/License.txt" + "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/lesser.txt" +) diff --git a/ports/suitesparse-btf/vcpkg.json b/ports/suitesparse-btf/vcpkg.json new file mode 100644 index 00000000000000..dfa1056b609d8b --- /dev/null +++ b/ports/suitesparse-btf/vcpkg.json @@ -0,0 +1,19 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-btf", + "version-semver": "2.3.2", + "description": "BTF: Software package for permuting a matrix into block upper triangular form in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "LGPL-2.1-or-later", + "dependencies": [ + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} diff --git a/ports/suitesparse-camd/portfile.cmake b/ports/suitesparse-camd/portfile.cmake new file mode 100644 index 00000000000000..0e0bc80839f063 --- /dev/null +++ b/ports/suitesparse-camd/portfile.cmake @@ -0,0 +1,33 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME CAMD) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/License.txt") diff --git a/ports/suitesparse-camd/vcpkg.json b/ports/suitesparse-camd/vcpkg.json new file mode 100644 index 00000000000000..0f8fcae92fbc80 --- /dev/null +++ b/ports/suitesparse-camd/vcpkg.json @@ -0,0 +1,19 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-camd", + "version-semver": "3.3.3", + "description": "AMD: Routines for permuting sparse matrices prior to factorization in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "BSD-3-Clause", + "dependencies": [ + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} diff --git a/ports/suitesparse-ccolamd/portfile.cmake b/ports/suitesparse-ccolamd/portfile.cmake new file mode 100644 index 00000000000000..af7fe18215b00f --- /dev/null +++ b/ports/suitesparse-ccolamd/portfile.cmake @@ -0,0 +1,33 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME CCOLAMD) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/License.txt") diff --git a/ports/suitesparse-ccolamd/vcpkg.json b/ports/suitesparse-ccolamd/vcpkg.json new file mode 100644 index 00000000000000..5ee0c07ef52393 --- /dev/null +++ b/ports/suitesparse-ccolamd/vcpkg.json @@ -0,0 +1,19 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-ccolamd", + "version-semver": "3.3.4", + "description": "CCOLAMD: Routines for constrained column approximate minimum degree ordering algorithm in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "BSD-3-Clause", + "dependencies": [ + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} diff --git a/ports/suitesparse-cholmod/001-dont-override-cuda-architectures.patch b/ports/suitesparse-cholmod/001-dont-override-cuda-architectures.patch new file mode 100644 index 00000000000000..c32d5b5e0f2f54 --- /dev/null +++ b/ports/suitesparse-cholmod/001-dont-override-cuda-architectures.patch @@ -0,0 +1,47 @@ +Respect CMAKE_CUDA_ARCHITECTURES, so they can be set by the user in the triplet file. + +Also make the CUDA warnings fatal since we are always strictly enabling/disabling CUDA. + +--- a/SuiteSparse_config/cmake_modules/SuiteSparsePolicy.cmake ++++ b/SuiteSparse_config/cmake_modules/SuiteSparsePolicy.cmake +@@ -321,7 +321,7 @@ + if ( SUITESPARSE_USE_CUDA ) + + # try finding CUDA +- check_language ( CUDA ) ++ enable_language ( CUDA ) + # message ( STATUS "Looking for CUDA" ) + if ( CMAKE_CUDA_COMPILER ) + # with CUDA: +@@ -334,7 +334,7 @@ + message ( STATUS "CUDA toolkit lib: " ${CUDAToolkit_LIBRARY_DIR} ) + if ( CUDAToolkit_VERSION VERSION_LESS "11.2" ) + # CUDA is present but too old +- message ( STATUS "CUDA: not enabled (CUDA 11.2 or later required)" ) ++ message ( FATAL_ERROR "CUDA 11.2 or later is required" ) + set ( SUITESPARSE_HAS_CUDA OFF ) + else ( ) + # CUDA 11.2 or later present +@@ -343,7 +343,7 @@ + endif ( ) + else ( ) + # without CUDA: +- message ( STATUS "CUDA: not found" ) ++ message ( FATAL_ERROR "CUDA not found" ) + set ( SUITESPARSE_HAS_CUDA OFF ) + endif ( ) + +@@ -354,13 +354,6 @@ + + endif ( ) + +-if ( SUITESPARSE_HAS_CUDA ) +- message ( STATUS "CUDA: enabled" ) +- set ( SUITESPARSE_CUDA_ARCHITECTURES "52;75;80" CACHE STRING "CUDA architectures" ) +- set ( CMAKE_CUDA_ARCHITECTURES ${SUITESPARSE_CUDA_ARCHITECTURES} ) +-else ( ) +- message ( STATUS "CUDA: not enabled" ) +-endif ( ) + + # check for strict usage + if ( SUITESPARSE_USE_STRICT AND SUITESPARSE_USE_CUDA AND NOT SUITESPARSE_HAS_CUDA ) diff --git a/ports/suitesparse-cholmod/portfile.cmake b/ports/suitesparse-cholmod/portfile.cmake new file mode 100644 index 00000000000000..eac6c4f896bace --- /dev/null +++ b/ports/suitesparse-cholmod/portfile.cmake @@ -0,0 +1,59 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev + PATCHES + 001-dont-override-cuda-architectures.patch +) + +set(PACKAGE_NAME CHOLMOD) + +configure_file( + "${CURRENT_INSTALLED_DIR}/share/suitesparse/SuiteSparseBLAS.cmake" + "${SOURCE_PATH}/SuiteSparse_config/cmake_modules/SuiteSparseBLAS.cmake" + COPYONLY +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + cuda CHOLMOD_USE_CUDA + cuda SUITESPARSE_USE_CUDA + matrixops CHOLMOD_MATRIXOPS + modify CHOLMOD_MODIFY + partition CHOLMOD_PARTITION + supernodal CHOLMOD_SUPERNODAL + openmp CHOLMOD_USE_OPENMP +) + +set(GPL_ENABLED OFF) +if(CHOLMOD_MATRIXOPS OR CHOLMOD_MODIFY OR CHOLMOD_SUPERNODAL OR CUDA_ENABLED) + set(GPL_ENABLED ON) +endif() + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DCHOLMOD_GPL=${GPL_ENABLED} + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF + -DSUITESPARSE_USE_64BIT_BLAS=1 + ${FEATURE_OPTIONS} +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/License.txt") diff --git a/ports/suitesparse-cholmod/vcpkg.json b/ports/suitesparse-cholmod/vcpkg.json new file mode 100644 index 00000000000000..03f7afd5ea95f6 --- /dev/null +++ b/ports/suitesparse-cholmod/vcpkg.json @@ -0,0 +1,71 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-cholmod", + "version-semver": "5.3.0", + "description": "CHOLMOD: Routines for factorizing sparse symmetric positive definite matrices in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "LGPL-2.1-or-later AND Apache-2.0", + "dependencies": [ + "suitesparse-amd", + "suitesparse-camd", + "suitesparse-ccolamd", + "suitesparse-colamd", + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "default-features": [ + "partition" + ], + "features": { + "cuda": { + "description": "Enable CUDA support for the current compute architecture of this machine", + "supports": "!(windows & static)", + "license": "GPL-2.0-or-later AND LGPL-2.1-or-later AND Apache-2.0", + "dependencies": [ + "cuda", + { + "name": "suitesparse-cholmod", + "features": [ + "matrixops" + ] + } + ] + }, + "matrixops": { + "description": "Build MatrixOps module", + "license": "GPL-2.0-or-later AND LGPL-2.1-or-later AND Apache-2.0" + }, + "modify": { + "description": "Build Modify module", + "license": "GPL-2.0-or-later AND LGPL-2.1-or-later AND Apache-2.0" + }, + "openmp": { + "description": "Enable OpenMP support", + "dependencies": [ + { + "name": "suitesparse-config", + "features": [ + "openmp" + ] + } + ] + }, + "partition": { + "description": "Build Partition module" + }, + "supernodal": { + "description": "Build SuperNodal module", + "license": "GPL-2.0-or-later AND LGPL-2.1-or-later AND Apache-2.0", + "dependencies": [ + "lapack" + ] + } + } +} diff --git a/ports/suitesparse-colamd/portfile.cmake b/ports/suitesparse-colamd/portfile.cmake new file mode 100644 index 00000000000000..ce6d89e324a9a0 --- /dev/null +++ b/ports/suitesparse-colamd/portfile.cmake @@ -0,0 +1,33 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME COLAMD) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/License.txt") diff --git a/ports/suitesparse-colamd/vcpkg.json b/ports/suitesparse-colamd/vcpkg.json new file mode 100644 index 00000000000000..3a1588b256630b --- /dev/null +++ b/ports/suitesparse-colamd/vcpkg.json @@ -0,0 +1,19 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-colamd", + "version-semver": "3.3.4", + "description": "COLAMD: Routines for column approximate minimum degree ordering algorithm in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "BSD-3-Clause", + "dependencies": [ + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} diff --git a/ports/suitesparse-config/SuiteSparseBLAS.cmake b/ports/suitesparse-config/SuiteSparseBLAS.cmake new file mode 100644 index 00000000000000..7cd9522187f37f --- /dev/null +++ b/ports/suitesparse-config/SuiteSparseBLAS.cmake @@ -0,0 +1,9 @@ +find_package(BLAS REQUIRED) +set(BLA_SIZEOF_INTEGER 4) +set(SuiteSparse_BLAS_integer int32_t) + +if(WIN32) + # OpenBLAS includes an underscore suffix on Windows for all of its symbols. + # This is not detected automatically by SuiteSparse or FindBLAS and needs to be set manually. + add_compile_definitions(BLAS64__SUFFIX=_) +endif() diff --git a/ports/suitesparse-config/portfile.cmake b/ports/suitesparse-config/portfile.cmake new file mode 100644 index 00000000000000..ba9ce58bbb9272 --- /dev/null +++ b/ports/suitesparse-config/portfile.cmake @@ -0,0 +1,52 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME SuiteSparse_config) + +# Avoid overriding of BLA_VENDOR and skip straight to find_package() as done here +# https://github.com/DrTimothyAldenDavis/SuiteSparse/blob/v7.8.1/SuiteSparse_config/cmake_modules/SuiteSparseBLAS.cmake#L240-L245 +configure_file( + "${CMAKE_CURRENT_LIST_DIR}/SuiteSparseBLAS.cmake" + "${SOURCE_PATH}/SuiteSparse_config/cmake_modules/SuiteSparseBLAS.cmake" + COPYONLY +) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + openmp SUITESPARSE_USE_OPENMP +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF # not applicable here, skip check + -DSUITESPARSE_USE_STRICT=ON # don't allow implicit dependencies + -DSUITESPARSE_USE_FORTRAN=OFF # use Fortran sources translated to C instead + -DSUITESPARSE_DEMOS=OFF + ${FEATURE_OPTIONS} +) + +vcpkg_cmake_install() + +# Move SuiteSparseBLAS.cmake, SuiteSparsePolicy.cmake etc files +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share") +file(RENAME "${CURRENT_PACKAGES_DIR}/lib/cmake/SuiteSparse" "${CURRENT_PACKAGES_DIR}/share/suitesparse") + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt") diff --git a/ports/suitesparse-config/vcpkg.json b/ports/suitesparse-config/vcpkg.json new file mode 100644 index 00000000000000..908019f6c31368 --- /dev/null +++ b/ports/suitesparse-config/vcpkg.json @@ -0,0 +1,24 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-config", + "version-semver": "7.8.3", + "description": "Configuration for SuiteSparse libraries", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "BSD-3-Clause", + "dependencies": [ + "blas", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "openmp": { + "description": "Enable OpenMP support (in SuiteSparse_config only)" + } + } +} diff --git a/ports/suitesparse-cxsparse/001-detect-complex-support.patch b/ports/suitesparse-cxsparse/001-detect-complex-support.patch new file mode 100644 index 00000000000000..01279b73294e8f --- /dev/null +++ b/ports/suitesparse-cxsparse/001-detect-complex-support.patch @@ -0,0 +1,14 @@ +Android API level 22 and earlier don't provide any complex-valued math functions in complex.h, +which are required for complex data type support in CXSparse. + +--- a/CXSparse/CMakeLists.txt ++++ b/CXSparse/CMakeLists.txt +@@ -45,7 +45,7 @@ + # MS Visual Studio does not support the complex type for ANSI C11. + # FIXME: see GraphBLAS for how to use complex types in MS Visual Studio. + +-if ( MSVC OR ("${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC") ) ++if ( MSVC OR CMAKE_C_SIMULATE_ID STREQUAL "MSVC" OR (CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_VERSION VERSION_LESS 23) ) + option ( CXSPARSE_USE_COMPLEX "ON: complex data type enabled. OFF (default): complex data type disabled." OFF ) + else ( ) + option ( CXSPARSE_USE_COMPLEX "ON (default): complex data type enabled. OFF: complex data type disabled." ON ) diff --git a/ports/suitesparse-cxsparse/portfile.cmake b/ports/suitesparse-cxsparse/portfile.cmake new file mode 100644 index 00000000000000..638e746b2a3d6c --- /dev/null +++ b/ports/suitesparse-cxsparse/portfile.cmake @@ -0,0 +1,38 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev + PATCHES + 001-detect-complex-support.patch +) + +set(PACKAGE_NAME CXSparse) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST + "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/License.txt" + "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/lesser.txt" +) diff --git a/ports/suitesparse-cxsparse/vcpkg.json b/ports/suitesparse-cxsparse/vcpkg.json new file mode 100644 index 00000000000000..d075bd954112de --- /dev/null +++ b/ports/suitesparse-cxsparse/vcpkg.json @@ -0,0 +1,19 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-cxsparse", + "version-semver": "4.4.1", + "description": "CXSparse: Software package for permuting a matrix into block upper triangular form in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "LGPL-2.1-or-later", + "dependencies": [ + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} diff --git a/ports/suitesparse-graphblas/portfile.cmake b/ports/suitesparse-graphblas/portfile.cmake new file mode 100644 index 00000000000000..91246edc1400c8 --- /dev/null +++ b/ports/suitesparse-graphblas/portfile.cmake @@ -0,0 +1,45 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/GraphBLAS + REF v9.3.1 + SHA512 94ebb0c4fb8ed93c5fe71610a730a32f8e6b84389bd75ddc8d997fa82a60401608f75783f60c59209b13e50f922995a9ad745a2bb499e99c3cb32d05db73aea5 + HEAD_REF stable +) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + openmp GRAPHBLAS_USE_OPENMP + INVERTED_FEATURES + precompiled GRAPHBLAS_COMPACT +) + +# Prevent JIT cache from being created at ~/.SuiteSparse by default. Only used during build. +# see https://github.com/DrTimothyAldenDavis/SuiteSparse/blob/v7.8.1/GraphBLAS/cmake_modules/GraphBLAS_JIT_paths.cmake +set(ENV{GRAPHBLAS_CACHE_PATH} "${CURRENT_BUILDTREES_DIR}/cache") + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF + -DGRAPHBLAS_JIT_ENABLE_RELOCATE=ON + ${FEATURE_OPTIONS} +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME GraphBLAS + CONFIG_PATH lib/cmake/GraphBLAS +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/ports/suitesparse-graphblas/vcpkg.json b/ports/suitesparse-graphblas/vcpkg.json new file mode 100644 index 00000000000000..1f16a51a642f21 --- /dev/null +++ b/ports/suitesparse-graphblas/vcpkg.json @@ -0,0 +1,26 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-graphblas", + "version-semver": "9.3.1", + "description": "SuiteSparse:GraphBLAS: graph algorithms in the language of linear algebra", + "homepage": "https://people.engr.tamu.edu/davis/GraphBLAS.html", + "license": "Apache-2.0", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "openmp": { + "description": "Enable OpenMP support" + }, + "precompiled": { + "description": "Pre-compile kernels instead of using JIT compilation at runtime. Increases the library size and compile time by about 15x. Use the GRAPHBLAS_CACHE_PATH env var to set the JIT cache directory if not enabled." + } + } +} diff --git a/ports/suitesparse-klu/portfile.cmake b/ports/suitesparse-klu/portfile.cmake new file mode 100644 index 00000000000000..0e1335f55959b6 --- /dev/null +++ b/ports/suitesparse-klu/portfile.cmake @@ -0,0 +1,48 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME KLU) + +configure_file( + "${CURRENT_INSTALLED_DIR}/share/suitesparse/SuiteSparseBLAS.cmake" + "${SOURCE_PATH}/SuiteSparse_config/cmake_modules/SuiteSparseBLAS.cmake" + COPYONLY +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + cholmod KLU_USE_CHOLMOD +) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF + ${FEATURE_OPTIONS} +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST + "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/License.txt" + "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/lesser.txt" +) diff --git a/ports/suitesparse-klu/vcpkg.json b/ports/suitesparse-klu/vcpkg.json new file mode 100644 index 00000000000000..8acbff95d119eb --- /dev/null +++ b/ports/suitesparse-klu/vcpkg.json @@ -0,0 +1,30 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-klu", + "version-semver": "2.3.5", + "description": "KLU: Routines for solving sparse linear systems of equations in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "LGPL-2.1-or-later", + "dependencies": [ + "suitesparse-amd", + "suitesparse-btf", + "suitesparse-colamd", + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "cholmod": { + "description": "Build example user-ordering function using CHOLMOD", + "dependencies": [ + "suitesparse-cholmod" + ] + } + } +} diff --git a/ports/suitesparse-lagraph/portfile.cmake b/ports/suitesparse-lagraph/portfile.cmake new file mode 100644 index 00000000000000..ebf7f7c600cf94 --- /dev/null +++ b/ports/suitesparse-lagraph/portfile.cmake @@ -0,0 +1,42 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME LAGraph) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + openmp LAGRAPH_USE_OPENMP +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF + ${FEATURE_OPTIONS} +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +file(REMOVE "${CURRENT_PACKAGES_DIR}/share/cmake/LAGraph/FindGraphBLAS.cmake") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/${PACKAGE_NAME}/LICENSE") diff --git a/ports/suitesparse-lagraph/vcpkg.json b/ports/suitesparse-lagraph/vcpkg.json new file mode 100644 index 00000000000000..9210bf18ba3f6c --- /dev/null +++ b/ports/suitesparse-lagraph/vcpkg.json @@ -0,0 +1,32 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-lagraph", + "version-semver": "1.1.4", + "description": "LAGraph: Library plus test harness for collecting algorithms that use GraphBLAS", + "homepage": "https://lagraph.readthedocs.io/en/latest/", + "license": "BSD-2-Clause", + "dependencies": [ + "suitesparse-graphblas", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "openmp": { + "description": "Enable OpenMP support", + "dependencies": [ + { + "name": "suitesparse-graphblas", + "features": [ + "openmp" + ] + } + ] + } + } +} diff --git a/ports/suitesparse-ldl/portfile.cmake b/ports/suitesparse-ldl/portfile.cmake new file mode 100644 index 00000000000000..35840140f76aa6 --- /dev/null +++ b/ports/suitesparse-ldl/portfile.cmake @@ -0,0 +1,36 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME LDL) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST + "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/License.txt" + "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/lesser.txt" +) diff --git a/ports/suitesparse-ldl/vcpkg.json b/ports/suitesparse-ldl/vcpkg.json new file mode 100644 index 00000000000000..4da15e3a137d23 --- /dev/null +++ b/ports/suitesparse-ldl/vcpkg.json @@ -0,0 +1,20 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-ldl", + "version-semver": "3.3.2", + "description": "LDL: A sparse LDL' factorization and solve package in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "LGPL-2.1-or-later", + "dependencies": [ + "suitesparse-amd", + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} diff --git a/ports/suitesparse-mongoose/portfile.cmake b/ports/suitesparse-mongoose/portfile.cmake new file mode 100644 index 00000000000000..b69042eb7d3735 --- /dev/null +++ b/ports/suitesparse-mongoose/portfile.cmake @@ -0,0 +1,37 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/Mongoose" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF + -DCMAKE_DISABLE_FIND_PACKAGE_Python=ON # Only used for tests +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME SuiteSparse_Mongoose + CONFIG_PATH lib/cmake/SuiteSparse_Mongoose +) +vcpkg_fixup_pkgconfig() + +vcpkg_copy_tools(TOOL_NAMES suitesparse_mongoose AUTO_CLEAN) +if (NOT "tools" IN_LIST FEATURES) + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/tools") +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/Mongoose/Doc/License.txt") diff --git a/ports/suitesparse-mongoose/vcpkg.json b/ports/suitesparse-mongoose/vcpkg.json new file mode 100644 index 00000000000000..387861a5b2a4ce --- /dev/null +++ b/ports/suitesparse-mongoose/vcpkg.json @@ -0,0 +1,24 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-mongoose", + "version-semver": "3.3.4", + "description": "Mongoose: Graph partitioning library in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "GPL-3.0-only", + "dependencies": [ + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "tools": { + "description": "Build suitesparse_mongoose CLI tool" + } + } +} diff --git a/ports/suitesparse-paru/portfile.cmake b/ports/suitesparse-paru/portfile.cmake new file mode 100644 index 00000000000000..58c9ffb77d3de9 --- /dev/null +++ b/ports/suitesparse-paru/portfile.cmake @@ -0,0 +1,46 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME ParU) + +configure_file( + "${CURRENT_INSTALLED_DIR}/share/suitesparse/SuiteSparseBLAS.cmake" + "${SOURCE_PATH}/SuiteSparse_config/cmake_modules/SuiteSparseBLAS.cmake" + COPYONLY +) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + openmp SUITESPARSE_USE_OPENMP +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF + ${FEATURE_OPTIONS} +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/${PACKAGE_NAME}/LICENSE.txt") diff --git a/ports/suitesparse-paru/vcpkg.json b/ports/suitesparse-paru/vcpkg.json new file mode 100644 index 00000000000000..225be42644dcf2 --- /dev/null +++ b/ports/suitesparse-paru/vcpkg.json @@ -0,0 +1,35 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-paru", + "version-semver": "1.0.0", + "description": "ParU: Routines for solving sparse linear system via parallel multifrontal LU factorization algorithms in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "GPL-3.0-or-later", + "dependencies": [ + "suitesparse-cholmod", + "suitesparse-config", + "suitesparse-umfpack", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "openmp": { + "description": "Enable OpenMP support", + "supports": "!windows", + "dependencies": [ + { + "name": "suitesparse-config", + "features": [ + "openmp" + ] + } + ] + } + } +} diff --git a/ports/suitesparse-rbio/portfile.cmake b/ports/suitesparse-rbio/portfile.cmake new file mode 100644 index 00000000000000..38fdbb14b8e2a9 --- /dev/null +++ b/ports/suitesparse-rbio/portfile.cmake @@ -0,0 +1,33 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME RBio) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/License.txt") diff --git a/ports/suitesparse-rbio/vcpkg.json b/ports/suitesparse-rbio/vcpkg.json new file mode 100644 index 00000000000000..91fefb436c9947 --- /dev/null +++ b/ports/suitesparse-rbio/vcpkg.json @@ -0,0 +1,19 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-rbio", + "version-semver": "4.3.4", + "description": "RBio: routines for reading/writing sparse matrices in Rutherford/Boeing format in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "GPL-2.0-or-later", + "dependencies": [ + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} diff --git a/ports/suitesparse-spex/portfile.cmake b/ports/suitesparse-spex/portfile.cmake new file mode 100644 index 00000000000000..043236d7641769 --- /dev/null +++ b/ports/suitesparse-spex/portfile.cmake @@ -0,0 +1,45 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME SPEX) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + openmp SUITESPARSE_USE_OPENMP +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF + ${FEATURE_OPTIONS} +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +file(REMOVE + "${CURRENT_PACKAGES_DIR}/share/cmake/SPEX/FindGMP.cmake" + "${CURRENT_PACKAGES_DIR}/share/cmake/SPEX/FindMPFR.cmake" +) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/${PACKAGE_NAME}/LICENSE.txt") diff --git a/ports/suitesparse-spex/vcpkg.json b/ports/suitesparse-spex/vcpkg.json new file mode 100644 index 00000000000000..b7bcc76f786a5f --- /dev/null +++ b/ports/suitesparse-spex/vcpkg.json @@ -0,0 +1,36 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-spex", + "version-semver": "3.2.1", + "description": "SPEX: Software package for SParse EXact algebra in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "GPL-2.0-or-later OR LGPL-3.0-or-later", + "dependencies": [ + "gmp", + "mpfr", + "suitesparse-amd", + "suitesparse-colamd", + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "openmp": { + "description": "Enable OpenMP support", + "dependencies": [ + { + "name": "suitesparse-config", + "features": [ + "openmp" + ] + } + ] + } + } +} diff --git a/ports/suitesparse-spqr/001-dont-override-cuda-architectures.patch b/ports/suitesparse-spqr/001-dont-override-cuda-architectures.patch new file mode 100644 index 00000000000000..c32d5b5e0f2f54 --- /dev/null +++ b/ports/suitesparse-spqr/001-dont-override-cuda-architectures.patch @@ -0,0 +1,47 @@ +Respect CMAKE_CUDA_ARCHITECTURES, so they can be set by the user in the triplet file. + +Also make the CUDA warnings fatal since we are always strictly enabling/disabling CUDA. + +--- a/SuiteSparse_config/cmake_modules/SuiteSparsePolicy.cmake ++++ b/SuiteSparse_config/cmake_modules/SuiteSparsePolicy.cmake +@@ -321,7 +321,7 @@ + if ( SUITESPARSE_USE_CUDA ) + + # try finding CUDA +- check_language ( CUDA ) ++ enable_language ( CUDA ) + # message ( STATUS "Looking for CUDA" ) + if ( CMAKE_CUDA_COMPILER ) + # with CUDA: +@@ -334,7 +334,7 @@ + message ( STATUS "CUDA toolkit lib: " ${CUDAToolkit_LIBRARY_DIR} ) + if ( CUDAToolkit_VERSION VERSION_LESS "11.2" ) + # CUDA is present but too old +- message ( STATUS "CUDA: not enabled (CUDA 11.2 or later required)" ) ++ message ( FATAL_ERROR "CUDA 11.2 or later is required" ) + set ( SUITESPARSE_HAS_CUDA OFF ) + else ( ) + # CUDA 11.2 or later present +@@ -343,7 +343,7 @@ + endif ( ) + else ( ) + # without CUDA: +- message ( STATUS "CUDA: not found" ) ++ message ( FATAL_ERROR "CUDA not found" ) + set ( SUITESPARSE_HAS_CUDA OFF ) + endif ( ) + +@@ -354,13 +354,6 @@ + + endif ( ) + +-if ( SUITESPARSE_HAS_CUDA ) +- message ( STATUS "CUDA: enabled" ) +- set ( SUITESPARSE_CUDA_ARCHITECTURES "52;75;80" CACHE STRING "CUDA architectures" ) +- set ( CMAKE_CUDA_ARCHITECTURES ${SUITESPARSE_CUDA_ARCHITECTURES} ) +-else ( ) +- message ( STATUS "CUDA: not enabled" ) +-endif ( ) + + # check for strict usage + if ( SUITESPARSE_USE_STRICT AND SUITESPARSE_USE_CUDA AND NOT SUITESPARSE_HAS_CUDA ) diff --git a/ports/suitesparse-spqr/portfile.cmake b/ports/suitesparse-spqr/portfile.cmake new file mode 100644 index 00000000000000..f78a88218adcfc --- /dev/null +++ b/ports/suitesparse-spqr/portfile.cmake @@ -0,0 +1,61 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev + PATCHES + 001-dont-override-cuda-architectures.patch +) + +set(PACKAGE_NAME SPQR) + +configure_file( + "${CURRENT_INSTALLED_DIR}/share/suitesparse/SuiteSparseBLAS.cmake" + "${SOURCE_PATH}/SuiteSparse_config/cmake_modules/SuiteSparseBLAS.cmake" + COPYONLY +) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + cuda SPQR_USE_CUDA + cuda SUITESPARSE_USE_CUDA +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DCMAKE_CUDA_ARCHITECTURES=${CUDA_ARCHITECTURES} + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF + ${FEATURE_OPTIONS} +) + +vcpkg_cmake_install() + +if("cuda" IN_LIST FEATURES) + vcpkg_cmake_config_fixup( + PACKAGE_NAME SuiteSparse_GPURuntime + CONFIG_PATH lib/cmake/SuiteSparse_GPURuntime + DO_NOT_DELETE_PARENT_CONFIG_PATH + ) + vcpkg_cmake_config_fixup( + PACKAGE_NAME GPUQREngine + CONFIG_PATH lib/cmake/GPUQREngine + DO_NOT_DELETE_PARENT_CONFIG_PATH + ) +endif() +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/License.txt") diff --git a/ports/suitesparse-spqr/vcpkg.json b/ports/suitesparse-spqr/vcpkg.json new file mode 100644 index 00000000000000..38d862886c89e9 --- /dev/null +++ b/ports/suitesparse-spqr/vcpkg.json @@ -0,0 +1,34 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-spqr", + "version-semver": "4.3.4", + "description": "SPQR: Multithreaded, multifrontal, rank-revealing sparse QR factorization method in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "GPL-2.0-or-later", + "dependencies": [ + "lapack", + { + "name": "suitesparse-cholmod", + "features": [ + "supernodal" + ] + }, + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "cuda": { + "description": "Enable CUDA support for the current compute architecture of this machine", + "dependencies": [ + "cuda" + ] + } + } +} diff --git a/ports/suitesparse-umfpack/portfile.cmake b/ports/suitesparse-umfpack/portfile.cmake new file mode 100644 index 00000000000000..a4a48ba2248247 --- /dev/null +++ b/ports/suitesparse-umfpack/portfile.cmake @@ -0,0 +1,45 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO DrTimothyAldenDavis/SuiteSparse + REF v7.8.3 + SHA512 fc0fd0aaf55a6712a3b8ca23bf7536a31d52033e090370ebbf291f05d0e073c7dcfd991a80b037f54663f524804582b87af86522c2e4435091527f0d3c189244 + HEAD_REF dev +) + +set(PACKAGE_NAME UMFPACK) + +configure_file( + "${CURRENT_INSTALLED_DIR}/share/suitesparse/SuiteSparseBLAS.cmake" + "${SOURCE_PATH}/SuiteSparse_config/cmake_modules/SuiteSparseBLAS.cmake" + COPYONLY +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + cholmod UMFPACK_USE_CHOLMOD +) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/${PACKAGE_NAME}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DSUITESPARSE_USE_CUDA=OFF + -DSUITESPARSE_USE_STRICT=ON + -DSUITESPARSE_USE_FORTRAN=OFF + -DSUITESPARSE_DEMOS=OFF + ${FEATURE_OPTIONS} +) + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup( + PACKAGE_NAME ${PACKAGE_NAME} + CONFIG_PATH lib/cmake/${PACKAGE_NAME} +) +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/${PACKAGE_NAME}/Doc/License.txt") diff --git a/ports/suitesparse-umfpack/vcpkg.json b/ports/suitesparse-umfpack/vcpkg.json new file mode 100644 index 00000000000000..3fd02900134fdc --- /dev/null +++ b/ports/suitesparse-umfpack/vcpkg.json @@ -0,0 +1,31 @@ +{ + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", + "name": "suitesparse-umfpack", + "version-semver": "6.3.5", + "description": "UMFPACK: Routines solving sparse linear systems via LU factorization in SuiteSparse", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": "GPL-2.0-or-later", + "dependencies": [ + "suitesparse-amd", + "suitesparse-config", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "default-features": [ + "cholmod" + ], + "features": { + "cholmod": { + "description": "Use CHOLMOD", + "dependencies": [ + "suitesparse-cholmod" + ] + } + } +} diff --git a/ports/suitesparse/FindCXSparse.cmake b/ports/suitesparse/FindCXSparse.cmake deleted file mode 100644 index 65d596acaea2c1..00000000000000 --- a/ports/suitesparse/FindCXSparse.cmake +++ /dev/null @@ -1,73 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. -# -#.rst: -# FindCXSparse -# -------- -# -# Find the CXSparse library -# -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# The following variables will be defined: -# -# ``CXSparse_FOUND`` -# True if CXSparse found on the local system -# -# ``CXSPARSE_FOUND`` -# True if CXSparse found on the local system -# -# ``CXSparse_INCLUDE_DIRS`` -# Location of CXSparse header files -# -# ``CXSPARSE_INCLUDE_DIRS`` -# Location of CXSparse header files -# -# ``CXSparse_LIBRARIES`` -# List of the CXSparse libraries found -# -# ``CXSPARSE_LIBRARIES`` -# List of the CXSparse libraries found -# -# - -include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) -include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake) - -find_path(CXSPARSE_INCLUDE_DIR NAMES cs.h PATH_SUFFIXES suitesparse) - -find_library(CXSPARSE_LIBRARY_RELEASE NAMES cxsparse libcxsparse) -find_library(CXSPARSE_LIBRARY_DEBUG NAMES cxsparsed libcxsparsed) -select_library_configurations(CXSPARSE) - -if(CXSPARSE_INCLUDE_DIR) - set(CXSPARSE_VERSION_FILE ${CXSPARSE_INCLUDE_DIR}/cs.h) - file(READ ${CXSPARSE_INCLUDE_DIR}/cs.h CXSPARSE_VERSION_FILE_CONTENTS) - - string(REGEX MATCH "#define CS_VER [0-9]+" - CXSPARSE_MAIN_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}") - string(REGEX REPLACE "#define CS_VER ([0-9]+)" "\\1" - CXSPARSE_MAIN_VERSION "${CXSPARSE_MAIN_VERSION}") - - string(REGEX MATCH "#define CS_SUBVER [0-9]+" - CXSPARSE_SUB_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}") - string(REGEX REPLACE "#define CS_SUBVER ([0-9]+)" "\\1" - CXSPARSE_SUB_VERSION "${CXSPARSE_SUB_VERSION}") - - string(REGEX MATCH "#define CS_SUBSUB [0-9]+" - CXSPARSE_SUBSUB_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}") - string(REGEX REPLACE "#define CS_SUBSUB ([0-9]+)" "\\1" - CXSPARSE_SUBSUB_VERSION "${CXSPARSE_SUBSUB_VERSION}") - - set(CXSPARSE_VERSION "${CXSPARSE_MAIN_VERSION}.${CXSPARSE_SUB_VERSION}.${CXSPARSE_SUBSUB_VERSION}") -endif() - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(CXSparse - REQUIRED_VARS CXSPARSE_INCLUDE_DIR CXSPARSE_LIBRARIES - VERSION_VAR CXSPARSE_VERSION) - -set(CXSPARSE_FOUND ${CXSparse_FOUND}) -set(CXSPARSE_INCLUDE_DIRS ${CXSPARSE_INCLUDE_DIR}) -set(CXSparse_INCLUDE_DIRS ${CXSPARSE_INCLUDE_DIR}) -set(CXSparse_LIBRARIES ${CXSPARSE_LIBRARIES}) diff --git a/ports/suitesparse/build_fixes.patch b/ports/suitesparse/build_fixes.patch deleted file mode 100644 index 2734bb02cef03f..00000000000000 --- a/ports/suitesparse/build_fixes.patch +++ /dev/null @@ -1,281 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 9602cce..dafb434 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -5,14 +5,6 @@ - # Updated by jesnault (jerome.esnault@inria.fr) 2014-01-21 - # ----------------------------------------------------------------- - --option(HUNTER_ENABLED "Enable Hunter package manager support" OFF) --include(cmake/HunterGate.cmake) -- --HunterGate( -- URL "https://github.com/ruslo/hunter/archive/v0.23.214.tar.gz" -- SHA1 "e14bc153a7f16d6a5eeec845fb0283c8fad8c358" --) -- - PROJECT(SuiteSparseProject) - - cmake_minimum_required(VERSION 3.1) -@@ -47,29 +39,9 @@ else() - message(STATUS "Using user defined CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") - endif() - --# Fix GKlib path: --IF(NOT WIN32) -- SET(GKLIB_PATH "${${PROJECT_NAME}_SOURCE_DIR}/SuiteSparse/metis-5.1.0/GKlib" CACHE INTERNAL "Path to GKlib (for METIS)" FORCE) --ENDIF() -- --# allow creating DLLs in Windows without touching the source code: --IF(NOT ${CMAKE_VERSION} VERSION_LESS "3.4.0" AND WIN32) -- set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) --ENDIF() -- - ## get CMAKE_INSTALL_BINDIR and CMAKE_INSTALL_LIBDIR - include(GNUInstallDirs) - --if(CMAKE_SIZEOF_VOID_P MATCHES "8") -- set(SUITESPARSE_LIB_POSTFIX "64") --else() -- set(SUITESPARSE_LIB_POSTFIX "") --endif() -- --## get POSTFIX for lib install dir --set(LIB_POSTFIX "${SUITESPARSE_LIB_POSTFIX}" CACHE STRING "suffix for 32/64 inst dir placement") --mark_as_advanced(LIB_POSTFIX) -- - # We want libraries to be named "libXXX" and "libXXXd" in all compilers: - # ------------------------------------------------------------------------ - set(CMAKE_DEBUG_POSTFIX "d") -@@ -77,59 +49,6 @@ IF(MSVC) - set(SP_LIB_PREFIX "lib") # Libs are: "libXXX" - ENDIF(MSVC) - --## check if we can build metis --SET(BUILD_METIS_DEFAULT ON) --if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/SuiteSparse/metis-5.1.0/CMakeLists.txt") -- SET(BUILD_METIS_DEFAULT OFF) --endif() -- --SET(WITH_CUDA OFF CACHE BOOL "Build with CUDA support") -- --SET(BUILD_METIS ${BUILD_METIS_DEFAULT} CACHE BOOL "Build METIS for partitioning?") --SET(METIS_DIR ${${PROJECT_NAME}_SOURCE_DIR}/SuiteSparse/metis-5.1.0 CACHE PATH "Source directory of METIS") -- --if(BUILD_METIS) -- ## prepare the installation : -- ## using metis target here is not possible because this target is added in another branch of the CMake structure -- ## TRICK: need to dynamically modify the metis CMakeLists.txt file before it going to parsed... -- ## (very ugly/poor for a metis project get from SCM (git/svn/cvs) but it's works ;) and it doesn't matter if metis was get from .zip) -- if(EXISTS "${METIS_DIR}/libmetis/CMakeLists.txt") -- file(READ "${METIS_DIR}/libmetis/CMakeLists.txt" contentFile) -- string(REGEX MATCH "EXPORT SuiteSparseTargets" alreadyModified ${contentFile}) ## use a string pattern to check if we have to do the modif -- if(NOT alreadyModified) -- file(APPEND "${METIS_DIR}/libmetis/CMakeLists.txt" -- " -- set_target_properties(metis PROPERTIES PUBLIC_HEADER \"../include/metis.h\") -- install(TARGETS metis ## this line is also the string pattern to check if the modification had already done -- EXPORT SuiteSparseTargets -- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} -- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} -- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -- PUBLIC_HEADER DESTINATION include -- ) -- " -- ) -- endif() -- endif() -- add_subdirectory(SuiteSparse/metis-5.1.0) ## important part for building metis from its src files --endif(BUILD_METIS) -- -- --## For EXPORT only : --## Previous version of cmake (>2.8.12) doesn't auto take into account external lib (here I mean blas and lapack) we need to link to for our current target we want to export. --## Or at least we need to investigate how to do with previous version. --## This may cause some trouble in case you want to build in static mode and then use it into another custom project. --## You will need to manually link your target into your custom project to the correct dependencies link interfaces. --if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" GREATER 2.8.11) ## (policies introduced both in 2.8.12) -- set(EXPORT_USE_INTERFACE_LINK_LIBRARIES ON CACHE BOOL "") -- mark_as_advanced(EXPORT_USE_INTERFACE_LINK_LIBRARIES) -- if(EXPORT_USE_INTERFACE_LINK_LIBRARIES) -- cmake_policy(SET CMP0023 NEW) ## just for respecting the new target_link_libraries(...) signature procedure -- cmake_policy(SET CMP0022 NEW) ## use INTERFACE_LINK_LIBRARIES property for in-build targets and ignore old properties (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_)? -- ## Here, next version of cmake 2.8.12 auto take into account the link interface dependencies (see generated cmake/SuiteSparse-config*.cmake into your install dir) -- endif() --endif() -- - ## install_suitesparse_project(targetName headersList) - ## factorise the way we will install all projects (part of the suitesparse project) - ## is the target of the current project you build -@@ -176,16 +95,16 @@ macro(declare_suitesparse_library targetName srcsList headersList) - set(dsl_TARGET_PUBLIC_LINK "") - endif() - if(WITH_CUDA) -- find_package(CUDA) -+ find_package(CUDA REQUIRED) - endif() -- IF(${CUDA_FOUND}) -+ IF(CUDA_FOUND) - INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS}) - INCLUDE_DIRECTORIES(${SuiteSparse_GPUQREngine_INCLUDE}) - INCLUDE_DIRECTORIES(${SuiteSparse_GPURuntime_INCLUDE}) - CUDA_ADD_LIBRARY(${targetName} ${srcsList} ${headersList}) -- ELSE(${CUDA_FOUND}) -+ ELSE() - ADD_LIBRARY(${targetName} ${srcsList} ${headersList}) -- ENDIF(${CUDA_FOUND}) -+ ENDIF() - SET_TARGET_PROPERTIES(${targetName} PROPERTIES - OUTPUT_NAME ${SP_LIB_PREFIX}${targetName} - ) -@@ -211,44 +130,30 @@ MACRO(REMOVE_MATCHING_FILES_FROM_LIST match_expr lst_files) - ENDMACRO(REMOVE_MATCHING_FILES_FROM_LIST) - - if(WITH_CUDA) -- FIND_PACKAGE(cuda) -- IF(${CUDA_FOUND}) -+ FIND_PACKAGE(CUDA REQUIRED) -+ IF(CUDA_FOUND) - ADD_DEFINITIONS(-DGPU_BLAS) -- ENDIF(${CUDA_FOUND}) -+ ENDIF() - endif() - --hunter_add_package(LAPACK) # only in effect if HUNTER_ENABLED is set --# prefer LAPACK config file --find_package(LAPACK CONFIG) --if (LAPACK_FOUND AND TARGET blas AND TARGET lapack) -- message(STATUS "found lapack and blas config file. Linking targets lapack and blas") -- message(STATUS "- LAPACK_CONFIG: ${LAPACK_CONFIG}") -- set(SuiteSparse_LINKER_LAPACK_BLAS_LIBS lapack blas) -- # for suitesparse-config file set method used to find LAPACK (and BLAS) -- set(SuiteSparse_LAPACK_used_CONFIG YES) --else() -- # missing config file or targets, try BLAS and LAPACK -- find_package(BLAS) -- find_package(LAPACK) -- if (BLAS_FOUND AND LAPACK_FOUND) -+ find_package(BLAS REQUIRED) -+ find_package(LAPACK REQUIRED) - message(STATUS "found lapack and blas config file. Linking targets lapack and blas") - message(STATUS "- LAPACK_LIBRARIES: ${LAPACK_LIBRARIES}") - message(STATUS "- BLAS_LIBRARIES: ${BLAS_LIBRARIES}") - set(SuiteSparse_LINKER_LAPACK_BLAS_LIBS ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) - # for suitesparse-config file set method used to find LAPACK (and BLAS) - set(SuiteSparse_LAPACK_used_CONFIG NO) -- else () # LAPACK is not found -- message(FATAL_ERROR "lapack not found") -- endif() --endif() - --IF(BUILD_METIS) -+IF(USE_VCPKG_METIS) -+ find_package(metis REQUIRED) - set(SuiteSparse_LINKER_METIS_LIBS "metis") -- ## namespaced library target for config -- set(SuiteSparse_EXPORTED_METIS_LIBS "SuiteSparse::metis") -+ set(SuiteSparse_EXPORTED_METIS_LIBS "metis") -+ set(SuiteSparse_FIND_DEPENDENCY_METIS "find_dependency(metis REQUIRED)") - else() - set(SuiteSparse_LINKER_METIS_LIBS "") - set(SuiteSparse_EXPORTED_METIS_LIBS "") -+ set(SuiteSparse_FIND_PACKAGE_METIS "") - ENDIF() - - add_subdirectory(SuiteSparse) -@@ -287,7 +192,7 @@ endmacro() - # get SuiteSparse version - get_SuiteSparse_Version() - --set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/suitesparse-${SuiteSparse_VERSION}) -+set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/suitesparse) - ## create targets file - export(EXPORT SuiteSparseTargets - FILE "${CMAKE_CURRENT_BINARY_DIR}/suitesparse/suitesparse-targets.cmake" -@@ -301,7 +206,7 @@ configure_file(cmake/SuiteSparse-config-install.cmake.in - ## do the EXPORT for allowing other project to easily use suitesparse with cmake - install(EXPORT SuiteSparseTargets - FILE -- SuiteSparse-targets.cmake -+ suitesparse-targets.cmake - NAMESPACE - SuiteSparse:: - DESTINATION -diff --git a/SuiteSparse/CMakeLists.txt b/SuiteSparse/CMakeLists.txt -index c6e2834..6fdfb01 100644 ---- a/SuiteSparse/CMakeLists.txt -+++ b/SuiteSparse/CMakeLists.txt -@@ -1,23 +1,5 @@ - PROJECT(SuiteSparse) - --# Set optimized building: --IF(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_BUILD_TYPE MATCHES "Debug") -- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") -- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") -- # only optimize for native processer when NOT cross compiling -- if(NOT CMAKE_CROSSCOMPILING) -- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=native") -- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mtune=native") -- endif(NOT CMAKE_CROSSCOMPILING) --ENDIF(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_BUILD_TYPE MATCHES "Debug") -- --# Global flags: --IF (BUILD_METIS) -- INCLUDE_DIRECTORIES("${METIS_SOURCE_DIR}/include") --ELSE (BUILD_METIS) -- ADD_DEFINITIONS(-DNPARTITION) --ENDIF ( BUILD_METIS) -- - # Disable COMPLEX numbers: disable it by default, since it causes problems in some platforms. - SET(HAVE_COMPLEX OFF CACHE BOOL "Enables building SuiteSparse with complex numbers (disabled by default to avoid problems in some platforms)") - IF (NOT HAVE_COMPLEX) -@@ -38,12 +20,12 @@ if(WITH_CUDA) - set(SUBPROJECTS_TO_ADD - ${SUBPROJECTS_TO_ADD} - SuiteSparse_GPURuntime -- GPUQREngine -+ GPUQREngine - ) - endif() - - set(SUBPROJECTS_TO_ADD -- ${SUBPROJECTS_TO_ADD} -+ ${SUBPROJECTS_TO_ADD} - SuiteSparse_config - AMD - BTF -diff --git a/cmake/SuiteSparse-config-install.cmake.in b/cmake/SuiteSparse-config-install.cmake.in -index 1e587d1..fd8f3a7 100644 ---- a/cmake/SuiteSparse-config-install.cmake.in -+++ b/cmake/SuiteSparse-config-install.cmake.in -@@ -2,20 +2,14 @@ - get_filename_component(_SuiteSparse_SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) - get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_SELF_DIR}" PATH) - get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_PREFIX}" PATH) --get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_PREFIX}" PATH) - - include(CMakeFindDependencyMacro) --if (@SuiteSparse_LAPACK_used_CONFIG@) # SuiteSparse_LAPACK_used_CONFIG -- # use config file which provides LAPACK (and BLAS) for us -- find_dependency(LAPACK CONFIG) --else() -- # try to find BLAS and LAPACK with modules - find_dependency(BLAS) - find_dependency(LAPACK) --endif () -+ @SuiteSparse_FIND_DEPENDENCY_METIS@ - - # Load targets from the install tree. --include(${_SuiteSparse_SELF_DIR}/SuiteSparse-targets.cmake) -+include(${_SuiteSparse_SELF_DIR}/suitesparse-targets.cmake) - - # Report SuiteSparse header search locations. - set(SuiteSparse_INCLUDE_DIRS ${_SuiteSparse_PREFIX}/include) -@@ -39,3 +33,7 @@ set(SuiteSparse_LIBRARIES - - unset(_SuiteSparse_PREFIX) - unset(_SuiteSparse_SELF_DIR) -+set(SUITESPARSE_FOUND TRUE) -+set(SuiteSparse_FOUND TRUE) -+set(SUITESPARSE_LIBRARIES ${SuiteSparse_LIBRARIES}) -+set(SUITESPARSE_INCLUDE_DIRS ${SuiteSparse_INCLUDE_DIRS}) diff --git a/ports/suitesparse/portfile.cmake b/ports/suitesparse/portfile.cmake index c8a8c95e8605ba..065116c276adcf 100644 --- a/ports/suitesparse/portfile.cmake +++ b/ports/suitesparse/portfile.cmake @@ -1,55 +1 @@ -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO DrTimothyAldenDavis/SuiteSparse - REF 71e330ca2bc0a2f12f416c461d23dbca21db4d8f - SHA512 06c75927c924cfd5511b07504e826714f504586243d6f3449d67408a33f3ecea824a7f2de7a165171791b9bda4fc09c0d7093125970895c2ed8d4d37ca1d5a3d - HEAD_REF master -) - -vcpkg_from_github( - OUT_SOURCE_PATH SUITESPARSEWIN_SOURCE_PATH - REPO jlblancoc/suitesparse-metis-for-windows - REF c11e8dd7a2ef7d0d93af4c16f75374dd8ca029e2 - SHA512 fbd2a9e6f7df47eeb5d890c7b286bef7fc4c8bcb22783ce800723bacaf2cfe902177828ce5b9e1c2ed9fb5c54591c5fb046a8667e7d354d452a4baac693e47d2 - HEAD_REF master - PATCHES - build_fixes.patch -) - -# Copy suitesparse sources. -message(STATUS "Overwriting SuiteSparseWin source files with SuiteSparse source files...") -# Should probably remove everything but CMakeLists.txt files? -file(GLOB SUITESPARSE_SOURCE_FILES "${SOURCE_PATH}/*") -foreach(SOURCE_FILE ${SUITESPARSE_SOURCE_FILES}) - file(COPY "${SOURCE_FILE}" DESTINATION "${SUITESPARSEWIN_SOURCE_PATH}/SuiteSparse") -endforeach() -message(STATUS "Overwriting SuiteSparseWin source files with SuiteSparse source files... done") -message(STATUS "Removing integrated lapack and metis lib...") -file(REMOVE_RECURSE "${SUITESPARSEWIN_SOURCE_PATH}/lapack_windows") -file(REMOVE_RECURSE "${SUITESPARSEWIN_SOURCE_PATH}/SuiteSparse/metis-5.1.0") -message(STATUS "Removing integrated lapack and metis lib... done") - -vcpkg_cmake_configure( - SOURCE_PATH "${SUITESPARSEWIN_SOURCE_PATH}" - OPTIONS - -DBUILD_METIS=OFF - -DUSE_VCPKG_METIS=ON - "-DMETIS_SOURCE_DIR=${CURRENT_INSTALLED_DIR}" - OPTIONS_DEBUG - "-DSUITESPARSE_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR}/debug" - OPTIONS_RELEASE - "-DSUITESPARSE_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR}" -) - -vcpkg_cmake_install() - -vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/suitesparse) - -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") - -file(INSTALL "${SOURCE_PATH}/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) -file(INSTALL "${SUITESPARSEWIN_SOURCE_PATH}/LICENSE.md" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright_suitesparse-metis-for-windows) - -file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/cxsparse") -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper_cxsparse.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/cxsparse" RENAME vcpkg-cmake-wrapper.cmake) -file(COPY "${CMAKE_CURRENT_LIST_DIR}/FindCXSparse.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/cxsparse") +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/ports/suitesparse/vcpkg-cmake-wrapper_cxsparse.cmake b/ports/suitesparse/vcpkg-cmake-wrapper_cxsparse.cmake deleted file mode 100644 index 67d87e8b69055b..00000000000000 --- a/ports/suitesparse/vcpkg-cmake-wrapper_cxsparse.cmake +++ /dev/null @@ -1,10 +0,0 @@ -set(CXSPARSE_PREV_MODULE_PATH ${CMAKE_MODULE_PATH}) -list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) - -list(REMOVE_ITEM ARGS "NO_MODULE") -list(REMOVE_ITEM ARGS "CONFIG") -list(REMOVE_ITEM ARGS "MODULE") - -_find_package(${ARGS}) - -set(CMAKE_MODULE_PATH ${CXSPARSE_PREV_MODULE_PATH}) diff --git a/ports/suitesparse/vcpkg.json b/ports/suitesparse/vcpkg.json index c3a8f25f2ecb24..3f2835f493970d 100644 --- a/ports/suitesparse/vcpkg.json +++ b/ports/suitesparse/vcpkg.json @@ -1,19 +1,102 @@ { + "$comment": "Use scripts/update_suitesparse.py to update all SuiteSparse ports", "name": "suitesparse", - "version-semver": "5.8.0", - "port-version": 2, - "description": "A suite of sparse matrix algorithms. Also provides libcxsparse.", - "homepage": "http://suitesparse.com", + "version-semver": "7.8.3", + "description": "A suite of sparse matrix algorithms", + "homepage": "https://people.engr.tamu.edu/davis/suitesparse.html", + "license": null, "dependencies": [ - "lapack", - "metis", - { - "name": "vcpkg-cmake", - "host": true + "suitesparse-amd", + "suitesparse-btf", + "suitesparse-camd", + "suitesparse-ccolamd", + "suitesparse-cholmod", + "suitesparse-colamd", + "suitesparse-config", + "suitesparse-cxsparse", + "suitesparse-graphblas", + "suitesparse-klu", + "suitesparse-lagraph", + "suitesparse-ldl", + "suitesparse-spex" + ], + "features": { + "cuda": { + "description": "Enable CUDA support for the current compute architecture of this machine", + "dependencies": [ + { + "name": "suitesparse-cholmod", + "features": [ + "cuda" + ] + }, + { + "name": "suitesparse-spqr", + "features": [ + "cuda" + ] + } + ] }, - { - "name": "vcpkg-cmake-config", - "host": true + "gpl": { + "description": "Enable GPL-licensed packages", + "dependencies": [ + { + "name": "suitesparse-cholmod", + "features": [ + "matrixops", + "modify", + "supernodal" + ] + }, + "suitesparse-mongoose", + "suitesparse-paru", + "suitesparse-rbio", + "suitesparse-spqr", + "suitesparse-umfpack" + ] + }, + "openmp": { + "description": "Enable OpenMP support for SuiteSparse libraries", + "dependencies": [ + { + "name": "suitesparse-cholmod", + "features": [ + "openmp" + ] + }, + { + "name": "suitesparse-config", + "features": [ + "openmp" + ] + }, + { + "name": "suitesparse-graphblas", + "features": [ + "openmp" + ] + }, + { + "name": "suitesparse-lagraph", + "features": [ + "openmp" + ] + }, + { + "name": "suitesparse-paru", + "features": [ + "openmp" + ], + "platform": "!windows" + }, + { + "name": "suitesparse-spex", + "features": [ + "openmp" + ] + } + ] } - ] + } } diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index 62c370e4740997..8f4ef316a60fb7 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -1087,6 +1087,19 @@ spscqueue:x64-android=fail stormlib:arm64-uwp=fail stormlib:x64-uwp=fail stxxl:arm-neon-android=fail +# _Interlocked* intrinsic functions are not available on x86 +suitesparse-graphblas:x86-windows=fail +# "ninja: error: failed recompaction: Permission denied" +# See https://gist.github.com/valgur/a27f15e16efe93b1ed589703c3cb22cd for the build logs +suitesparse-graphblas:arm64-windows=fail +suitesparse-graphblas:arm64-windows-static-md=fail +# uwp: "unresolved external symbol __imp_RoInitialize referenced in function __scrt_initialize_winrt" +suitesparse-graphblas:x64-uwp=fail +suitesparse-graphblas:arm64-uwp=fail +# Android API level 23 or newer is required for complex math support +suitesparse-graphblas:arm-neon-android=fail +suitesparse-graphblas:arm64-android=fail +suitesparse-graphblas:x64-android=fail systemc:arm64-windows=fail systemc:arm64-windows-static-md=fail systemc:arm64-uwp=fail diff --git a/scripts/update_suitesparse.py b/scripts/update_suitesparse.py new file mode 100755 index 00000000000000..419683d53ae0ad --- /dev/null +++ b/scripts/update_suitesparse.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python3 + +# Usage: ./update_suitesparse.py +# +# Updates the `suitesparse` port and all of its `suitesparse-*` sub-packages +# based on the source archive automatically downloaded of the given version. + +import hashlib +import io +import json +import re +import sys +import tarfile +from pathlib import Path + +import requests + +ports_root = Path(__file__).resolve().parent.parent / "ports" + + +def download(url): + print(f"Downloading {url}...") + r = requests.get(url) + r.raise_for_status() + return r.content + + +def sha512(data): + sha = hashlib.sha512() + sha.update(data) + return sha.hexdigest() + + +def extract_version(content): + major = re.search(r"^set *\( *(\w+)_VERSION_MAJOR +(\d+) ", content, re.M).group(2) + minor = re.search(r"^set *\( *(\w+)_VERSION_MINOR +(\d+) ", content, re.M).group(2) + sub = re.search(r"^set *\( *(\w+)_VERSION_(?:SUB|PATCH|UPDATE) +(\d+) ", content, re.M).group(2) + return f"{major}.{minor}.{sub}" + + +def load_versions(tar_gz_bytes): + versions = {} + tar_gz_file = io.BytesIO(tar_gz_bytes) + with tarfile.open(fileobj=tar_gz_file, mode="r:gz") as tar: + for member in tar.getmembers(): + if not member.isfile(): + continue + if m := re.fullmatch(r"SuiteSparse-[^/]+/(\w+)/CMakeLists.txt", member.name): + name = m.group(1) + if name in ["Example", "GraphBLAS", "CSparse"]: + continue + content = tar.extractfile(member).read().decode("utf8") + versions[name] = extract_version(content) + elif member.name.endswith("GraphBLAS_version.cmake"): + content = tar.extractfile(member).read().decode("utf8") + versions["GraphBLAS"] = extract_version(content) + return versions + + +def update_manifest(pkg_name, version): + port_dir = ports_root / pkg_name + manifest_path = port_dir / "vcpkg.json" + manifest = json.loads(manifest_path.read_text("utf8")) + if manifest["version-semver"] == version: + return False + manifest["version-semver"] = version + manifest_path.write_text(json.dumps(manifest, indent=2) + "\n") + return True + + +def update_portfile(pkg_name, new_version, new_hash): + port_dir = ports_root / pkg_name + portfile_path = port_dir / "portfile.cmake" + content = portfile_path.read_text("utf8") + content, n = re.subn(r"\bREF v\S+", f"REF v{new_version}", content, re.M) + if n != 1: + raise Exception(f"Updating {pkg_name} portfile ref failed!") + content, n = re.subn(r"\bSHA512 \S+", f"SHA512 {new_hash}", content, re.M) + if n != 1: + raise Exception(f"Updating {pkg_name} portfile hash failed!") + portfile_path.write_text(content) + + +def update_port(pkg_name, new_version, suitesparse_hash): + port_dir = ports_root / pkg_name + if not port_dir.exists(): + raise Exception(f"'{pkg_name}' does not exist!") + update_manifest(pkg_name, new_version) + # Always update the tag in vcpkg_from_github() even if version has not changed + # to avoid having to download multiple versions of the source archive. + print(f"{pkg_name}: updating...") + if pkg_name == "suitesparse-graphblas": + url = f"https://github.com/DrTimothyAldenDavis/GraphBLAS/archive/refs/tags/v{new_version}.tar.gz" + graphblas_hash = sha512(download(url)) + update_portfile(pkg_name, new_version, graphblas_hash) + else: + update_portfile(pkg_name, suitesparse_version, suitesparse_hash) + + +def main(suitesparse_version): + suitesparse_url = ( + f"https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/refs/tags/v{suitesparse_version}.tar.gz" + ) + tar_gz_bytes = download(suitesparse_url) + suitesparse_hash = sha512(tar_gz_bytes) + print("Reading versions from CMakeLists.txt files...") + versions = load_versions(tar_gz_bytes) + for lib, new_version in versions.items(): + pkg_name = "suitesparse-config" if lib == "SuiteSparse_config" else "suitesparse-" + lib.lower() + update_port(pkg_name, new_version, suitesparse_hash) + update_manifest("suitesparse", suitesparse_version) + print("Done!") + + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Usage: ./update_suitesparse.py ") + sys.exit(1) + suitesparse_version = sys.argv[1] + main(suitesparse_version) diff --git a/versions/baseline.json b/versions/baseline.json index 165cd3df4111de..309586e05e8d59 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -1562,7 +1562,7 @@ }, "ceres": { "baseline": "2.2.0", - "port-version": 0 + "port-version": 1 }, "cfitsio": { "baseline": "3.49", @@ -1790,7 +1790,7 @@ }, "colmap": { "baseline": "3.11.1", - "port-version": 0 + "port-version": 1 }, "color-console": { "baseline": "2022-03-20", @@ -2970,7 +2970,7 @@ }, "g2o": { "baseline": "2024-12-14", - "port-version": 2 + "port-version": 3 }, "g3log": { "baseline": "2.4", @@ -8813,8 +8813,80 @@ "port-version": 9 }, "suitesparse": { - "baseline": "5.8.0", - "port-version": 2 + "baseline": "7.8.3", + "port-version": 0 + }, + "suitesparse-amd": { + "baseline": "3.3.3", + "port-version": 0 + }, + "suitesparse-btf": { + "baseline": "2.3.2", + "port-version": 0 + }, + "suitesparse-camd": { + "baseline": "3.3.3", + "port-version": 0 + }, + "suitesparse-ccolamd": { + "baseline": "3.3.4", + "port-version": 0 + }, + "suitesparse-cholmod": { + "baseline": "5.3.0", + "port-version": 0 + }, + "suitesparse-colamd": { + "baseline": "3.3.4", + "port-version": 0 + }, + "suitesparse-config": { + "baseline": "7.8.3", + "port-version": 0 + }, + "suitesparse-cxsparse": { + "baseline": "4.4.1", + "port-version": 0 + }, + "suitesparse-graphblas": { + "baseline": "9.3.1", + "port-version": 0 + }, + "suitesparse-klu": { + "baseline": "2.3.5", + "port-version": 0 + }, + "suitesparse-lagraph": { + "baseline": "1.1.4", + "port-version": 0 + }, + "suitesparse-ldl": { + "baseline": "3.3.2", + "port-version": 0 + }, + "suitesparse-mongoose": { + "baseline": "3.3.4", + "port-version": 0 + }, + "suitesparse-paru": { + "baseline": "1.0.0", + "port-version": 0 + }, + "suitesparse-rbio": { + "baseline": "4.3.4", + "port-version": 0 + }, + "suitesparse-spex": { + "baseline": "3.2.1", + "port-version": 0 + }, + "suitesparse-spqr": { + "baseline": "4.3.4", + "port-version": 0 + }, + "suitesparse-umfpack": { + "baseline": "6.3.5", + "port-version": 0 }, "sundials": { "baseline": "7.1.1", diff --git a/versions/c-/ceres.json b/versions/c-/ceres.json index 2875185a808aab..3c848f5c684738 100644 --- a/versions/c-/ceres.json +++ b/versions/c-/ceres.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "c513d3f02c6a12f193adbd33051058e576d2c3da", + "version": "2.2.0", + "port-version": 1 + }, { "git-tree": "ae2ddb638679c4955ec12f60c33eb43493786535", "version": "2.2.0", diff --git a/versions/c-/colmap.json b/versions/c-/colmap.json index 80da556ba77ad8..f38aadb8c05e4f 100644 --- a/versions/c-/colmap.json +++ b/versions/c-/colmap.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "7f2f32bedf07a0ac7a5bc43b81268b20b41b060e", + "version": "3.11.1", + "port-version": 1 + }, { "git-tree": "e07255def3b7cf947532848a0edfe51f66cd6f66", "version": "3.11.1", diff --git a/versions/g-/g2o.json b/versions/g-/g2o.json index 2b0de10b6aba54..da86e1842b5c18 100644 --- a/versions/g-/g2o.json +++ b/versions/g-/g2o.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "f4853fa73127d768413a58dd74a63e311d2811cd", + "version-date": "2024-12-14", + "port-version": 3 + }, { "git-tree": "3c1f1836df83234a33a1f96cb292331f45f1650f", "version-date": "2024-12-14", diff --git a/versions/s-/suitesparse-amd.json b/versions/s-/suitesparse-amd.json new file mode 100644 index 00000000000000..8bc05eb8da2235 --- /dev/null +++ b/versions/s-/suitesparse-amd.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "a4fab6a86754a73637c653354bceef0bdea2bdc4", + "version-semver": "3.3.3", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-btf.json b/versions/s-/suitesparse-btf.json new file mode 100644 index 00000000000000..d74a05c463e798 --- /dev/null +++ b/versions/s-/suitesparse-btf.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "32fb1a497390b41ab7a6af94195b0bbcde3c1c3b", + "version-semver": "2.3.2", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-camd.json b/versions/s-/suitesparse-camd.json new file mode 100644 index 00000000000000..dedc30296ac175 --- /dev/null +++ b/versions/s-/suitesparse-camd.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "c094131b109435ad56ab6d6f9417453c43dbacf9", + "version-semver": "3.3.3", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-ccolamd.json b/versions/s-/suitesparse-ccolamd.json new file mode 100644 index 00000000000000..e866aeb73428d6 --- /dev/null +++ b/versions/s-/suitesparse-ccolamd.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "8f5e5f4c7c2b0748f3aca63dac805e5a0b929b92", + "version-semver": "3.3.4", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-cholmod.json b/versions/s-/suitesparse-cholmod.json new file mode 100644 index 00000000000000..00a9e63a56ed04 --- /dev/null +++ b/versions/s-/suitesparse-cholmod.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "d5b65e6c6db8bb75f0701ff5164a83556fb0cb2e", + "version-semver": "5.3.0", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-colamd.json b/versions/s-/suitesparse-colamd.json new file mode 100644 index 00000000000000..1410a33b604d46 --- /dev/null +++ b/versions/s-/suitesparse-colamd.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "0be8cf0d5a1f0e153fd2d86087cfeba6b18bcc7f", + "version-semver": "3.3.4", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-config.json b/versions/s-/suitesparse-config.json new file mode 100644 index 00000000000000..4cca2034f1c8ed --- /dev/null +++ b/versions/s-/suitesparse-config.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "e81b523e6d16c4af9d8abc86316b87da52e55eeb", + "version-semver": "7.8.3", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-cxsparse.json b/versions/s-/suitesparse-cxsparse.json new file mode 100644 index 00000000000000..c778b6fe5784ab --- /dev/null +++ b/versions/s-/suitesparse-cxsparse.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "90e50a5644c3d1d97cca75a8b3a27774f0d51726", + "version-semver": "4.4.1", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-graphblas.json b/versions/s-/suitesparse-graphblas.json new file mode 100644 index 00000000000000..48ba2de8ab0d7f --- /dev/null +++ b/versions/s-/suitesparse-graphblas.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "dd22513a4574dcbd0f3da68793a2553250d48d68", + "version-semver": "9.3.1", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-klu.json b/versions/s-/suitesparse-klu.json new file mode 100644 index 00000000000000..adc1358a5ed50a --- /dev/null +++ b/versions/s-/suitesparse-klu.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "2acd8c29384983f7546442ff3f5702022133f582", + "version-semver": "2.3.5", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-lagraph.json b/versions/s-/suitesparse-lagraph.json new file mode 100644 index 00000000000000..150a3f3fab8bb6 --- /dev/null +++ b/versions/s-/suitesparse-lagraph.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "09ad074c071367bc56c4fabe050329229c1178e7", + "version-semver": "1.1.4", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-ldl.json b/versions/s-/suitesparse-ldl.json new file mode 100644 index 00000000000000..bd5e51e23759c6 --- /dev/null +++ b/versions/s-/suitesparse-ldl.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "e04f8bc03518f9a3996cf06b459aff42a7614b5e", + "version-semver": "3.3.2", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-mongoose.json b/versions/s-/suitesparse-mongoose.json new file mode 100644 index 00000000000000..f11f6e695206dd --- /dev/null +++ b/versions/s-/suitesparse-mongoose.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "a52c1697a649f8103a7747ae37ade388df0114ec", + "version-semver": "3.3.4", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-paru.json b/versions/s-/suitesparse-paru.json new file mode 100644 index 00000000000000..231998fdc05ffb --- /dev/null +++ b/versions/s-/suitesparse-paru.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "6dbf9f5ee322a71ed81296be57f3152ee5aab89a", + "version-semver": "1.0.0", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-rbio.json b/versions/s-/suitesparse-rbio.json new file mode 100644 index 00000000000000..c062b5e121011f --- /dev/null +++ b/versions/s-/suitesparse-rbio.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "dfa06ea20dc02a1b9556779ddefefc104e5fae97", + "version-semver": "4.3.4", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-spex.json b/versions/s-/suitesparse-spex.json new file mode 100644 index 00000000000000..f44b3a33d988ce --- /dev/null +++ b/versions/s-/suitesparse-spex.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "3518f32caf90c50135f4cc86f47c4bd004e7cf01", + "version-semver": "3.2.1", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-spqr.json b/versions/s-/suitesparse-spqr.json new file mode 100644 index 00000000000000..c03e89d084053f --- /dev/null +++ b/versions/s-/suitesparse-spqr.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "d95de97995cfd58a3f385beb06c20c9f60e17dbf", + "version-semver": "4.3.4", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse-umfpack.json b/versions/s-/suitesparse-umfpack.json new file mode 100644 index 00000000000000..401785d6fd8f09 --- /dev/null +++ b/versions/s-/suitesparse-umfpack.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "0061796cc2c7fca5123d01266055f344817a984f", + "version-semver": "6.3.5", + "port-version": 0 + } + ] +} diff --git a/versions/s-/suitesparse.json b/versions/s-/suitesparse.json index 92ee992824c6f9..de8564d18943d1 100644 --- a/versions/s-/suitesparse.json +++ b/versions/s-/suitesparse.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "af97539d5cd3d478feb099b3b652a673828f580f", + "version-semver": "7.8.3", + "port-version": 0 + }, { "git-tree": "fb26833d46e56ee2e9986294be860acc1e81c074", "version-semver": "5.8.0", diff --git a/versions/t-/theia.json b/versions/t-/theia.json index 6da34965a18c73..33dbf67cee55b0 100644 --- a/versions/t-/theia.json +++ b/versions/t-/theia.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "f8e946577045c31a9427448049ebe4e98c4624a4", + "version": "0.8", + "port-version": 13 + }, { "git-tree": "fcce9342a3c7301139dd9d9a388657d99fdcc159", "version": "0.8",