1+ set (obj_binary_dir "${CMAKE_LIBRARY_OUTPUT_DIRECTORY} " )
12if (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)
36else ()
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)
510endif ()
6-
711set (clang $<TARGET_FILE:clang>)
812
913string (CONCAT sycl_targets_opt
@@ -25,29 +29,17 @@ set(compile_opts
2529 -sycl-std=2017
2630 )
2731
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 )
4941
50- set (devicelib-obj-complex ${binary_dir } /libsycl-complex.o )
42+ set (devicelib-obj-complex ${obj_binary_dir } /libsycl-complex.${lib- suffix } )
5143add_custom_command (OUTPUT ${devicelib-obj-complex}
5244 COMMAND ${clang} -fsycl -c
5345 ${compile_opts} ${sycl_targets_opt}
@@ -57,7 +49,7 @@ add_custom_command(OUTPUT ${devicelib-obj-complex}
5749 DEPENDS device_complex.h device.h clang clang-offload-bundler
5850 VERBATIM )
5951
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 } )
6153add_custom_command (OUTPUT ${devicelib-obj-complex-fp64}
6254 COMMAND ${clang} -fsycl -c
6355 ${compile_opts} ${sycl_targets_opt}
@@ -67,7 +59,7 @@ add_custom_command(OUTPUT ${devicelib-obj-complex-fp64}
6759 DEPENDS device_complex.h device.h clang clang-offload-bundler
6860 VERBATIM )
6961
70- set (devicelib-obj-cmath ${binary_dir } /libsycl-cmath.o )
62+ set (devicelib-obj-cmath ${obj_binary_dir } /libsycl-cmath.${lib- suffix } )
7163add_custom_command (OUTPUT ${devicelib-obj-cmath}
7264 COMMAND ${clang} -fsycl -c
7365 ${compile_opts} ${sycl_targets_opt}
@@ -77,7 +69,7 @@ add_custom_command(OUTPUT ${devicelib-obj-cmath}
7769 DEPENDS device_math.h device.h clang clang-offload-bundler
7870 VERBATIM )
7971
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 } )
8173add_custom_command (OUTPUT ${devicelib-obj-cmath-fp64}
8274 COMMAND ${clang} -fsycl -c
8375 ${compile_opts} ${sycl_targets_opt}
@@ -87,92 +79,92 @@ add_custom_command(OUTPUT ${devicelib-obj-cmath-fp64}
8779 DEPENDS device_math.h device.h clang clang-offload-bundler
8880 VERBATIM )
8981
90- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-cassert.spv
82+ add_custom_command (OUTPUT ${spv_binary_dir } /libsycl-fallback-cassert.spv
9183 COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
9284 ${compile_opts}
9385 ${CMAKE_CURRENT_SOURCE_DIR} /fallback-cassert.cpp
94- -o ${binary_dir } /libsycl-fallback-cassert.spv
86+ -o ${spv_binary_dir } /libsycl-fallback-cassert.spv
9587 MAIN_DEPENDENCY fallback-cassert.cpp
9688 DEPENDS wrapper.h device.h clang spirv_vars.h llvm-spirv
9789 VERBATIM )
9890
99- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-cassert.o
91+ add_custom_command (OUTPUT ${obj_binary_dir } /libsycl-fallback-cassert.${lib- suffix }
10092 COMMAND ${clang} -fsycl -c
10193 ${compile_opts} ${sycl_targets_opt}
10294 ${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 }
10496 MAIN_DEPENDENCY fallback-cassert.cpp
10597 DEPENDS wrapper.h device.h clang spirv_vars.h clang-offload-bundler
10698 VERBATIM )
10799
108- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-complex.spv
100+ add_custom_command (OUTPUT ${spv_binary_dir } /libsycl-fallback-complex.spv
109101 COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
110102 ${compile_opts}
111103 ${CMAKE_CURRENT_SOURCE_DIR} /fallback-complex.cpp
112- -o ${binary_dir } /libsycl-fallback-complex.spv
104+ -o ${spv_binary_dir } /libsycl-fallback-complex.spv
113105 MAIN_DEPENDENCY fallback-complex.cpp
114106 DEPENDS device_math.h device_complex.h device.h clang llvm-spirv
115107 VERBATIM )
116108
117- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-complex.o
109+ add_custom_command (OUTPUT ${obj_binary_dir } /libsycl-fallback-complex.${lib- suffix }
118110 COMMAND ${clang} -fsycl -c
119111 ${compile_opts} ${sycl_targets_opt}
120112 ${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 }
122114 MAIN_DEPENDENCY fallback-complex.cpp
123115 DEPENDS device_math.h device_complex.h device.h clang clang-offload-bundler
124116 VERBATIM )
125117
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
127119 COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
128120 ${compile_opts}
129121 ${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
131123 MAIN_DEPENDENCY fallback-complex-fp64.cpp
132124 DEPENDS device_math.h device_complex.h device.h clang llvm-spirv
133125 VERBATIM )
134126
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 }
136128 COMMAND ${clang} -fsycl -c
137129 ${compile_opts} ${sycl_targets_opt}
138130 ${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 }
140132 MAIN_DEPENDENCY fallback-complex-fp64.cpp
141133 DEPENDS device_math.h device_complex.h device.h clang clang-offload-bundler
142134 VERBATIM )
143135
144- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-cmath.spv
136+ add_custom_command (OUTPUT ${spv_binary_dir } /libsycl-fallback-cmath.spv
145137 COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
146138 ${compile_opts}
147139 ${CMAKE_CURRENT_SOURCE_DIR} /fallback-cmath.cpp
148- -o ${binary_dir } /libsycl-fallback-cmath.spv
140+ -o ${spv_binary_dir } /libsycl-fallback-cmath.spv
149141 MAIN_DEPENDENCY fallback-cmath.cpp
150142 DEPENDS device_math.h device.h clang llvm-spirv
151143 VERBATIM )
152144
153- add_custom_command (OUTPUT ${binary_dir } /libsycl-fallback-cmath.o
145+ add_custom_command (OUTPUT ${obj_binary_dir } /libsycl-fallback-cmath.${lib- suffix }
154146 COMMAND ${clang} -fsycl -c
155147 ${compile_opts} ${sycl_targets_opt}
156148 ${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 }
158150 MAIN_DEPENDENCY fallback-cmath.cpp
159151 DEPENDS device_math.h device.h clang clang-offload-bundler
160152 VERBATIM )
161153
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
163155 COMMAND ${clang} -S -fsycl-device-only -fno-sycl-use-bitcode
164156 ${compile_opts}
165157 ${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
167159 MAIN_DEPENDENCY fallback-cmath-fp64.cpp
168160 DEPENDS device_math.h device.h clang llvm-spirv
169161 VERBATIM )
170162
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 }
172164 COMMAND ${clang} -fsycl -c
173165 ${compile_opts} ${sycl_targets_opt}
174166 ${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 }
176168 MAIN_DEPENDENCY fallback-cmath-fp64.cpp
177169 DEPENDS device_math.h device.h clang clang-offload-bundler
178170 VERBATIM )
@@ -185,18 +177,18 @@ add_custom_target(libsycldevice-obj DEPENDS
185177 ${devicelib-obj-cmath-fp64}
186178)
187179add_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
193185 )
194186add_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 }
200192)
201193add_custom_target (libsycldevice DEPENDS
202194 libsycldevice-obj
@@ -206,25 +198,30 @@ add_custom_target(libsycldevice DEPENDS
206198# Place device libraries near the libsycl.so library in an install
207199# directory as well
208200if (WIN32 )
209- set (install_dest bin)
201+ set (install_dest_spv bin)
210202else ()
211- set (install_dest lib${LLVM_LIBDIR_SUFFIX} )
203+ set (install_dest_spv lib${LLVM_LIBDIR_SUFFIX} )
212204endif ()
213205
206+ set (install_dest_lib lib${LLVM_LIBDIR_SUFFIX} )
207+
214208install (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 }
217210 ${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 }
220212 ${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 }
223214 ${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 }
226216 ${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}
230227 COMPONENT libsycldevice)
0 commit comments