6
6
7
7
set (clang $<TARGET_FILE:clang>)
8
8
9
+ string (CONCAT sycl_targets_opt
10
+ "-fsycl-targets="
11
+ "spir64_x86_64-unknown-unknown-sycldevice,"
12
+ "spir64_gen-unknown-unknown-sycldevice,"
13
+ "spir64_fpga-unknown-unknown-sycldevice,"
14
+ "spir64-unknown-unknown-sycldevice" )
15
+
9
16
set (compile_opts
10
17
# suppress an error about SYCL_EXTERNAL being used for
11
18
# a function with a raw pointer parameter.
@@ -22,62 +29,62 @@ if (WIN32)
22
29
set (devicelib-obj-file ${binary_dir} /libsycl-msvc .o)
23
30
add_custom_command (OUTPUT ${devicelib-obj-file}
24
31
COMMAND ${clang} -fsycl -c
25
- ${compile_opts}
32
+ ${compile_opts} ${sycl_targets_opt}
26
33
${CMAKE_CURRENT_SOURCE_DIR} /msvc_wrapper.cpp
27
34
-o ${devicelib-obj-file}
28
35
MAIN_DEPENDENCY msvc_wrapper.cpp
29
- DEPENDS wrapper.h device.h spirv_vars.h clang
36
+ DEPENDS wrapper.h device.h spirv_vars.h clang clang-offload-bundler
30
37
VERBATIM )
31
38
else ()
32
39
set (devicelib-obj-file ${binary_dir} /libsycl-glibc.o)
33
40
add_custom_command (OUTPUT ${devicelib-obj-file}
34
41
COMMAND ${clang} -fsycl -c
35
- ${compile_opts}
42
+ ${compile_opts} ${sycl_targets_opt}
36
43
${CMAKE_CURRENT_SOURCE_DIR} /glibc_wrapper.cpp
37
44
-o ${devicelib-obj-file}
38
45
MAIN_DEPENDENCY glibc_wrapper.cpp
39
- DEPENDS wrapper.h device.h spirv_vars.h clang
46
+ DEPENDS wrapper.h device.h spirv_vars.h clang clang-offload-bundler
40
47
VERBATIM )
41
48
endif ()
42
49
43
50
set (devicelib-obj-complex ${binary_dir} /libsycl-complex.o)
44
51
add_custom_command (OUTPUT ${devicelib-obj-complex}
45
52
COMMAND ${clang} -fsycl -c
46
- ${compile_opts}
53
+ ${compile_opts} ${sycl_targets_opt}
47
54
${CMAKE_CURRENT_SOURCE_DIR} /complex_wrapper.cpp
48
55
-o ${devicelib-obj-complex}
49
56
MAIN_DEPENDENCY complex_wrapper.cpp
50
- DEPENDS device_complex.h device.h clang
57
+ DEPENDS device_complex.h device.h clang clang-offload-bundler
51
58
VERBATIM )
52
59
53
60
set (devicelib-obj-complex-fp64 ${binary_dir} /libsycl-complex-fp64.o)
54
61
add_custom_command (OUTPUT ${devicelib-obj-complex-fp64}
55
62
COMMAND ${clang} -fsycl -c
56
- ${compile_opts}
63
+ ${compile_opts} ${sycl_targets_opt}
57
64
${CMAKE_CURRENT_SOURCE_DIR} /complex_wrapper_fp64.cpp
58
65
-o ${devicelib-obj-complex-fp64}
59
66
MAIN_DEPENDENCY complex_wrapper_fp64.cpp
60
- DEPENDS device_complex.h device.h clang
67
+ DEPENDS device_complex.h device.h clang clang-offload-bundler
61
68
VERBATIM )
62
69
63
70
set (devicelib-obj-cmath ${binary_dir} /libsycl-cmath.o)
64
71
add_custom_command (OUTPUT ${devicelib-obj-cmath}
65
72
COMMAND ${clang} -fsycl -c
66
- ${compile_opts}
73
+ ${compile_opts} ${sycl_targets_opt}
67
74
${CMAKE_CURRENT_SOURCE_DIR} /cmath_wrapper.cpp
68
75
-o ${devicelib-obj-cmath}
69
76
MAIN_DEPENDENCY cmath_wrapper.cpp
70
- DEPENDS device_math.h device.h clang
77
+ DEPENDS device_math.h device.h clang clang-offload-bundler
71
78
VERBATIM )
72
79
73
80
set (devicelib-obj-cmath-fp64 ${binary_dir} /libsycl-cmath-fp64.o)
74
81
add_custom_command (OUTPUT ${devicelib-obj-cmath-fp64}
75
82
COMMAND ${clang} -fsycl -c
76
- ${compile_opts}
83
+ ${compile_opts} ${sycl_targets_opt}
77
84
${CMAKE_CURRENT_SOURCE_DIR} /cmath_wrapper_fp64.cpp
78
85
-o ${devicelib-obj-cmath-fp64}
79
86
MAIN_DEPENDENCY cmath_wrapper_fp64.cpp
80
- DEPENDS device_math.h device.h clang
87
+ DEPENDS device_math.h device.h clang clang-offload-bundler
81
88
VERBATIM )
82
89
83
90
add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-cassert.spv
@@ -89,6 +96,15 @@ add_custom_command(OUTPUT ${binary_dir}/libsycl-fallback-cassert.spv
89
96
DEPENDS wrapper.h device.h clang spirv_vars.h llvm-spirv
90
97
VERBATIM )
91
98
99
+ add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-cassert.o
100
+ COMMAND ${clang} -fsycl -c
101
+ ${compile_opts} ${sycl_targets_opt}
102
+ ${CMAKE_CURRENT_SOURCE_DIR} /fallback-cassert.cpp
103
+ -o ${binary_dir} /libsycl-fallback-cassert.o
104
+ MAIN_DEPENDENCY fallback-cassert.cpp
105
+ DEPENDS wrapper.h device.h clang spirv_vars.h clang-offload-bundler
106
+ VERBATIM )
107
+
92
108
add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-complex.spv
93
109
COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
94
110
${compile_opts}
@@ -98,6 +114,15 @@ add_custom_command(OUTPUT ${binary_dir}/libsycl-fallback-complex.spv
98
114
DEPENDS device_math.h device_complex.h device.h clang llvm-spirv
99
115
VERBATIM )
100
116
117
+ add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-complex.o
118
+ COMMAND ${clang} -fsycl -c
119
+ ${compile_opts} ${sycl_targets_opt}
120
+ ${CMAKE_CURRENT_SOURCE_DIR} /fallback-complex.cpp
121
+ -o ${binary_dir} /libsycl-fallback-complex.o
122
+ MAIN_DEPENDENCY fallback-complex.cpp
123
+ DEPENDS device_math.h device_complex.h device.h clang clang-offload-bundler
124
+ VERBATIM )
125
+
101
126
add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-complex-fp64.spv
102
127
COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
103
128
${compile_opts}
@@ -107,6 +132,15 @@ add_custom_command(OUTPUT ${binary_dir}/libsycl-fallback-complex-fp64.spv
107
132
DEPENDS device_math.h device_complex.h device.h clang llvm-spirv
108
133
VERBATIM )
109
134
135
+ add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-complex-fp64.o
136
+ COMMAND ${clang} -fsycl -c
137
+ ${compile_opts} ${sycl_targets_opt}
138
+ ${CMAKE_CURRENT_SOURCE_DIR} /fallback-complex-fp64.cpp
139
+ -o ${binary_dir} /libsycl-fallback-complex-fp64.o
140
+ MAIN_DEPENDENCY fallback-complex-fp64.cpp
141
+ DEPENDS device_math.h device_complex.h device.h clang clang-offload-bundler
142
+ VERBATIM )
143
+
110
144
add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-cmath.spv
111
145
COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
112
146
${compile_opts}
@@ -116,6 +150,15 @@ add_custom_command(OUTPUT ${binary_dir}/libsycl-fallback-cmath.spv
116
150
DEPENDS device_math.h device.h clang llvm-spirv
117
151
VERBATIM )
118
152
153
+ add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-cmath.o
154
+ COMMAND ${clang} -fsycl -c
155
+ ${compile_opts} ${sycl_targets_opt}
156
+ ${CMAKE_CURRENT_SOURCE_DIR} /fallback-cmath.cpp
157
+ -o ${binary_dir} /libsycl-fallback-cmath.o
158
+ MAIN_DEPENDENCY fallback-cmath.cpp
159
+ DEPENDS device_math.h device.h clang clang-offload-bundler
160
+ VERBATIM )
161
+
119
162
add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-cmath-fp64.spv
120
163
COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
121
164
${compile_opts}
@@ -125,6 +168,15 @@ add_custom_command(OUTPUT ${binary_dir}/libsycl-fallback-cmath-fp64.spv
125
168
DEPENDS device_math.h device.h clang llvm-spirv
126
169
VERBATIM )
127
170
171
+ add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-cmath-fp64.o
172
+ COMMAND ${clang} -fsycl -c
173
+ ${compile_opts} ${sycl_targets_opt}
174
+ ${CMAKE_CURRENT_SOURCE_DIR} /fallback-cmath-fp64.cpp
175
+ -o ${binary_dir} /libsycl-fallback-cmath-fp64.o
176
+ MAIN_DEPENDENCY fallback-cmath-fp64.cpp
177
+ DEPENDS device_math.h device.h clang clang-offload-bundler
178
+ VERBATIM )
179
+
128
180
add_custom_target (libsycldevice-obj DEPENDS
129
181
${devicelib-obj-file}
130
182
${devicelib-obj-complex}
@@ -138,8 +190,18 @@ add_custom_target(libsycldevice-spv DEPENDS
138
190
${binary_dir} /libsycl-fallback-complex-fp64.spv
139
191
${binary_dir} /libsycl-fallback-cmath.spv
140
192
${binary_dir} /libsycl-fallback-cmath-fp64.spv
193
+ )
194
+ add_custom_target (libsycldevice-fallback-obj DEPENDS
195
+ ${binary_dir} /libsycl-fallback-cassert.o
196
+ ${binary_dir} /libsycl-fallback-complex.o
197
+ ${binary_dir} /libsycl-fallback-complex-fp64.o
198
+ ${binary_dir} /libsycl-fallback-cmath.o
199
+ ${binary_dir} /libsycl-fallback-cmath-fp64.o
141
200
)
142
- add_custom_target (libsycldevice DEPENDS libsycldevice-obj libsycldevice-spv)
201
+ add_custom_target (libsycldevice DEPENDS
202
+ libsycldevice-obj
203
+ libsycldevice-fallback-obj
204
+ libsycldevice-spv)
143
205
144
206
# Place device libraries near the libsycl.so library in an install
145
207
# directory as well
@@ -151,13 +213,18 @@ endif()
151
213
152
214
install (FILES ${devicelib-obj-file}
153
215
${binary_dir} /libsycl-fallback-cassert.spv
216
+ ${binary_dir} /libsycl-fallback-cassert.o
154
217
${devicelib-obj-complex}
155
218
${binary_dir} /libsycl-fallback-complex.spv
219
+ ${binary_dir} /libsycl-fallback-complex.o
156
220
${devicelib-obj-complex-fp64}
157
221
${binary_dir} /libsycl-fallback-complex-fp64.spv
222
+ ${binary_dir} /libsycl-fallback-complex-fp64.o
158
223
${devicelib-obj-cmath}
159
224
${binary_dir} /libsycl-fallback-cmath.spv
225
+ ${binary_dir} /libsycl-fallback-cmath.o
160
226
${devicelib-obj-cmath-fp64}
161
227
${binary_dir} /libsycl-fallback-cmath-fp64.spv
228
+ ${binary_dir} /libsycl-fallback-cmath-fp64.o
162
229
DESTINATION ${install_dest}
163
230
COMPONENT libsycldevice)
0 commit comments