Skip to content

Commit 6306a99

Browse files
authored
[SYCL] Adjust devicelib install location (#2405)
This patch will do following: 1. Change devicelib object file suffix from .o to .obj on Windows 2. Install all .obj libraries in lib/ on Windows 3. Uniform the previous libsycl-glibc and libsycl-msvc to libsycl-crt.[o,obj] Signed-off-by: gejin <ge.jin@intel.com>
1 parent 4ecb504 commit 6306a99

File tree

6 files changed

+73
-76
lines changed

6 files changed

+73
-76
lines changed
Lines changed: 68 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
set(obj_binary_dir "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
12
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)
36
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)
510
endif()
6-
711
set(clang $<TARGET_FILE:clang>)
812

913
string(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})
5143
add_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})
6153
add_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})
7163
add_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})
8173
add_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
)
187179
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
193185
)
194186
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}
200192
)
201193
add_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
208200
if (WIN32)
209-
set(install_dest bin)
201+
set(install_dest_spv bin)
210202
else()
211-
set(install_dest lib${LLVM_LIBDIR_SUFFIX})
203+
set(install_dest_spv lib${LLVM_LIBDIR_SUFFIX})
212204
endif()
213205

206+
set(install_dest_lib lib${LLVM_LIBDIR_SUFFIX})
207+
214208
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}
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)

sycl/test/devicelib/assert-aot.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// REQUIRES: opencl-aot, cpu, linux
22

3-
// RUN: %clangxx -fsycl -fsycl-targets=spir64_x86_64-unknown-unknown-sycldevice %S/assert.cpp %sycl_libs_dir/libsycl-glibc.o %sycl_libs_dir/libsycl-fallback-cassert.o -o %t.aot.out
3+
// RUN: %clangxx -fsycl -fsycl-targets=spir64_x86_64-unknown-unknown-sycldevice %S/assert.cpp %sycl_libs_dir/libsycl-crt.o %sycl_libs_dir/libsycl-fallback-cassert.o -o %t.aot.out
44
// RUN: %CPU_RUN_PLACEHOLDER %t.aot.out >%t.aot.msg
55
// RUN: FileCheck %S/assert.cpp --input-file %t.aot.msg --check-prefixes=CHECK-MESSAGE

sycl/test/devicelib/assert-windows.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// XFAIL: *
66
//
77
// RUN: %clangxx -fsycl -c %s -o %t.o
8-
// RUN: %clangxx -fsycl %t.o %sycl_libs_dir/../bin/libsycl-msvc.o -o %t.out
8+
// RUN: %clangxx -fsycl %t.o %sycl_libs_dir/libsycl-crt.obj -o %t.out
99
//
1010
// MSVC implementation of assert does not call an unreachable built-in, so the
1111
// program doesn't terminate when fallback is used.

sycl/test/devicelib/assert.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// REQUIRES: cpu,linux
22
// RUN: %clangxx -fsycl -c %s -o %t.o
3-
// RUN: %clangxx -fsycl %t.o %sycl_libs_dir/libsycl-glibc.o -o %t.out
3+
// RUN: %clangxx -fsycl %t.o %sycl_libs_dir/libsycl-crt.o -o %t.out
44
// (see the other RUN lines below; it is a bit complicated)
55
//
66
// assert() call in device code guarantees nothing: on some devices it behaves

sycl/test/devicelib/math_fp64_windows_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// REQUIRES: cpu, windows
22
// RUN: %clangxx -fsycl -c %s -o %t.o
3-
// RUN: %clangxx -fsycl %t.o %sycl_libs_dir/../bin/libsycl-cmath-fp64.o -o %t.out
3+
// RUN: %clangxx -fsycl %t.o %sycl_libs_dir/libsycl-cmath-fp64.obj -o %t.out
44
// RUN: env SYCL_DEVICE_TYPE=HOST %t.out
55
// RUN: %CPU_RUN_PLACEHOLDER %t.out
66
// RUN: %ACC_RUN_PLACEHOLDER %t.out

sycl/test/devicelib/math_windows_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// REQUIRES: cpu, windows
22
// RUN: %clangxx -fsycl -c %s -o %t.o
3-
// RUN: %clangxx -fsycl %t.o %sycl_libs_dir/../bin/libsycl-cmath.o -o %t.out
3+
// RUN: %clangxx -fsycl %t.o %sycl_libs_dir/libsycl-cmath.obj -o %t.out
44
// RUN: env SYCL_DEVICE_TYPE=HOST %t.out
55
// RUN: %CPU_RUN_PLACEHOLDER %t.out
66
// RUN: %ACC_RUN_PLACEHOLDER %t.out

0 commit comments

Comments
 (0)