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-spqr | |
Diffstat (limited to 'vcpkg/ports/suitesparse-spqr')
| -rw-r--r-- | vcpkg/ports/suitesparse-spqr/001-dont-override-cuda-architectures.patch | 47 | ||||
| -rw-r--r-- | vcpkg/ports/suitesparse-spqr/portfile.cmake | 61 | ||||
| -rw-r--r-- | vcpkg/ports/suitesparse-spqr/vcpkg.json | 34 |
3 files changed, 142 insertions, 0 deletions
diff --git a/vcpkg/ports/suitesparse-spqr/001-dont-override-cuda-architectures.patch b/vcpkg/ports/suitesparse-spqr/001-dont-override-cuda-architectures.patch new file mode 100644 index 0000000..c32d5b5 --- /dev/null +++ b/vcpkg/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/vcpkg/ports/suitesparse-spqr/portfile.cmake b/vcpkg/ports/suitesparse-spqr/portfile.cmake new file mode 100644 index 0000000..f78a882 --- /dev/null +++ b/vcpkg/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/vcpkg/ports/suitesparse-spqr/vcpkg.json b/vcpkg/ports/suitesparse-spqr/vcpkg.json new file mode 100644 index 0000000..38d8628 --- /dev/null +++ b/vcpkg/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" + ] + } + } +} |