@@ -71,7 +71,7 @@ if( NOT OpenCL_LIBRARIES )
71
71
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} /icd_build"
72
72
CONFIGURE_COMMAND ${CMAKE_COMMAND} "${CMAKE_CURRENT_BINARY_DIR} /OpenCL/icd" -DCMAKE_INSTALL_LIBDIR:PATH=lib -DCMAKE_INSTALL_PREFIX=${LLVM_BINARY_DIR}
73
73
BUILD_COMMAND make C_INCLUDE_PATH=${CMAKE_CURRENT_BINARY_DIR}/OpenCL/inc
74
- INSTALL_COMMAND make install
74
+ INSTALL_COMMAND make install
75
75
STEP_TARGETS configure,build,install
76
76
DEPENDS ocl-headers
77
77
)
@@ -84,6 +84,16 @@ endif()
84
84
85
85
set (OPENCL_INCLUDE "${OpenCL_INCLUDE_DIRS} " )
86
86
87
+ add_library (OpenCL-Headers INTERFACE )
88
+ add_library (OpenCL::Headers ALIAS OpenCL-Headers )
89
+ target_include_directories (OpenCL-Headers
90
+ INTERFACE ${OPENCL_INCLUDE}
91
+ )
92
+ install (DIRECTORY ${OPENCL_INCLUDE} /CL
93
+ DESTINATION ${LLVM_INST_INC_DIRECTORY}
94
+ COMPONENT opencl-headers
95
+ )
96
+
87
97
# Configure SYCL version macro
88
98
set (sycl_inc_dir ${CMAKE_CURRENT_SOURCE_DIR} /include )
89
99
string (TIMESTAMP __SYCL_COMPILER_VERSION "%Y%m%d" )
@@ -98,10 +108,6 @@ COMMENT "Copying SYCL headers ...")
98
108
# Configure SYCL headers
99
109
install (DIRECTORY "${sycl_inc_dir} /." DESTINATION "${LLVM_INST_INC_DIRECTORY} " COMPONENT sycl-headers )
100
110
101
- # Configure OpenCL header and ICD loader
102
- include_directories (AFTER "${sycl_inc_dir} " "${OpenCL_INCLUDE_DIRS} " )
103
- link_libraries (${OpenCL_LIBRARIES} )
104
-
105
111
# SYCL runtime library
106
112
add_subdirectory (source )
107
113
@@ -126,3 +132,51 @@ add_custom_target( sycl-toolchain
126
132
add_subdirectory ( test )
127
133
add_subdirectory ( unittests )
128
134
add_subdirectory ( tools )
135
+
136
+ # Package deploy support
137
+ # Listed here are component names contributing the package
138
+ set ( SYCL_TOOLCHAIN_DEPLOY_COMPONENTS
139
+ clang
140
+ clang-offload-wrapper
141
+ clang-offload-bundler
142
+ llc
143
+ llvm-as
144
+ llvm-ar
145
+ llvm-dis
146
+ llvm-no-spir-kernel
147
+ llvm-spirv
148
+ llvm-link
149
+ llvm-objcopy
150
+ opt
151
+ clang-resource-headers
152
+ opencl-headers
153
+ sycl-headers
154
+ )
155
+
156
+ # Use it as fake dependency in order to force another command(s) to execute.
157
+ add_custom_command (OUTPUT __force_it
158
+ COMMAND "${CMAKE_COMMAND} " -E echo
159
+ )
160
+ #Serialize installation to avoid missing components due to build race conditions
161
+ set (__chain_dep __force_it )
162
+
163
+ set (manifest_list )
164
+ foreach ( comp ${SYCL_TOOLCHAIN_DEPLOY_COMPONENTS} )
165
+ message ( STATUS "Adding component ${comp} to deploy" )
166
+
167
+ set (manifest_file ${CMAKE_CURRENT_BINARY_DIR} /install_manifest_${comp}.txt )
168
+ add_custom_command (OUTPUT ${manifest_file}
169
+ COMMAND "${CMAKE_COMMAND} "
170
+ "-DCMAKE_INSTALL_COMPONENT=${comp} "
171
+ -P "${CMAKE_BINARY_DIR} /cmake_install.cmake"
172
+ DEPENDS ${__chain_dep}
173
+ COMMENT "Deploying component ${comp} "
174
+ USES_TERMINAL
175
+ )
176
+ list (APPEND manifest_list ${manifest_file} )
177
+ set (__chain_dep ${manifest_file} )
178
+ endforeach ( comp )
179
+
180
+ add_custom_target (deploy-sycl-toolchain
181
+ DEPENDS sycl-toolchain ${manifest_list}
182
+ )
0 commit comments