aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/ceres/0005_link_cuda_static.patch
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/ceres/0005_link_cuda_static.patch
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/ceres/0005_link_cuda_static.patch')
-rw-r--r--vcpkg/ports/ceres/0005_link_cuda_static.patch99
1 files changed, 99 insertions, 0 deletions
diff --git a/vcpkg/ports/ceres/0005_link_cuda_static.patch b/vcpkg/ports/ceres/0005_link_cuda_static.patch
new file mode 100644
index 0000000..4152fed
--- /dev/null
+++ b/vcpkg/ports/ceres/0005_link_cuda_static.patch
@@ -0,0 +1,99 @@
+commit d0b87157ab0e27e9e4cf2ea27967b5d619e81a76
+Author: Markus Heß <hess@3dvisionlabs.com>
+Date: Sat Mar 2 13:28:02 2024 +0000
+
+ Link static cuda libs when ceres is build static
+
+ Change-Id: I8821a2df5302cf164b6f80d6787ae795691d6b32
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4ea82bcd..9729ccc2 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -126,7 +126,7 @@ if (APPLE)
+ endif()
+ # We can't have an option called 'CUDA' since that is a reserved word -- a
+ # language definition.
+-option(USE_CUDA "Enable use of CUDA linear algebra solvers." ON)
++set(USE_CUDA "default" CACHE STRING "Enable use of CUDA linear algebra solvers.")
+ option(LAPACK "Enable use of LAPACK directly within Ceres." ON)
+ # Template specializations for the Schur complement based solvers. If
+ # compile time, binary size or compiler performance is an issue, you
+@@ -204,6 +204,12 @@ if (Eigen3_FOUND)
+ endif (EIGENSPARSE)
+ endif (Eigen3_FOUND)
+
++if (CMAKE_VERSION VERSION_LESS 3.17)
++ set_property(CACHE USE_CUDA PROPERTY STRINGS OFF default)
++else (CMAKE_VERSION VERSION_LESS 3.17)
++ set_property(CACHE USE_CUDA PROPERTY STRINGS OFF default static)
++endif (CMAKE_VERSION VERSION_LESS 3.17)
++
+ if (USE_CUDA)
+ if (CMAKE_VERSION VERSION_LESS 3.17)
+ # On older versions of CMake (20.04 default is 3.16) FindCUDAToolkit was
+@@ -233,6 +239,7 @@ if (USE_CUDA)
+ declare_imported_cuda_target(cusparse)
+ declare_imported_cuda_target(cudart ${CUDA_LIBRARIES})
+
++ set(CERES_CUDA_TARGET_SUFFIX "")
+ set(CUDAToolkit_BIN_DIR ${CUDA_TOOLKIT_ROOT_DIR}/bin)
+
+ else (CUDA_FOUND)
+@@ -252,22 +259,31 @@ if (USE_CUDA)
+ set(CMAKE_CUDA_ARCHITECTURES "50;60;70;80")
+ message("-- Setting CUDA Architecture to ${CMAKE_CUDA_ARCHITECTURES}")
+ endif()
+- list(APPEND CERES_CUDA_LIBRARIES
+- CUDA::cublas
+- CUDA::cudart
+- CUDA::cusolver
+- CUDA::cusparse)
+- set(CMAKE_CUDA_RUNTIME_LIBRARY NONE)
++
++ if (USE_CUDA STREQUAL "static")
++ set(CERES_CUDA_TARGET_SUFFIX "_static")
++ else (USE_CUDA STREQUAL "static")
++ set(CERES_CUDA_TARGET_SUFFIX "")
++ endif (USE_CUDA STREQUAL "static")
+ else (CUDAToolkit_FOUND)
+ message("-- Did not find CUDA, disabling CUDA support.")
+ update_cache_variable(USE_CUDA OFF)
+ endif (CUDAToolkit_FOUND)
+ endif (CMAKE_VERSION VERSION_LESS 3.17)
+ endif (USE_CUDA)
+-if (NOT USE_CUDA)
++
++if (USE_CUDA)
++ list(APPEND CERES_CUDA_LIBRARIES
++ CUDA::cublas${CERES_CUDA_TARGET_SUFFIX}
++ CUDA::cudart${CERES_CUDA_TARGET_SUFFIX}
++ CUDA::cusolver${CERES_CUDA_TARGET_SUFFIX}
++ CUDA::cusparse${CERES_CUDA_TARGET_SUFFIX})
++ unset (CERES_CUDA_TARGET_SUFFIX)
++ set(CMAKE_CUDA_RUNTIME_LIBRARY NONE)
++else (USE_CUDA)
+ message("-- Building without CUDA.")
+ list(APPEND CERES_COMPILE_OPTIONS CERES_NO_CUDA)
+-endif (NOT USE_CUDA)
++endif (USE_CUDA)
+
+ if (LAPACK)
+ find_package(LAPACK QUIET)
+diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
+index eecef260..b7e31ee6 100644
+--- a/internal/ceres/CMakeLists.txt
++++ b/internal/ceres/CMakeLists.txt
+@@ -118,11 +118,7 @@ if (ACCELERATESPARSE AND AccelerateSparse_FOUND)
+ endif()
+
+ if (USE_CUDA)
+- list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES
+- CUDA::cublas
+- CUDA::cudart
+- CUDA::cusolver
+- CUDA::cusparse)
++ list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES ${CERES_CUDA_LIBRARIES})
+ set_source_files_properties(cuda_kernels_vector_ops.cu.cc PROPERTIES LANGUAGE CUDA)
+ set_source_files_properties(cuda_kernels_bsm_to_crs.cu.cc PROPERTIES LANGUAGE CUDA)
+ add_library(ceres_cuda_kernels STATIC cuda_kernels_vector_ops.cu.cc cuda_kernels_bsm_to_crs.cu.cc)