@@ -13,22 +13,28 @@ def do_configure(args):
13
13
if not os .path .isdir (abs_obj_dir ):
14
14
os .makedirs (abs_obj_dir )
15
15
16
+ llvm_external_projects = 'sycl;llvm-spirv;opencl-aot;libdevice'
17
+ if not args .use_libcxx :
18
+ llvm_external_projects += ';xpti;xptifw'
19
+
16
20
llvm_dir = os .path .join (abs_src_dir , "llvm" )
17
21
sycl_dir = os .path .join (abs_src_dir , "sycl" )
18
22
spirv_dir = os .path .join (abs_src_dir , "llvm-spirv" )
19
23
xpti_dir = os .path .join (abs_src_dir , "xpti" )
24
+ xptifw_dir = os .path .join (abs_src_dir , "xptifw" )
20
25
libdevice_dir = os .path .join (abs_src_dir , "libdevice" )
21
26
ocl_header_dir = os .path .join (abs_obj_dir , "OpenCL-Headers" )
22
27
icd_loader_lib = os .path .join (abs_obj_dir , "OpenCL-ICD-Loader" , "build" )
23
28
llvm_targets_to_build = 'X86'
24
- llvm_enable_projects = 'clang;llvm-spirv;sycl;opencl-aot;xpti;libdevice'
29
+ llvm_enable_projects = 'clang;' + llvm_external_projects
25
30
libclc_targets_to_build = ''
26
31
sycl_build_pi_cuda = 'OFF'
27
32
sycl_werror = 'ON'
28
33
llvm_enable_assertions = 'ON'
29
34
llvm_enable_doxygen = 'OFF'
30
35
llvm_enable_sphinx = 'OFF'
31
36
llvm_build_shared_libs = 'OFF'
37
+ sycl_enable_xpti_tracing = 'OFF' if args .use_libcxx else 'ON'
32
38
33
39
icd_loader_lib = os .path .join (icd_loader_lib , "libOpenCL.so" if platform .system () == 'Linux' else "OpenCL.lib" )
34
40
@@ -63,10 +69,12 @@ def do_configure(args):
63
69
"-DCMAKE_BUILD_TYPE={}" .format (args .build_type ),
64
70
"-DLLVM_ENABLE_ASSERTIONS={}" .format (llvm_enable_assertions ),
65
71
"-DLLVM_TARGETS_TO_BUILD={}" .format (llvm_targets_to_build ),
66
- "-DLLVM_EXTERNAL_PROJECTS=sycl;llvm-spirv;opencl-aot;xpti;libdevice" ,
72
+ "-DLLVM_EXTERNAL_PROJECTS={}" . format ( llvm_external_projects ) ,
67
73
"-DLLVM_EXTERNAL_SYCL_SOURCE_DIR={}" .format (sycl_dir ),
68
74
"-DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR={}" .format (spirv_dir ),
69
75
"-DLLVM_EXTERNAL_XPTI_SOURCE_DIR={}" .format (xpti_dir ),
76
+ "-DXPTI_SOURCE_DIR={}" .format (xpti_dir ),
77
+ "-DLLVM_EXTERNAL_XPTIFW_SOURCE_DIR={}" .format (xptifw_dir ),
70
78
"-DLLVM_EXTERNAL_LIBDEVICE_SOURCE_DIR={}" .format (libdevice_dir ),
71
79
"-DLLVM_ENABLE_PROJECTS={}" .format (llvm_enable_projects ),
72
80
"-DLIBCLC_TARGETS_TO_BUILD={}" .format (libclc_targets_to_build ),
@@ -78,7 +86,7 @@ def do_configure(args):
78
86
"-DLLVM_ENABLE_DOXYGEN={}" .format (llvm_enable_doxygen ),
79
87
"-DLLVM_ENABLE_SPHINX={}" .format (llvm_enable_sphinx ),
80
88
"-DBUILD_SHARED_LIBS={}" .format (llvm_build_shared_libs ),
81
- "-DSYCL_ENABLE_XPTI_TRACING=ON" # Explicitly turn on XPTI tracing
89
+ "-DSYCL_ENABLE_XPTI_TRACING={}" . format ( sycl_enable_xpti_tracing )
82
90
]
83
91
84
92
if args .system_ocl :
@@ -101,6 +109,15 @@ def do_configure(args):
101
109
# Add path to root CMakeLists.txt
102
110
cmake_cmd .append (llvm_dir )
103
111
112
+ if args .use_libcxx :
113
+ if not (args .libcxx_include and args .libcxx_library ):
114
+ sys .exit ("Please specify include and library path of libc++ when building sycl "
115
+ "runtime with it" )
116
+ cmake_cmd .extend ([
117
+ "-DSYCL_USE_LIBCXX=ON" ,
118
+ "-DSYCL_LIBCXX_INCLUDE_PATH={}" .format (args .libcxx_include ),
119
+ "-DSYCL_LIBCXX_LIBRARY_PATH={}" .format (args .libcxx_library )])
120
+
104
121
print ("[Cmake Command]: {}" .format (" " .join (cmake_cmd )))
105
122
106
123
try :
@@ -123,7 +140,7 @@ def main():
123
140
parser .add_argument ("-d" , "--base-branch" , metavar = "BASE_BRANCH" , help = "pull request base branch" )
124
141
parser .add_argument ("-r" , "--pr-number" , metavar = "PR_NUM" , help = "pull request number" )
125
142
parser .add_argument ("-w" , "--builder-dir" , metavar = "BUILDER_DIR" ,
126
- help = "builder directory, which is the directory contains source and build directories" )
143
+ help = "builder directory, which is the directory containing source and build directories" )
127
144
# User options
128
145
parser .add_argument ("-s" , "--src-dir" , metavar = "SRC_DIR" , help = "source directory (autodetected by default)" )
129
146
parser .add_argument ("-o" , "--obj-dir" , metavar = "OBJ_DIR" , help = "build directory. (<src>/build by default)" )
@@ -140,7 +157,9 @@ def main():
140
157
parser .add_argument ("--shared-libs" , action = 'store_true' , help = "Build shared libraries" )
141
158
parser .add_argument ("--cmake-opt" , action = 'append' , help = "Additional CMake option not configured via script parameters" )
142
159
parser .add_argument ("--cmake-gen" , default = "Ninja" , help = "CMake generator" )
143
-
160
+ parser .add_argument ("--use-libcxx" , action = "store_true" , help = "build sycl runtime with libcxx" )
161
+ parser .add_argument ("--libcxx-include" , metavar = "LIBCXX_INCLUDE_PATH" , help = "libcxx include path" )
162
+ parser .add_argument ("--libcxx-library" , metavar = "LIBCXX_LIBRARY_PATH" , help = "libcxx library path" )
144
163
args = parser .parse_args ()
145
164
146
165
print ("args:{}" .format (args ))
0 commit comments