diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/suitesparse-cholmod | |
Diffstat (limited to 'vcpkg/ports/suitesparse-cholmod')
3 files changed, 177 insertions, 0 deletions
diff --git a/vcpkg/ports/suitesparse-cholmod/001-dont-override-cuda-architectures.patch b/vcpkg/ports/suitesparse-cholmod/001-dont-override-cuda-architectures.patch new file mode 100644 index 0000000..c32d5b5 --- /dev/null +++ b/vcpkg/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/vcpkg/ports/suitesparse-cholmod/portfile.cmake b/vcpkg/ports/suitesparse-cholmod/portfile.cmake new file mode 100644 index 0000000..eac6c4f --- /dev/null +++ b/vcpkg/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/vcpkg/ports/suitesparse-cholmod/vcpkg.json b/vcpkg/ports/suitesparse-cholmod/vcpkg.json new file mode 100644 index 0000000..03f7afd --- /dev/null +++ b/vcpkg/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" + ] + } + } +} |