1
- # Place device libraries near the libsycl.so library in a build
2
- # directory
3
1
if (WIN32 )
4
- set (binary_dir "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} " )
2
+ set (binary_dir "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} " )
5
3
else ()
6
- set (binary_dir "${CMAKE_LIBRARY_OUTPUT_DIRECTORY} " )
4
+ set (binary_dir "${CMAKE_LIBRARY_OUTPUT_DIRECTORY} " )
7
5
endif ()
8
6
9
7
set (clang $< TARGET_FILE:clang> )
10
8
11
9
set (compile_opts
12
- # suppress an error about SYCL_EXTERNAL
13
- -Wno-sycl-strict
14
- # for CL/__spirv/spirv_vars.hpp
15
- -I${sycl_inc_dir} )
10
+ # suppress an error about SYCL_EXTERNAL being used for
11
+ # a function with a raw pointer parameter.
12
+ -Wno-sycl-strict
13
+ # Disable warnings for the host compilation, where
14
+ # we declare all functions as 'static'.
15
+ -Wno-undefined-internal
16
+ # Force definition of CL_SYCL_LANGUAGE_VERSION, as long as
17
+ # SYCL specific code is guarded by it.
18
+ -sycl-std=2017
19
+ )
16
20
17
21
if (WIN32 )
18
- set (devicelib-obj-file ${binary_dir} /libsycl-msvc.o )
19
- add_custom_command (OUTPUT ${devicelib-obj-file}
20
- COMMAND ${clang} -fsycl -c
21
- ${compile_opts}
22
- ${CMAKE_CURRENT_SOURCE_DIR} /msvc_wrapper.cpp
23
- -o ${devicelib-obj-file}
24
- MAIN_DEPENDENCY msvc_wrapper.cpp
25
- DEPENDS wrapper.h clang
26
- VERBATIM )
22
+ set (devicelib-obj-file ${binary_dir} /libsycl-msvc.o )
23
+ add_custom_command (OUTPUT ${devicelib-obj-file}
24
+ COMMAND ${clang} -fsycl -c
25
+ ${compile_opts}
26
+ ${CMAKE_CURRENT_SOURCE_DIR} /msvc_wrapper.cpp
27
+ -o ${devicelib-obj-file}
28
+ MAIN_DEPENDENCY msvc_wrapper.cpp
29
+ DEPENDS wrapper.h device .h clang
30
+ VERBATIM )
27
31
else ()
28
- set (devicelib-obj-file ${binary_dir} /libsycl-glibc.o )
29
- add_custom_command (OUTPUT ${devicelib-obj-file}
30
- COMMAND ${clang} -fsycl -c
31
- ${compile_opts}
32
- ${CMAKE_CURRENT_SOURCE_DIR} /glibc_wrapper.cpp
33
- -o ${devicelib-obj-file}
34
- MAIN_DEPENDENCY glibc_wrapper.cpp
35
- DEPENDS wrapper.h clang
36
- VERBATIM )
32
+ set (devicelib-obj-file ${binary_dir} /libsycl-glibc.o )
33
+ add_custom_command (OUTPUT ${devicelib-obj-file}
34
+ COMMAND ${clang} -fsycl -c
35
+ ${compile_opts}
36
+ ${CMAKE_CURRENT_SOURCE_DIR} /glibc_wrapper.cpp
37
+ -o ${devicelib-obj-file}
38
+ MAIN_DEPENDENCY glibc_wrapper.cpp
39
+ DEPENDS wrapper.h device .h clang
40
+ VERBATIM )
37
41
endif ()
38
42
39
-
40
43
set (devicelib-obj-complex ${binary_dir} /libsycl-complex.o )
41
44
add_custom_command (OUTPUT ${devicelib-obj-complex}
42
45
COMMAND ${clang} -fsycl -c
43
46
${compile_opts}
44
47
${CMAKE_CURRENT_SOURCE_DIR} /complex_wrapper.cpp
45
48
-o ${devicelib-obj-complex}
46
49
MAIN_DEPENDENCY complex_wrapper.cpp
47
- DEPENDS device_complex.h clang
50
+ DEPENDS device_complex.h device.h clang
48
51
VERBATIM )
49
52
50
53
set (devicelib-obj-complex-fp64 ${binary_dir} /libsycl-complex-fp64.o )
@@ -54,7 +57,7 @@ add_custom_command(OUTPUT ${devicelib-obj-complex-fp64}
54
57
${CMAKE_CURRENT_SOURCE_DIR} /complex_wrapper_fp64.cpp
55
58
-o ${devicelib-obj-complex-fp64}
56
59
MAIN_DEPENDENCY complex_wrapper_fp64.cpp
57
- DEPENDS device_complex.h clang
60
+ DEPENDS device_complex.h device.h clang
58
61
VERBATIM )
59
62
60
63
set (devicelib-obj-cmath ${binary_dir} /libsycl-cmath.o )
@@ -64,7 +67,7 @@ add_custom_command(OUTPUT ${devicelib-obj-cmath}
64
67
${CMAKE_CURRENT_SOURCE_DIR} /cmath_wrapper.cpp
65
68
-o ${devicelib-obj-cmath}
66
69
MAIN_DEPENDENCY cmath_wrapper.cpp
67
- DEPENDS device_complex .h clang
70
+ DEPENDS device_math.h device .h clang
68
71
VERBATIM )
69
72
70
73
set (devicelib-obj-cmath-fp64 ${binary_dir} /libsycl-cmath-fp64.o )
@@ -74,7 +77,7 @@ add_custom_command(OUTPUT ${devicelib-obj-cmath-fp64}
74
77
${CMAKE_CURRENT_SOURCE_DIR} /cmath_wrapper_fp64.cpp
75
78
-o ${devicelib-obj-cmath-fp64}
76
79
MAIN_DEPENDENCY cmath_wrapper_fp64.cpp
77
- DEPENDS device_math.h clang
80
+ DEPENDS device_math.h device.h clang
78
81
VERBATIM )
79
82
80
83
add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-cassert.spv
@@ -83,7 +86,7 @@ add_custom_command(OUTPUT ${binary_dir}/libsycl-fallback-cassert.spv
83
86
${CMAKE_CURRENT_SOURCE_DIR} /fallback-cassert.cpp
84
87
-o ${binary_dir} /libsycl-fallback-cassert.spv
85
88
MAIN_DEPENDENCY fallback-cassert.cpp
86
- DEPENDS wrapper.h clang llvm-spirv
89
+ DEPENDS wrapper.h device.h clang llvm-spirv
87
90
VERBATIM )
88
91
89
92
add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-complex.spv
@@ -92,7 +95,7 @@ add_custom_command(OUTPUT ${binary_dir}/libsycl-fallback-complex.spv
92
95
${CMAKE_CURRENT_SOURCE_DIR} /fallback-complex.cpp
93
96
-o ${binary_dir} /libsycl-fallback-complex.spv
94
97
MAIN_DEPENDENCY fallback-complex.cpp
95
- DEPENDS device_math.h device_complex.h clang llvm-spirv
98
+ DEPENDS device_math.h device_complex.h device.h clang llvm-spirv
96
99
VERBATIM )
97
100
98
101
add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-complex-fp64.spv
@@ -101,7 +104,7 @@ add_custom_command(OUTPUT ${binary_dir}/libsycl-fallback-complex-fp64.spv
101
104
${CMAKE_CURRENT_SOURCE_DIR} /fallback-complex-fp64.cpp
102
105
-o ${binary_dir} /libsycl-fallback-complex-fp64.spv
103
106
MAIN_DEPENDENCY fallback-complex-fp64.cpp
104
- DEPENDS device_math.h device_complex.h clang llvm-spirv
107
+ DEPENDS device_math.h device_complex.h device.h clang llvm-spirv
105
108
VERBATIM )
106
109
107
110
add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-cmath.spv
@@ -110,7 +113,7 @@ add_custom_command(OUTPUT ${binary_dir}/libsycl-fallback-cmath.spv
110
113
${CMAKE_CURRENT_SOURCE_DIR} /fallback-cmath.cpp
111
114
-o ${binary_dir} /libsycl-fallback-cmath.spv
112
115
MAIN_DEPENDENCY fallback-cmath.cpp
113
- DEPENDS device_math.h clang llvm-spirv
116
+ DEPENDS device_math.h device.h clang llvm-spirv
114
117
VERBATIM )
115
118
116
119
add_custom_command (OUTPUT ${binary_dir} /libsycl-fallback-cmath-fp64.spv
@@ -119,30 +122,31 @@ add_custom_command(OUTPUT ${binary_dir}/libsycl-fallback-cmath-fp64.spv
119
122
${CMAKE_CURRENT_SOURCE_DIR} /fallback-cmath-fp64.cpp
120
123
-o ${binary_dir} /libsycl-fallback-cmath-fp64.spv
121
124
MAIN_DEPENDENCY fallback-cmath-fp64.cpp
122
- DEPENDS device_math.h clang llvm-spirv
125
+ DEPENDS device_math.h device.h clang llvm-spirv
123
126
VERBATIM )
124
127
125
- add_custom_target (devicelib-obj DEPENDS ${devicelib-obj-file}
126
- ${devicelib-obj-complex}
127
- ${devicelib-obj-complex-fp64}
128
- ${devicelib-obj-cmath}
129
- ${devicelib-obj-cmath-fp64} )
130
- add_custom_target (devicelib-spv DEPENDS ${binary_dir} /libsycl-fallback-cassert.spv
131
- ${binary_dir} /libsycl-fallback-complex.spv
132
- ${binary_dir} /libsycl-fallback-complex-fp64.spv
133
- ${binary_dir} /libsycl-fallback-cmath.spv
134
- ${binary_dir} /libsycl-fallback-cmath-fp64.spv )
135
- add_dependencies (sycl devicelib-obj devicelib-spv )
136
- if (MSVC )
137
- add_dependencies (sycld devicelib-obj devicelib-spv )
138
- endif ()
128
+ add_custom_target (libsycldevice-obj DEPENDS
129
+ ${devicelib-obj-file}
130
+ ${devicelib-obj-complex}
131
+ ${devicelib-obj-complex-fp64}
132
+ ${devicelib-obj-cmath}
133
+ ${devicelib-obj-cmath-fp64}
134
+ )
135
+ add_custom_target (libsycldevice-spv DEPENDS
136
+ ${binary_dir} /libsycl-fallback-cassert.spv
137
+ ${binary_dir} /libsycl-fallback-complex.spv
138
+ ${binary_dir} /libsycl-fallback-complex-fp64.spv
139
+ ${binary_dir} /libsycl-fallback-cmath.spv
140
+ ${binary_dir} /libsycl-fallback-cmath-fp64.spv
141
+ )
142
+ add_custom_target (libsycldevice DEPENDS libsycldevice-obj libsycldevice-spv )
139
143
140
144
# Place device libraries near the libsycl.so library in an install
141
145
# directory as well
142
146
if (WIN32 )
143
- set (install_dest bin )
147
+ set (install_dest bin )
144
148
else ()
145
- set (install_dest lib${LLVM_LIBDIR_SUFFIX} )
149
+ set (install_dest lib${LLVM_LIBDIR_SUFFIX} )
146
150
endif ()
147
151
148
152
install (FILES ${devicelib-obj-file}
@@ -156,4 +160,4 @@ install(FILES ${devicelib-obj-file}
156
160
${devicelib-obj-cmath-fp64}
157
161
${binary_dir} /libsycl-fallback-cmath-fp64.spv
158
162
DESTINATION ${install_dest}
159
- COMPONENT sycl )
163
+ COMPONENT libsycldevice )
0 commit comments