@@ -11,30 +11,49 @@ def do_configure(args):
1111 sycl_dir = os .path .join (args .src_dir , "sycl" )
1212 spirv_dir = os .path .join (args .src_dir , "llvm-spirv" )
1313 ocl_header_dir = os .path .join (args .obj_dir , "OpenCL-Headers" )
14- icd_loader_lib = ''
14+ icd_loader_lib = os .path .join (args .obj_dir , "OpenCL-ICD-Loader" , "build" )
15+ llvm_targets_to_build = 'X86'
16+ llvm_enable_projects = 'clang;llvm-spirv;sycl;opencl-aot'
17+ libclc_targets_to_build = ''
18+ sycl_build_pi_cuda = 'OFF'
19+ llvm_enable_assertions = 'ON'
1520
1621 if platform .system () == 'Linux' :
17- icd_loader_lib = os .path .join (args . obj_dir , "OpenCL-ICD-Loader" , "build" , "libOpenCL.so" )
22+ icd_loader_lib = os .path .join (icd_loader_lib , "libOpenCL.so" )
1823 else :
19- icd_loader_lib = os .path .join (args .obj_dir , "OpenCL-ICD-Loader" , "build" , "OpenCL.lib" )
24+ icd_loader_lib = os .path .join (icd_loader_lib , "OpenCL.lib" )
25+
26+ if args .cuda :
27+ llvm_targets_to_build += ';NVPTX'
28+ llvm_enable_projects += ';libclc'
29+ libclc_targets_to_build = 'nvptx64--;nvptx64--nvidiacl'
30+ sycl_build_pi_cuda = 'ON'
31+
32+ if args .assertions :
33+ llvm_enable_assertions = 'ON'
2034
2135 install_dir = os .path .join (args .obj_dir , "install" )
2236
23- cmake_cmd = ["cmake" ,
24- "-G" , "Ninja" ,
25- "-DCMAKE_BUILD_TYPE={}" .format (args .build_type ),
26- "-DLLVM_EXTERNAL_PROJECTS=sycl;llvm-spirv;opencl-aot" ,
27- "-DLLVM_EXTERNAL_SYCL_SOURCE_DIR={}" .format (sycl_dir ),
28- "-DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR={}" .format (spirv_dir ),
29- "-DLLVM_ENABLE_PROJECTS=clang;sycl;llvm-spirv;opencl-aot" ,
30- "-DOpenCL_INCLUDE_DIR={}" .format (ocl_header_dir ),
31- "-DOpenCL_LIBRARY={}" .format (icd_loader_lib ),
32- "-DLLVM_BUILD_TOOLS=ON" ,
33- "-DSYCL_ENABLE_WERROR=ON" ,
34- "-DLLVM_ENABLE_ASSERTIONS=ON" ,
35- "-DCMAKE_INSTALL_PREFIX={}" .format (install_dir ),
36- "-DSYCL_INCLUDE_TESTS=ON" , # Explicitly include all kinds of SYCL tests.
37- llvm_dir ]
37+ cmake_cmd = [
38+ "cmake" ,
39+ "-G" , "Ninja" ,
40+ "-DCMAKE_BUILD_TYPE={}" .format (args .build_type ),
41+ "-DLLVM_ENABLE_ASSERTIONS={}" .format (llvm_enable_assertions ),
42+ "-DLLVM_TARGETS_TO_BUILD={}" .format (llvm_targets_to_build ),
43+ "-DLLVM_EXTERNAL_PROJECTS=sycl;llvm-spirv;opencl-aot" ,
44+ "-DLLVM_EXTERNAL_SYCL_SOURCE_DIR={}" .format (sycl_dir ),
45+ "-DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR={}" .format (spirv_dir ),
46+ "-DLLVM_ENABLE_PROJECTS={}" .format (llvm_enable_projects ),
47+ "-DLIBCLC_TARGETS_TO_BUILD={}" .format (libclc_targets_to_build ),
48+ "-DOpenCL_INCLUDE_DIR={}" .format (ocl_header_dir ),
49+ "-DOpenCL_LIBRARY={}" .format (icd_loader_lib ),
50+ "-DSYCL_BUILD_PI_CUDA={}" .format (sycl_build_pi_cuda ),
51+ "-DLLVM_BUILD_TOOLS=ON" ,
52+ "-DSYCL_ENABLE_WERROR=ON" ,
53+ "-DCMAKE_INSTALL_PREFIX={}" .format (install_dir ),
54+ "-DSYCL_INCLUDE_TESTS=ON" , # Explicitly include all kinds of SYCL tests.
55+ llvm_dir
56+ ]
3857
3958 print (cmake_cmd )
4059
@@ -63,6 +82,8 @@ def main():
6382 parser .add_argument ("-o" , "--obj-dir" , metavar = "OBJ_DIR" , required = True , help = "build directory" )
6483 parser .add_argument ("-t" , "--build-type" ,
6584 metavar = "BUILD_TYPE" , required = True , help = "build type, debug or release" )
85+ parser .add_argument ("--cuda" , action = 'store_true' , help = "switch from OpenCL to CUDA" )
86+ parser .add_argument ("--assertions" , action = 'store_true' , help = "build with assertions" )
6687
6788 args = parser .parse_args ()
6889
@@ -74,4 +95,3 @@ def main():
7495 ret = main ()
7596 exit_code = 0 if ret else 1
7697 sys .exit (exit_code )
77-
0 commit comments