-
Notifications
You must be signed in to change notification settings - Fork 852
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
141 lines (120 loc) · 4.13 KB
/
Copy pathCMakeLists.txt
File metadata and controls
141 lines (120 loc) · 4.13 KB
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
cmake_minimum_required(VERSION 3.20.0)
message("Configuring SYCL End-to-End Tests")
option(SYCL_E2E_LIT_ALLOW_UNKNOWN_ARCH
"Allow unknown architectures when configuring e2e tests" Off)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
project(sycl-e2e-test-suite CXX)
set(SYCL_TEST_E2E_STANDALONE TRUE)
endif()
if(SYCL_TEST_E2E_STANDALONE)
if( NOT OpenCL_LIBRARY )
find_package(OpenCL)
endif()
if(NOT DEFINED LEVEL_ZERO_INCLUDE)
find_path(LEVEL_ZERO_PATH level_zero/ze_api.h PATH_SUFFIXES include)
if(LEVEL_ZERO_PATH)
set(LEVEL_ZERO_INCLUDE "${LEVEL_ZERO_PATH}")
endif()
endif()
if(NOT DEFINED LEVEL_ZERO_LIBS_DIR)
find_library(LEVEL_ZERO_LIBS_PATH ze_loader)
if(LEVEL_ZERO_LIBS_PATH)
# We have the path of the lib, get the containing directory
# so we can include it.
cmake_path(GET LEVEL_ZERO_LIBS_PATH PARENT_PATH LEVEL_ZERO_LIBS_PATH)
set(LEVEL_ZERO_LIBS_DIR "${LEVEL_ZERO_LIBS_PATH}")
endif()
endif()
else()
if( NOT OpenCL_LIBRARY )
set(OpenCL_LIBRARY "${LLVM_BINARY_DIR}/lib")
endif()
set(LEVEL_ZERO_INCLUDE "${LLVM_BINARY_DIR}/_deps/level-zero-loader-src/include")
set(LEVEL_ZERO_LIBS_DIR "${LLVM_BINARY_DIR}/lib")
endif() # Standalone.
if(SYCL_TEST_E2E_STANDALONE)
set(SYCL_CXX_COMPILER ${CMAKE_CXX_COMPILER})
set(SYCL_E2E_CLANG_CXX_FLAGS ${CMAKE_CXX_FLAGS})
else()
set(SYCL_CXX_COMPILER "${LLVM_BINARY_DIR}/bin/clang++")
set(SYCL_E2E_CLANG_CXX_FLAGS "" CACHE STRING
"Flags passed to clang++ when building SYCL end-to-end tests")
endif() # Standalone.
find_package(Threads REQUIRED)
set(SYCL_THREADS_LIB ${CMAKE_THREAD_LIBS_INIT})
find_package(Vulkan)
if(NOT LLVM_LIT)
find_program(LLVM_LIT
NAMES llvm-lit.py llvm-lit lit.py lit
PATHS "${LLVM_MAIN_SRC_DIR}/utils/lit"
DOC "Path to lit.py")
endif()
set(SYCL_E2E_TESTS_LIT_FLAGS "-sv" CACHE STRING "Flags used when running lit")
find_package(Python3 REQUIRED COMPONENTS Interpreter)
if(NOT SYCL_TEST_E2E_TARGETS)
set(SYCL_TEST_E2E_TARGETS "all")
endif()
if(NOT DEFINED CUDA_LIBS_DIR AND NOT DEFINED CUDA_INCLUDE)
find_package(CUDAToolkit)
if(CUDAToolkit_FOUND)
set(CUDA_LIBS_DIR "${CUDAToolkit_LIBRARY_DIR}")
set(CUDA_INCLUDE "${CUDAToolkit_INCLUDE_DIRS}")
endif()
endif()
find_package(hip HINTS ENV ROCM_PATH "/opt/rocm")
if(hip_FOUND)
set(HIP_LIBS_DIR "${hip_LIB_INSTALL_DIR}")
set(HIP_INCLUDE "${hip_INCLUDE_DIRS}")
endif()
# Extract the DPC++ version from the compiler output.
execute_process(
COMMAND ${SYCL_CXX_COMPILER} --version
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE CMPLR_RESULT
OUTPUT_VARIABLE CMPLR_VER
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(CMPLR_RESULT EQUAL 0 AND CMPLR_VER)
# CMAKE_CXX_COMPILER_ID will only be set in standalone mode, otherwise
# the compiler must be the just-built clang.
if(SYCL_TEST_E2E_STANDALONE AND CMAKE_CXX_COMPILER_ID MATCHES "IntelLLVM")
set(CMPLR_REGEX "Intel\\(R\\) oneAPI DPC\\+\\+/C\\+\\++ Compiler ([0-9]+)")
else()
set(CMPLR_REGEX "DPC\\+\\+ compiler ([0-9]+)")
endif()
string(REGEX MATCH ${CMPLR_REGEX} _ ${CMPLR_VER})
set(DPCPP_VERSION_MAJOR "${CMAKE_MATCH_1}")
endif()
if("${DPCPP_VERSION_MAJOR}" STREQUAL "")
message(FATAL_ERROR "Could not detect SYCL compiler version")
endif()
if(SYCL_TEST_E2E_STANDALONE)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in"
"${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py")
else()
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
MAIN_CONFIG
${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py
)
endif() # Standalone.
if(NOT SYCL_TEST_E2E_STANDALONE)
list(APPEND SYCL_E2E_TEST_DEPS
sycl-toolchain
FileCheck
not
compiler-rt
llvm-profdata
llvm-cov
)
endif() # Standalone.
add_custom_target(check-sycl-e2e
COMMAND ${Python3_EXECUTABLE} ${LLVM_LIT} ${SYCL_E2E_TESTS_LIT_FLAGS} .
COMMENT "Running SYCL End-to-End tests"
DEPENDS ${SYCL_E2E_TEST_DEPS}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
USES_TERMINAL
)
add_subdirectory(External)
add_subdirectory(ExtraTests)