forked from NVIDIA/cccl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
98 lines (79 loc) · 3.06 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
macro(pythonize_bool var)
if (${var})
set(${var} True)
else()
set(${var} False)
endif()
endmacro()
set(LIBCUDACXX_HIGHEST_COMPUTE_ARCH 90)
foreach (COMPUTE_ARCH ${LIBCUDACXX_COMPUTE_ARCHS})
set(_compute_message "${_compute_message} sm_${COMPUTE_ARCH}")
set(LIBCUDACXX_COMPUTE_ARCHS_STRING "${LIBCUDACXX_COMPUTE_ARCHS_STRING} ${COMPUTE_ARCH}")
endforeach ()
message(STATUS "Enabled CUDA architectures:${_compute_message}")
option(LIBCUDACXX_TEST_WITH_NVRTC
"Test libcu++ with runtime compilation instead of offline compilation. Only runs device side tests."
OFF)
if (LIBCUDACXX_TEST_WITH_NVRTC)
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
message(FATAL_ERROR "NVRTC testing not supported on Windows. \
Set LIBCUDACXX_TEST_WITH_NVRTC to OFF.")
endif()
set(LIBCUDACXX_CUDA_COMPILER "${CMAKE_CURRENT_SOURCE_DIR}/../utils/nvidia/nvrtc/nvrtc.sh")
set(LIBCUDACXX_CUDA_COMPILER_ARG1 "${CMAKE_CUDA_COMPILER}")
else() # NOT LIBCUDACXX_TEST_WITH_NVRTC
set(LIBCUDACXX_FORCE_INCLUDE "-include ${CMAKE_CURRENT_SOURCE_DIR}/force_include.h")
set(LIBCUDACXX_CUDA_COMPILER "${CMAKE_CUDA_COMPILER}")
endif()
if (NOT MSVC)
set(LIBCUDACXX_WARNING_LEVEL
"--compiler-options=-Wall \
--compiler-options=-Wextra")
endif()
# sccache cannot handle the -Fd option generationg pdb files
if (MSVC)
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
endif()
# Intel OneAPI compiler has fast math enabled by default which breaks almost all floating point tests
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "IntelLLVM")
set(LIBCUDACXX_TEST_COMPILER_FLAGS
"${LIBCUDACXX_TEST_COMPILER_FLAGS} \
--compiler-options=-fno-fast-math")
endif()
if (${CMAKE_CUDA_COMPILER_ID} STREQUAL "NVIDIA")
set(LIBCUDACXX_TEST_COMPILER_FLAGS
"${LIBCUDACXX_TEST_COMPILER_FLAGS} \
${LIBCUDACXX_FORCE_INCLUDE} \
-I${libcudacxx_SOURCE_DIR}/include \
${LIBCUDACXX_WARNING_LEVEL}")
endif()
if (${CMAKE_CUDA_COMPILER_ID} STREQUAL "NVHPC")
set(LIBCUDACXX_TEST_COMPILER_FLAGS
"${LIBCUDACXX_TEST_COMPILER_FLAGS} \
-stdpar")
set(LIBCUDACXX_TEST_LINKER_FLAGS
"${LIBCUDACXX_TEST_LINKER_FLAGS} \
-stdpar")
endif()
set(LIBCUDACXX_COMPUTE_ARCHS_STRING
"${CMAKE_CUDA_ARCHITECTURES}")
include(AddLLVM)
set(LIBCUDACXX_TARGET_INFO "libcudacxx.test.target_info.LocalTI" CACHE STRING
"TargetInfo to use when setting up test environment.")
set(LIBCUDACXX_EXECUTOR "None" CACHE STRING
"Executor to use when running tests.")
# NVRTC needs extra time until we can get compilation seperated.
if (LIBCUDACXX_TEST_WITH_NVRTC)
set(LIBCUDACXX_TEST_TIMEOUT "0" CACHE STRING "Enable test timeouts (Default = 200, Off = 0)")
else()
set(LIBCUDACXX_TEST_TIMEOUT "200" CACHE STRING "Enable test timeouts (Default = 200, Off = 0)")
endif()
set(AUTO_GEN_COMMENT "## Autogenerated by libcudacxx configuration.\n# Do not edit!")
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg)
add_lit_testsuite(check-cudacxx
"Running libcu++ tests"
${CMAKE_CURRENT_BINARY_DIR})
# Add test target for standalone headers
add_subdirectory(host_only)