@@ -13,6 +13,10 @@ def do_configure(args):
1313 if not os .path .isdir (abs_obj_dir ):
1414 os .makedirs (abs_obj_dir )
1515
16+ llvm_external_projects = 'sycl;llvm-spirv;opencl-aot;libdevice'
17+ if not args .use_libcxx :
18+ llvm_external_projects += ';xpti;xptifw'
19+
1620 llvm_dir = os .path .join (abs_src_dir , "llvm" )
1721 sycl_dir = os .path .join (abs_src_dir , "sycl" )
1822 spirv_dir = os .path .join (abs_src_dir , "llvm-spirv" )
@@ -22,14 +26,15 @@ def do_configure(args):
2226 ocl_header_dir = os .path .join (abs_obj_dir , "OpenCL-Headers" )
2327 icd_loader_lib = os .path .join (abs_obj_dir , "OpenCL-ICD-Loader" , "build" )
2428 llvm_targets_to_build = 'X86'
25- llvm_enable_projects = 'clang;llvm-spirv;sycl;opencl-aot;xpti;xptifw;libdevice'
29+ llvm_enable_projects = 'clang;' + llvm_external_projects
2630 libclc_targets_to_build = ''
2731 sycl_build_pi_cuda = 'OFF'
2832 sycl_werror = 'ON'
2933 llvm_enable_assertions = 'ON'
3034 llvm_enable_doxygen = 'OFF'
3135 llvm_enable_sphinx = 'OFF'
3236 llvm_build_shared_libs = 'OFF'
37+ sycl_enable_xpti_tracing = 'OFF' if args .use_libcxx else 'ON'
3338
3439 icd_loader_lib = os .path .join (icd_loader_lib , "libOpenCL.so" if platform .system () == 'Linux' else "OpenCL.lib" )
3540
@@ -64,7 +69,7 @@ def do_configure(args):
6469 "-DCMAKE_BUILD_TYPE={}" .format (args .build_type ),
6570 "-DLLVM_ENABLE_ASSERTIONS={}" .format (llvm_enable_assertions ),
6671 "-DLLVM_TARGETS_TO_BUILD={}" .format (llvm_targets_to_build ),
67- "-DLLVM_EXTERNAL_PROJECTS=sycl;llvm-spirv;opencl-aot;xpti;xptifw;libdevice" ,
72+ "-DLLVM_EXTERNAL_PROJECTS={}" . format ( llvm_external_projects ) ,
6873 "-DLLVM_EXTERNAL_SYCL_SOURCE_DIR={}" .format (sycl_dir ),
6974 "-DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR={}" .format (spirv_dir ),
7075 "-DLLVM_EXTERNAL_XPTI_SOURCE_DIR={}" .format (xpti_dir ),
@@ -81,7 +86,7 @@ def do_configure(args):
8186 "-DLLVM_ENABLE_DOXYGEN={}" .format (llvm_enable_doxygen ),
8287 "-DLLVM_ENABLE_SPHINX={}" .format (llvm_enable_sphinx ),
8388 "-DBUILD_SHARED_LIBS={}" .format (llvm_build_shared_libs ),
84- "-DSYCL_ENABLE_XPTI_TRACING=ON" # Explicitly turn on XPTI tracing
89+ "-DSYCL_ENABLE_XPTI_TRACING={}" . format ( sycl_enable_xpti_tracing )
8590 ]
8691
8792 if args .system_ocl :
@@ -104,6 +109,15 @@ def do_configure(args):
104109 # Add path to root CMakeLists.txt
105110 cmake_cmd .append (llvm_dir )
106111
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+
107121 print ("[Cmake Command]: {}" .format (" " .join (cmake_cmd )))
108122
109123 try :
@@ -143,7 +157,9 @@ def main():
143157 parser .add_argument ("--shared-libs" , action = 'store_true' , help = "Build shared libraries" )
144158 parser .add_argument ("--cmake-opt" , action = 'append' , help = "Additional CMake option not configured via script parameters" )
145159 parser .add_argument ("--cmake-gen" , default = "Ninja" , help = "CMake generator" )
146-
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" )
147163 args = parser .parse_args ()
148164
149165 print ("args:{}" .format (args ))
0 commit comments