@@ -28,7 +28,7 @@ FetchContent_Declare(PoseLib
2828 SYSTEM
2929)
3030message (STATUS "Configuring PoseLib..." )
31- if (FETCH_POSELIB)
31+ if (FETCH_POSELIB)
3232 FetchContent_MakeAvailable(PoseLib)
3333else ()
3434 find_package (PoseLib REQUIRED)
@@ -42,9 +42,73 @@ FetchContent_Declare(COLMAP
4242)
4343message (STATUS "Configuring COLMAP..." )
4444set (UNINSTALL_ENABLED OFF CACHE INTERNAL "" )
45- if (FETCH_COLMAP)
45+ if (FETCH_COLMAP)
4646 FetchContent_MakeAvailable(COLMAP)
4747else ()
4848 find_package (COLMAP REQUIRED)
4949endif ()
5050message (STATUS "Configuring COLMAP... done" )
51+
52+ set (CUDA_MIN_VERSION "7.0" )
53+ if (CUDA_ENABLED)
54+ if (CMAKE_VERSION VERSION_LESS 3.17)
55+ find_package (CUDA QUIET )
56+ if (CUDA_FOUND)
57+ message (STATUS "Found CUDA version ${CUDA_VERSION} installed in "
58+ "${CUDA_TOOLKIT_ROOT_DIR} via legacy CMake (<3.17) module. "
59+ "Using the legacy CMake module means that any installation of "
60+ "COLMAP will require that the CUDA libraries are "
61+ "available under LD_LIBRARY_PATH." )
62+ message (STATUS "Found CUDA " )
63+ message (STATUS " Includes : ${CUDA_INCLUDE_DIRS} " )
64+ message (STATUS " Libraries : ${CUDA_LIBRARIES} " )
65+
66+ enable_language (CUDA)
67+
68+ macro (declare_imported_cuda_target module)
69+ add_library (CUDA::${module} INTERFACE IMPORTED )
70+ target_include_directories (
71+ CUDA::${module} INTERFACE ${CUDA_INCLUDE_DIRS} )
72+ target_link_libraries (
73+ CUDA::${module} INTERFACE ${CUDA_${module} _LIBRARY} ${ARGN} )
74+ endmacro ()
75+
76+ declare_imported_cuda_target(cudart ${CUDA_LIBRARIES} )
77+ declare_imported_cuda_target(curand ${CUDA_LIBRARIES} )
78+
79+ set (CUDAToolkit_VERSION "${CUDA_VERSION_STRING} " )
80+ set (CUDAToolkit_BIN_DIR "${CUDA_TOOLKIT_ROOT_DIR} /bin" )
81+ else ()
82+ message (STATUS "CUDA not found" )
83+ endif ()
84+ else ()
85+ find_package (CUDAToolkit QUIET )
86+ if (CUDAToolkit_FOUND)
87+ set (CUDA_FOUND ON )
88+ enable_language (CUDA)
89+ else ()
90+ message (STATUS "CUDA not found" )
91+ endif ()
92+ endif ()
93+ endif ()
94+
95+ if (CUDA_ENABLED AND CUDA_FOUND)
96+ if (NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
97+ set (CMAKE_CUDA_ARCHITECTURES "native" )
98+ endif ()
99+
100+ add_definitions ("-DGLOMAP_CUDA_ENABLED" )
101+
102+ # Do not show warnings if the architectures are deprecated.
103+ set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Wno-deprecated-gpu-targets" )
104+ # Explicitly set PIC flags for CUDA targets.
105+ if (NOT IS_MSVC)
106+ set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --compiler-options -fPIC" )
107+ endif ()
108+
109+ message (STATUS "Enabling CUDA support (version: ${CUDAToolkit_VERSION} , "
110+ "archs: ${CMAKE_CUDA_ARCHITECTURES} )" )
111+ else ()
112+ set (CUDA_ENABLED OFF )
113+ message (STATUS "Disabling CUDA support" )
114+ endif ()
0 commit comments