Clang-CUDA.cmake 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. include(Compiler/Clang)
  2. __compiler_clang(CUDA)
  3. # Set explicitly, because __compiler_clang() doesn't set this if we're simulating MSVC.
  4. set(CMAKE_DEPFILE_FLAGS_CUDA "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
  5. if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
  6. AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
  7. # dependencies are computed by the compiler itself
  8. set(CMAKE_CUDA_DEPFILE_FORMAT gcc)
  9. set(CMAKE_CUDA_DEPENDS_USE_COMPILER TRUE)
  10. endif()
  11. # C++03 isn't supported for CXX, but is for CUDA, so we need to set these manually.
  12. # Do this before __compiler_clang_cxx_standards() since that adds the feature.
  13. set(CMAKE_CUDA03_STANDARD_COMPILE_OPTION "-std=c++03")
  14. set(CMAKE_CUDA03_EXTENSION_COMPILE_OPTION "-std=gnu++03")
  15. __compiler_clang_cxx_standards(CUDA)
  16. set(CMAKE_CUDA_COMPILER_HAS_DEVICE_LINK_PHASE TRUE)
  17. set(_CMAKE_COMPILE_AS_CUDA_FLAG "-x cuda")
  18. set(_CMAKE_CUDA_WHOLE_FLAG "-c")
  19. set(_CMAKE_CUDA_RDC_FLAG "-fgpu-rdc")
  20. set(_CMAKE_CUDA_PTX_FLAG "--cuda-device-only -S")
  21. # Device linking is just regular linking so these are the same.
  22. set(CMAKE_CUDA_DEVICE_LINKER_WRAPPER_FLAG ${CMAKE_CUDA_LINKER_WRAPPER_FLAG})
  23. set(CMAKE_CUDA_DEVICE_LINKER_WRAPPER_FLAG_SEP ${CMAKE_CUDA_LINKER_WRAPPER_FLAG_SEP})
  24. # RulePlaceholderExpander expands crosscompile variables like sysroot and target only for CMAKE_<LANG>_COMPILER. Override the default.
  25. set(CMAKE_CUDA_LINK_EXECUTABLE "<CMAKE_CUDA_COMPILER> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")
  26. set(CMAKE_CUDA_CREATE_SHARED_LIBRARY "<CMAKE_CUDA_COMPILER> <CMAKE_SHARED_LIBRARY_CUDA_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")
  27. set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "STATIC")
  28. set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC "cudadevrt;cudart_static")
  29. set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_SHARED "cudadevrt;cudart")
  30. set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_NONE "")
  31. if(UNIX)
  32. list(APPEND CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC "rt" "pthread" "dl")
  33. endif()
  34. if(APPLE)
  35. # Defines host link features for frameworks
  36. set(CMAKE_CUDA_LINK_LIBRARY_USING_FRAMEWORK "LINKER:-framework,<LIBRARY>")
  37. set(CMAKE_CUDA_LINK_LIBRARY_USING_FRAMEWORK_SUPPORTED TRUE)
  38. set(CMAKE_CUDA_LINK_LIBRARY_USING_NEEDED_FRAMEWORK "LINKER:-needed_framework,<LIBRARY>")
  39. set(CMAKE_CUDA_LINK_LIBRARY_USING_NEEDED_FRAMEWORK_SUPPORTED TRUE)
  40. set(CMAKE_CUDA_LINK_LIBRARY_USING_REEXPORT_FRAMEWORK "LINKER:-reexport_framework,<LIBRARY>")
  41. set(CMAKE_CUDA_LINK_LIBRARY_USING_REEXPORT_FRAMEWORK_SUPPORTED TRUE)
  42. set(CMAKE_CUDA_LINK_LIBRARY_USING_WEAK_FRAMEWORK "LINKER:-weak_framework,<LIBRARY>")
  43. set(CMAKE_CUDA_LINK_LIBRARY_USING_WEAK_FRAMEWORK_SUPPORTED TRUE)
  44. endif()