Skip to content

Commit 7bb4c4f

Browse files
authored
[BuildBot] Add support for multiple CMake options (#1434)
Multiple CMake options can be supplied to the configure script. E.g. --cmake-opt=-DOPT1=ON --cmake-opt=-DOPT2=VALUE. Add support for relative source and build directories. Signed-off-by: Alexey Bader <[email protected]>
1 parent a1055a9 commit 7bb4c4f

File tree

1 file changed

+25
-16
lines changed

1 file changed

+25
-16
lines changed

buildbot/configure.py

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,23 @@
55
import platform
66

77
# TODO:
8-
# 1. Add support for relative paths (e.g. relative path to source directory)
8+
# 1. Make all required options optional
99
# 2. Create obj_dir from the script if it doesn't exist
1010

1111
def do_configure(args):
1212
ret = False
1313

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")
2125
llvm_targets_to_build = 'X86'
2226
llvm_enable_projects = 'clang;llvm-spirv;sycl;opencl-aot;xpti;libdevice'
2327
libclc_targets_to_build = ''
@@ -48,7 +52,7 @@ def do_configure(args):
4852
if args.shared_libs:
4953
llvm_build_shared_libs = 'ON'
5054

51-
install_dir = os.path.join(args.obj_dir, "install")
55+
install_dir = os.path.join(abs_obj_dir, "install")
5256

5357
cmake_cmd = [
5458
"cmake",
@@ -71,25 +75,30 @@ def do_configure(args):
7175
"-DLLVM_ENABLE_DOXYGEN={}".format(llvm_enable_doxygen),
7276
"-DLLVM_ENABLE_SPHINX={}".format(llvm_enable_sphinx),
7377
"-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
78+
"-DSYCL_ENABLE_XPTI_TRACING=ON" # Explicitly turn on XPTI tracing
7779
]
7880

7981
if not args.no_ocl:
8082
cmake_cmd.extend([
8183
"-DOpenCL_INCLUDE_DIR={}".format(ocl_header_dir),
8284
"-DOpenCL_LIBRARY={}".format(icd_loader_lib)])
8385

86+
# Add additional CMake options if provided
87+
if args.cmake_opt:
88+
cmake_cmd += args.cmake_opt
89+
90+
# Add path to root CMakeLists.txt
91+
cmake_cmd.append(llvm_dir)
92+
8493
print(cmake_cmd)
8594

8695
try:
87-
subprocess.check_call(cmake_cmd, cwd=args.obj_dir)
96+
subprocess.check_call(cmake_cmd, cwd=abs_obj_dir)
8897
except subprocess.CalledProcessError:
89-
cmake_cache = os.path.join(args.obj_dir, "CMakeCache.txt")
98+
cmake_cache = os.path.join(abs_obj_dir, "CMakeCache.txt")
9099
if os.path.isfile(cmake_cache):
91100
os.remove(cmake_cache)
92-
subprocess.check_call(cmake_cmd, cwd=args.obj_dir)
101+
subprocess.check_call(cmake_cmd, cwd=abs_obj_dir)
93102

94103
ret = True
95104
return ret
@@ -113,7 +122,7 @@ def main():
113122
parser.add_argument("--docs", action='store_true', help="build Doxygen documentation")
114123
parser.add_argument("--no-ocl", action='store_true', help="download OpenCL deps via CMake")
115124
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")
125+
parser.add_argument("--cmake-opt", action='append', help="Additional CMake option not configured via script parameters")
117126

118127
args = parser.parse_args()
119128

0 commit comments

Comments
 (0)