cmake/Modules/Platform/Windows-NVIDIA-CUDA.cmake

101 lines
5.0 KiB
CMake
Raw Normal View History

2017-04-14 19:02:05 +02:00
include(Platform/Windows-MSVC)
2022-03-29 21:10:50 +02:00
set(CMAKE_CUDA_COMPILE_OBJECT
"<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} <CUDA_COMPILE_MODE> <SOURCE> -o <OBJECT> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS")
2017-04-14 19:02:05 +02:00
2021-09-14 00:13:48 +02:00
set(__IMPLICIT_LINKS)
2017-04-14 19:02:05 +02:00
foreach(dir ${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES})
2021-09-14 00:13:48 +02:00
string(APPEND __IMPLICIT_LINKS " -LIBPATH:\"${dir}\"")
2017-04-14 19:02:05 +02:00
endforeach()
foreach(lib ${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES})
2021-09-14 00:13:48 +02:00
string(APPEND __IMPLICIT_LINKS " \"${lib}\"")
2017-04-14 19:02:05 +02:00
endforeach()
set(CMAKE_CUDA_LINK_EXECUTABLE
2021-09-14 00:13:48 +02:00
"<CMAKE_CUDA_HOST_LINK_LAUNCHER> <LINK_FLAGS> <OBJECTS> /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")
2017-04-14 19:02:05 +02:00
2019-11-11 23:01:05 +01:00
set(_CMAKE_VS_LINK_DLL "<CMAKE_COMMAND> -E vs_link_dll --intdir=<OBJECT_DIR> --rc=<CMAKE_RC_COMPILER> --mt=<CMAKE_MT> --manifests <MANIFESTS> -- ")
set(_CMAKE_VS_LINK_EXE "<CMAKE_COMMAND> -E vs_link_exe --intdir=<OBJECT_DIR> --rc=<CMAKE_RC_COMPILER> --mt=<CMAKE_MT> --manifests <MANIFESTS> -- ")
2017-04-14 19:02:05 +02:00
set(CMAKE_CUDA_CREATE_SHARED_LIBRARY
2021-09-14 00:13:48 +02:00
"${_CMAKE_VS_LINK_DLL}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /dll /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR>${_PLATFORM_LINK_FLAGS} <LINK_FLAGS> <LINK_LIBRARIES>${__IMPLICIT_LINKS} ${CMAKE_END_TEMP_FILE}")
2017-04-14 19:02:05 +02:00
set(CMAKE_CUDA_CREATE_SHARED_MODULE ${CMAKE_CUDA_CREATE_SHARED_LIBRARY})
2020-08-30 11:54:41 +02:00
set(CMAKE_CUDA_CREATE_STATIC_LIBRARY "<CMAKE_AR> ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ")
2017-04-14 19:02:05 +02:00
set(CMAKE_CUDA_LINKER_SUPPORTS_PDB ON)
set(CMAKE_CUDA_LINK_EXECUTABLE
2021-09-14 00:13:48 +02:00
"${_CMAKE_VS_LINK_EXE}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR>${_PLATFORM_LINK_FLAGS} <LINK_FLAGS> <LINK_LIBRARIES>${__IMPLICIT_LINKS} ${CMAKE_END_TEMP_FILE}")
unset(_CMAKE_VS_LINK_DLL)
2017-04-14 19:02:05 +02:00
unset(_CMAKE_VS_LINK_EXE)
2017-07-20 19:35:53 +02:00
2018-08-09 18:06:22 +02:00
# Add implicit host link directories that contain device libraries
# to the device link line.
2021-09-14 00:13:48 +02:00
set(__IMPLICIT_DLINK_DIRS ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES})
if(__IMPLICIT_DLINK_DIRS)
list(REMOVE_ITEM __IMPLICIT_DLINK_DIRS ${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES})
2018-08-09 18:06:22 +02:00
endif()
2021-09-14 00:13:48 +02:00
set(__IMPLICIT_DLINK_FLAGS)
foreach(dir ${__IMPLICIT_DLINK_DIRS})
2018-10-07 12:27:06 +02:00
if(EXISTS "${dir}/curand_static.lib")
2021-09-14 00:13:48 +02:00
string(APPEND __IMPLICIT_DLINK_FLAGS " -L\"${dir}\"")
2018-08-09 18:06:22 +02:00
endif()
endforeach()
2021-09-14 00:13:48 +02:00
unset(__IMPLICIT_DLINK_DIRS)
2018-08-09 18:06:22 +02:00
2017-04-14 19:02:05 +02:00
set(CMAKE_CUDA_DEVICE_LINK_LIBRARY
2021-09-14 00:13:48 +02:00
"<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS${__IMPLICIT_DLINK_FLAGS}")
2017-04-14 19:02:05 +02:00
set(CMAKE_CUDA_DEVICE_LINK_EXECUTABLE
2021-09-14 00:13:48 +02:00
"<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS${__IMPLICIT_DLINK_FLAGS}")
unset(__IMPLICIT_DLINK_FLAGS)
2017-04-14 19:02:05 +02:00
2024-04-14 22:45:38 +02:00
# linker selection
set(CMAKE_CUDA_USING_LINKER_SYSTEM "${CMAKE_LINKER_LINK}")
set(CMAKE_CUDA_USING_LINKER_LLD "${CMAKE_LINKER_LLD}")
set(CMAKE_CUDA_USING_LINKER_MSVC "${CMAKE_LINKER_LINK}")
set(CMAKE_CUDA_USING_LINKER_MODE TOOL)
2017-04-14 19:02:05 +02:00
string(REPLACE "/D" "-D" _PLATFORM_DEFINES_CUDA "${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_CXX}")
2019-11-11 23:01:05 +01:00
if(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT)
set(_MDd "")
set(_MD "")
else()
set(_MDd "-MDd ")
set(_MD "-MD ")
endif()
2022-11-16 20:14:03 +01:00
if(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT_DEFAULT)
set(_Zi "")
else()
set(_Zi " -Zi")
endif()
2019-11-11 23:01:05 +01:00
cmake_policy(GET CMP0092 _cmp0092)
if(_cmp0092 STREQUAL "NEW")
set(_W3 "")
else()
set(_W3 "/W3")
endif()
unset(_cmp0092)
string(APPEND CMAKE_CUDA_FLAGS_INIT " ${PLATFORM_DEFINES_CUDA} -D_WINDOWS -Xcompiler=\"${_W3}${_FLAGS_CXX}\"")
2022-11-16 20:14:03 +01:00
string(APPEND CMAKE_CUDA_FLAGS_DEBUG_INIT " -Xcompiler=\"${_MDd}${_Zi} -Ob0 -Od ${_RTC1}\"")
2019-11-11 23:01:05 +01:00
string(APPEND CMAKE_CUDA_FLAGS_RELEASE_INIT " -Xcompiler=\"${_MD}-O2 -Ob2\" -DNDEBUG")
2022-11-16 20:14:03 +01:00
string(APPEND CMAKE_CUDA_FLAGS_RELWITHDEBINFO_INIT " -Xcompiler=\"${_MD}${_Zi} -O2 -Ob1\" -DNDEBUG")
2019-11-11 23:01:05 +01:00
string(APPEND CMAKE_CUDA_FLAGS_MINSIZEREL_INIT " -Xcompiler=\"${_MD}-O1 -Ob1\" -DNDEBUG")
unset(_W3)
2022-11-16 20:14:03 +01:00
unset(_Zi)
2019-11-11 23:01:05 +01:00
unset(_MDd)
unset(_MD)
set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded -Xcompiler=-MT)
set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL -Xcompiler=-MD)
set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug -Xcompiler=-MTd)
set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL -Xcompiler=-MDd)
2022-11-16 20:14:03 +01:00
set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_Embedded -Xcompiler=-Z7)
set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_ProgramDatabase -Xcompiler=-Zi)
set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_EditAndContinue -Xcompiler=-ZI)
2017-04-14 19:02:05 +02:00
set(CMAKE_CUDA_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
2019-11-11 23:01:05 +01:00
__windows_compiler_msvc_enable_rc("${_PLATFORM_DEFINES} ${_PLATFORM_DEFINES_CXX}")