1
+ set (obj_binary_dir "${CMAKE_LIBRARY_OUTPUT_DIRECTORY} " )
1
2
if (WIN32 )
2
- set (binary_dir "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} " )
3
+ set (lib-suffix obj )
4
+ set (spv_binary_dir "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} " )
5
+ set (lib_crt_source msvc_wrapper.cpp )
3
6
else ()
4
- set (binary_dir "${CMAKE_LIBRARY_OUTPUT_DIRECTORY} " )
7
+ set (lib-suffix o )
8
+ set (spv_binary_dir "${CMAKE_LIBRARY_OUTPUT_DIRECTORY} " )
9
+ set (lib_crt_source glibc_wrapper.cpp )
5
10
endif ()
6
-
7
11
set (clang $< TARGET_FILE:clang> )
8
12
9
13
string (CONCAT sycl_targets_opt
@@ -25,29 +29,17 @@ set(compile_opts
25
29
-sycl-std=2017
26
30
)
27
31
28
- if (WIN32 )
29
- set (devicelib-obj-file ${binary_dir} /libsycl-msvc.o )
30
- add_custom_command (OUTPUT ${devicelib-obj-file}
31
- COMMAND ${clang} -fsycl -c
32
- ${compile_opts} ${sycl_targets_opt}
33
- ${CMAKE_CURRENT_SOURCE_DIR} /msvc_wrapper.cpp
34
- -o ${devicelib-obj-file}
35
- MAIN_DEPENDENCY msvc_wrapper.cpp
36
- DEPENDS wrapper.h device.h spirv_vars.h clang clang-offload-bundler
37
- VERBATIM )
38
- else ()
39
- set (devicelib-obj-file ${binary_dir} /libsycl-glibc.o )
40
- add_custom_command (OUTPUT ${devicelib-obj-file}
41
- COMMAND ${clang} -fsycl -c
42
- ${compile_opts} ${sycl_targets_opt}
43
- ${CMAKE_CURRENT_SOURCE_DIR} /glibc_wrapper.cpp
44
- -o ${devicelib-obj-file}
45
- MAIN_DEPENDENCY glibc_wrapper.cpp
46
- DEPENDS wrapper.h device.h spirv_vars.h clang clang-offload-bundler
47
- VERBATIM )
48
- endif ()
32
+ set (devicelib-obj-file ${obj_binary_dir} /libsycl-crt.${lib-suffix} )
33
+ add_custom_command (OUTPUT ${devicelib-obj-file}
34
+ COMMAND ${clang} -fsycl -c
35
+ ${compile_opts} ${sycl_targets_opt}
36
+ ${CMAKE_CURRENT_SOURCE_DIR} /${lib_crt_source}
37
+ -o ${devicelib-obj-file}
38
+ MAIN_DEPENDENCY ${lib_crt_source}
39
+ DEPENDS wrapper.h device.h spirv_vars.h clang clang-offload-bundler
40
+ VERBATIM )
49
41
50
- set (devicelib-obj-complex ${binary_dir } /libsycl-complex.o )
42
+ set (devicelib-obj-complex ${obj_binary_dir } /libsycl-complex.${lib-suffix} )
51
43
add_custom_command (OUTPUT ${devicelib-obj-complex}
52
44
COMMAND ${clang} -fsycl -c
53
45
${compile_opts} ${sycl_targets_opt}
@@ -57,7 +49,7 @@ add_custom_command(OUTPUT ${devicelib-obj-complex}
57
49
DEPENDS device_complex.h device.h clang clang-offload-bundler
58
50
VERBATIM )
59
51
60
- set (devicelib-obj-complex-fp64 ${binary_dir } /libsycl-complex-fp64.o )
52
+ set (devicelib-obj-complex-fp64 ${obj_binary_dir } /libsycl-complex-fp64.${lib-suffix} )
61
53
add_custom_command (OUTPUT ${devicelib-obj-complex-fp64}
62
54
COMMAND ${clang} -fsycl -c
63
55
${compile_opts} ${sycl_targets_opt}
@@ -67,7 +59,7 @@ add_custom_command(OUTPUT ${devicelib-obj-complex-fp64}
67
59
DEPENDS device_complex.h device.h clang clang-offload-bundler
68
60
VERBATIM )
69
61
70
- set (devicelib-obj-cmath ${binary_dir } /libsycl-cmath.o )
62
+ set (devicelib-obj-cmath ${obj_binary_dir } /libsycl-cmath.${lib-suffix} )
71
63
add_custom_command (OUTPUT ${devicelib-obj-cmath}
72
64
COMMAND ${clang} -fsycl -c
73
65
${compile_opts} ${sycl_targets_opt}
@@ -77,7 +69,7 @@ add_custom_command(OUTPUT ${devicelib-obj-cmath}
77
69
DEPENDS device_math.h device.h clang clang-offload-bundler
78
70
VERBATIM )
79
71
80
- set (devicelib-obj-cmath-fp64 ${binary_dir } /libsycl-cmath-fp64.o )
72
+ set (devicelib-obj-cmath-fp64 ${obj_binary_dir } /libsycl-cmath-fp64.${lib-suffix} )
81
73
add_custom_command (OUTPUT ${devicelib-obj-cmath-fp64}
82
74
COMMAND ${clang} -fsycl -c
83
75
${compile_opts} ${sycl_targets_opt}
@@ -87,92 +79,92 @@ add_custom_command(OUTPUT ${devicelib-obj-cmath-fp64}
87
79
DEPENDS device_math.h device.h clang clang-offload-bundler
88
80
VERBATIM )
89
81
90
- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-cassert.spv
82
+ add_custom_command (OUTPUT ${spv_binary_dir } /libsycl-fallback-cassert.spv
91
83
COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
92
84
${compile_opts}
93
85
${CMAKE_CURRENT_SOURCE_DIR} /fallback-cassert.cpp
94
- -o ${binary_dir } /libsycl-fallback-cassert.spv
86
+ -o ${spv_binary_dir } /libsycl-fallback-cassert.spv
95
87
MAIN_DEPENDENCY fallback-cassert.cpp
96
88
DEPENDS wrapper.h device.h clang spirv_vars.h llvm-spirv
97
89
VERBATIM )
98
90
99
- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-cassert.o
91
+ add_custom_command (OUTPUT ${obj_binary_dir } /libsycl-fallback-cassert.${lib-suffix}
100
92
COMMAND ${clang} -fsycl -c
101
93
${compile_opts} ${sycl_targets_opt}
102
94
${CMAKE_CURRENT_SOURCE_DIR} /fallback-cassert.cpp
103
- -o ${binary_dir } /libsycl-fallback-cassert.o
95
+ -o ${obj_binary_dir } /libsycl-fallback-cassert.${lib-suffix}
104
96
MAIN_DEPENDENCY fallback-cassert.cpp
105
97
DEPENDS wrapper.h device.h clang spirv_vars.h clang-offload-bundler
106
98
VERBATIM )
107
99
108
- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-complex.spv
100
+ add_custom_command (OUTPUT ${spv_binary_dir } /libsycl-fallback-complex.spv
109
101
COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
110
102
${compile_opts}
111
103
${CMAKE_CURRENT_SOURCE_DIR} /fallback-complex.cpp
112
- -o ${binary_dir } /libsycl-fallback-complex.spv
104
+ -o ${spv_binary_dir } /libsycl-fallback-complex.spv
113
105
MAIN_DEPENDENCY fallback-complex.cpp
114
106
DEPENDS device_math.h device_complex.h device.h clang llvm-spirv
115
107
VERBATIM )
116
108
117
- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-complex.o
109
+ add_custom_command (OUTPUT ${obj_binary_dir } /libsycl-fallback-complex.${lib-suffix}
118
110
COMMAND ${clang} -fsycl -c
119
111
${compile_opts} ${sycl_targets_opt}
120
112
${CMAKE_CURRENT_SOURCE_DIR} /fallback-complex.cpp
121
- -o ${binary_dir } /libsycl-fallback-complex.o
113
+ -o ${obj_binary_dir } /libsycl-fallback-complex.${lib-suffix}
122
114
MAIN_DEPENDENCY fallback-complex.cpp
123
115
DEPENDS device_math.h device_complex.h device.h clang clang-offload-bundler
124
116
VERBATIM )
125
117
126
- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-complex-fp64.spv
118
+ add_custom_command (OUTPUT ${spv_binary_dir } /libsycl-fallback-complex-fp64.spv
127
119
COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
128
120
${compile_opts}
129
121
${CMAKE_CURRENT_SOURCE_DIR} /fallback-complex-fp64.cpp
130
- -o ${binary_dir } /libsycl-fallback-complex-fp64.spv
122
+ -o ${spv_binary_dir } /libsycl-fallback-complex-fp64.spv
131
123
MAIN_DEPENDENCY fallback-complex-fp64.cpp
132
124
DEPENDS device_math.h device_complex.h device.h clang llvm-spirv
133
125
VERBATIM )
134
126
135
- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-complex-fp64.o
127
+ add_custom_command (OUTPUT ${obj_binary_dir } /libsycl-fallback-complex-fp64.${lib-suffix}
136
128
COMMAND ${clang} -fsycl -c
137
129
${compile_opts} ${sycl_targets_opt}
138
130
${CMAKE_CURRENT_SOURCE_DIR} /fallback-complex-fp64.cpp
139
- -o ${binary_dir } /libsycl-fallback-complex-fp64.o
131
+ -o ${obj_binary_dir } /libsycl-fallback-complex-fp64.${lib-suffix}
140
132
MAIN_DEPENDENCY fallback-complex-fp64.cpp
141
133
DEPENDS device_math.h device_complex.h device.h clang clang-offload-bundler
142
134
VERBATIM )
143
135
144
- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-cmath.spv
136
+ add_custom_command (OUTPUT ${spv_binary_dir } /libsycl-fallback-cmath.spv
145
137
COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
146
138
${compile_opts}
147
139
${CMAKE_CURRENT_SOURCE_DIR} /fallback-cmath.cpp
148
- -o ${binary_dir } /libsycl-fallback-cmath.spv
140
+ -o ${spv_binary_dir } /libsycl-fallback-cmath.spv
149
141
MAIN_DEPENDENCY fallback-cmath.cpp
150
142
DEPENDS device_math.h device.h clang llvm-spirv
151
143
VERBATIM )
152
144
153
- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-cmath.o
145
+ add_custom_command (OUTPUT ${obj_binary_dir } /libsycl-fallback-cmath.${lib-suffix}
154
146
COMMAND ${clang} -fsycl -c
155
147
${compile_opts} ${sycl_targets_opt}
156
148
${CMAKE_CURRENT_SOURCE_DIR} /fallback-cmath.cpp
157
- -o ${binary_dir } /libsycl-fallback-cmath.o
149
+ -o ${obj_binary_dir } /libsycl-fallback-cmath.${lib-suffix}
158
150
MAIN_DEPENDENCY fallback-cmath.cpp
159
151
DEPENDS device_math.h device.h clang clang-offload-bundler
160
152
VERBATIM )
161
153
162
- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-cmath-fp64.spv
154
+ add_custom_command (OUTPUT ${spv_binary_dir } /libsycl-fallback-cmath-fp64.spv
163
155
COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
164
156
${compile_opts}
165
157
${CMAKE_CURRENT_SOURCE_DIR} /fallback-cmath-fp64.cpp
166
- -o ${binary_dir } /libsycl-fallback-cmath-fp64.spv
158
+ -o ${spv_binary_dir } /libsycl-fallback-cmath-fp64.spv
167
159
MAIN_DEPENDENCY fallback-cmath-fp64.cpp
168
160
DEPENDS device_math.h device.h clang llvm-spirv
169
161
VERBATIM )
170
162
171
- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-cmath-fp64.o
163
+ add_custom_command (OUTPUT ${obj_binary_dir } /libsycl-fallback-cmath-fp64.${lib-suffix}
172
164
COMMAND ${clang} -fsycl -c
173
165
${compile_opts} ${sycl_targets_opt}
174
166
${CMAKE_CURRENT_SOURCE_DIR} /fallback-cmath-fp64.cpp
175
- -o ${binary_dir } /libsycl-fallback-cmath-fp64.o
167
+ -o ${obj_binary_dir } /libsycl-fallback-cmath-fp64.${lib-suffix}
176
168
MAIN_DEPENDENCY fallback-cmath-fp64.cpp
177
169
DEPENDS device_math.h device.h clang clang-offload-bundler
178
170
VERBATIM )
@@ -185,18 +177,18 @@ add_custom_target(libsycldevice-obj DEPENDS
185
177
${devicelib-obj-cmath-fp64}
186
178
)
187
179
add_custom_target (libsycldevice-spv DEPENDS
188
- ${binary_dir } /libsycl-fallback-cassert.spv
189
- ${binary_dir } /libsycl-fallback-complex.spv
190
- ${binary_dir } /libsycl-fallback-complex-fp64.spv
191
- ${binary_dir } /libsycl-fallback-cmath.spv
192
- ${binary_dir } /libsycl-fallback-cmath-fp64.spv
180
+ ${spv_binary_dir } /libsycl-fallback-cassert.spv
181
+ ${spv_binary_dir } /libsycl-fallback-complex.spv
182
+ ${spv_binary_dir } /libsycl-fallback-complex-fp64.spv
183
+ ${spv_binary_dir } /libsycl-fallback-cmath.spv
184
+ ${spv_binary_dir } /libsycl-fallback-cmath-fp64.spv
193
185
)
194
186
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
187
+ ${obj_binary_dir } /libsycl-fallback-cassert.${lib-suffix}
188
+ ${obj_binary_dir } /libsycl-fallback-complex.${lib-suffix}
189
+ ${obj_binary_dir } /libsycl-fallback-complex-fp64.${lib-suffix}
190
+ ${obj_binary_dir } /libsycl-fallback-cmath.${lib-suffix}
191
+ ${obj_binary_dir } /libsycl-fallback-cmath-fp64.${lib-suffix}
200
192
)
201
193
add_custom_target (libsycldevice DEPENDS
202
194
libsycldevice-obj
@@ -206,25 +198,30 @@ add_custom_target(libsycldevice DEPENDS
206
198
# Place device libraries near the libsycl.so library in an install
207
199
# directory as well
208
200
if (WIN32 )
209
- set (install_dest bin )
201
+ set (install_dest_spv bin )
210
202
else ()
211
- set (install_dest lib${LLVM_LIBDIR_SUFFIX} )
203
+ set (install_dest_spv lib${LLVM_LIBDIR_SUFFIX} )
212
204
endif ()
213
205
206
+ set (install_dest_lib lib${LLVM_LIBDIR_SUFFIX} )
207
+
214
208
install (FILES ${devicelib-obj-file}
215
- ${binary_dir} /libsycl-fallback-cassert.spv
216
- ${binary_dir} /libsycl-fallback-cassert.o
209
+ ${obj_binary_dir} /libsycl-fallback-cassert.${lib-suffix}
217
210
${devicelib-obj-complex}
218
- ${binary_dir} /libsycl-fallback-complex.spv
219
- ${binary_dir} /libsycl-fallback-complex.o
211
+ ${obj_binary_dir} /libsycl-fallback-complex.${lib-suffix}
220
212
${devicelib-obj-complex-fp64}
221
- ${binary_dir} /libsycl-fallback-complex-fp64.spv
222
- ${binary_dir} /libsycl-fallback-complex-fp64.o
213
+ ${obj_binary_dir} /libsycl-fallback-complex-fp64.${lib-suffix}
223
214
${devicelib-obj-cmath}
224
- ${binary_dir} /libsycl-fallback-cmath.spv
225
- ${binary_dir} /libsycl-fallback-cmath.o
215
+ ${obj_binary_dir} /libsycl-fallback-cmath.${lib-suffix}
226
216
${devicelib-obj-cmath-fp64}
227
- ${binary_dir} /libsycl-fallback-cmath-fp64.spv
228
- ${binary_dir} /libsycl-fallback-cmath-fp64.o
229
- DESTINATION ${install_dest}
217
+ ${obj_binary_dir} /libsycl-fallback-cmath-fp64.${lib-suffix}
218
+ DESTINATION ${install_dest_lib}
219
+ COMPONENT libsycldevice )
220
+
221
+ install (FILES ${spv_binary_dir} /libsycl-fallback-cassert.spv
222
+ ${spv_binary_dir} /libsycl-fallback-complex.spv
223
+ ${spv_binary_dir} /libsycl-fallback-complex-fp64.spv
224
+ ${spv_binary_dir} /libsycl-fallback-cmath.spv
225
+ ${spv_binary_dir} /libsycl-fallback-cmath-fp64.spv
226
+ DESTINATION ${install_dest_spv}
230
227
COMPONENT libsycldevice )
0 commit comments