5
5
import platform
6
6
7
7
# TODO:
8
- # 1. Add support for relative paths (e.g. relative path to source directory)
8
+ # 1. Make all required options optional
9
9
# 2. Create obj_dir from the script if it doesn't exist
10
10
11
11
def do_configure (args ):
12
12
ret = False
13
13
14
- llvm_dir = os .path .join (args .src_dir , "llvm" )
15
- sycl_dir = os .path .join (args .src_dir , "sycl" )
16
- spirv_dir = os .path .join (args .src_dir , "llvm-spirv" )
17
- xpti_dir = os .path .join (args .src_dir , "xpti" )
18
- libdevice_dir = os .path .join (args .src_dir , "libdevice" )
19
- ocl_header_dir = os .path .join (args .obj_dir , "OpenCL-Headers" )
20
- icd_loader_lib = os .path .join (args .obj_dir , "OpenCL-ICD-Loader" , "build" )
14
+ # Get absolute paths
15
+ abs_src_dir = os .path .abspath (args .src_dir )
16
+ abs_obj_dir = os .path .abspath (args .obj_dir )
17
+
18
+ llvm_dir = os .path .join (abs_src_dir , "llvm" )
19
+ sycl_dir = os .path .join (abs_src_dir , "sycl" )
20
+ spirv_dir = os .path .join (abs_src_dir , "llvm-spirv" )
21
+ xpti_dir = os .path .join (abs_src_dir , "xpti" )
22
+ libdevice_dir = os .path .join (abs_src_dir , "libdevice" )
23
+ ocl_header_dir = os .path .join (abs_obj_dir , "OpenCL-Headers" )
24
+ icd_loader_lib = os .path .join (abs_obj_dir , "OpenCL-ICD-Loader" , "build" )
21
25
llvm_targets_to_build = 'X86'
22
26
llvm_enable_projects = 'clang;llvm-spirv;sycl;opencl-aot;xpti;libdevice'
23
27
libclc_targets_to_build = ''
@@ -48,7 +52,7 @@ def do_configure(args):
48
52
if args .shared_libs :
49
53
llvm_build_shared_libs = 'ON'
50
54
51
- install_dir = os .path .join (args . obj_dir , "install" )
55
+ install_dir = os .path .join (abs_obj_dir , "install" )
52
56
53
57
cmake_cmd = [
54
58
"cmake" ,
@@ -71,25 +75,27 @@ def do_configure(args):
71
75
"-DLLVM_ENABLE_DOXYGEN={}" .format (llvm_enable_doxygen ),
72
76
"-DLLVM_ENABLE_SPHINX={}" .format (llvm_enable_sphinx ),
73
77
"-DBUILD_SHARED_LIBS={}" .format (llvm_build_shared_libs ),
74
- "-DSYCL_ENABLE_XPTI_TRACING=ON" , # Explicitly turn on XPTI tracing
75
- "{}" .format (args .cmake_opts ),
76
- llvm_dir
77
- ]
78
+ "-DSYCL_ENABLE_XPTI_TRACING=ON" # Explicitly turn on XPTI tracing
79
+ ] + args .cmake_opt
80
+
78
81
79
82
if not args .no_ocl :
80
83
cmake_cmd .extend ([
81
84
"-DOpenCL_INCLUDE_DIR={}" .format (ocl_header_dir ),
82
85
"-DOpenCL_LIBRARY={}" .format (icd_loader_lib )])
83
86
87
+ # Add path to root CMakeLists.txt
88
+ cmake_cmd .append (llvm_dir )
89
+
84
90
print (cmake_cmd )
85
91
86
92
try :
87
- subprocess .check_call (cmake_cmd , cwd = args . obj_dir )
93
+ subprocess .check_call (cmake_cmd , cwd = abs_obj_dir )
88
94
except subprocess .CalledProcessError :
89
- cmake_cache = os .path .join (args . obj_dir , "CMakeCache.txt" )
95
+ cmake_cache = os .path .join (abs_obj_dir , "CMakeCache.txt" )
90
96
if os .path .isfile (cmake_cache ):
91
97
os .remove (cmake_cache )
92
- subprocess .check_call (cmake_cmd , cwd = args . obj_dir )
98
+ subprocess .check_call (cmake_cmd , cwd = abs_obj_dir )
93
99
94
100
ret = True
95
101
return ret
@@ -113,7 +119,7 @@ def main():
113
119
parser .add_argument ("--docs" , action = 'store_true' , help = "build Doxygen documentation" )
114
120
parser .add_argument ("--no-ocl" , action = 'store_true' , help = "download OpenCL deps via CMake" )
115
121
parser .add_argument ("--shared-libs" , action = 'store_true' , help = "Build shared libraries" )
116
- parser .add_argument ("--cmake-opts " , metavar = "CMAKE_OPTS" , help = "Additional CMake options not configured via script parameters" )
122
+ parser .add_argument ("--cmake-opt " , action = 'append' , help = "Additional CMake option not configured via script parameters" )
117
123
118
124
args = parser .parse_args ()
119
125
0 commit comments