forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild_linux.py
executable file
·53 lines (46 loc) · 1.64 KB
/
build_linux.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/env python3
import argparse
import os
import subprocess
def main():
p = argparse.ArgumentParser()
p.add_argument("cmake_path", help="The cmake binary to use")
p.add_argument("swift_src_dir", help="The swift source directory")
p.add_argument("clang", help="The path to the clang binary to use")
p.add_argument(
"swift_root_dir",
help="A path to a swift root produced by installing "
"Swift and Foundation together. We infer swiftc "
"from here",
)
p.add_argument("destdir", help="The directory to perform the actual " "build in")
p.add_argument(
"--clean", action="store_true", help="Delete destdir before performing a build."
)
args = p.parse_args()
if args.clean:
print("Asked to clean... Cleaning!")
subprocess.check_output(["/bin/rm", "-rfv", args.destdir])
subprocess.check_call(["/bin/mkdir", "-p", args.destdir])
os.chdir(args.destdir)
configureInvocation = [
args.cmake_path,
"-GNinja",
"-DSWIFT_EXEC={}/bin/swiftc".format(args.swift_root_dir),
"-DCLANG_EXEC={}".format(args.clang),
"-DSWIFT_LIBRARY_PATH={}/lib/swift".format(args.swift_root_dir),
"{}/benchmark".format(args.swift_src_dir),
]
print("COMMAND: {}".format(" ".join(configureInvocation)))
subprocess.check_call(configureInvocation)
buildInvocation = [
args.cmake_path,
"--build",
args.destdir,
"--",
"swift-benchmark-linux-x86_64",
]
print("COMMAND: {}".format(" ".join(buildInvocation)))
subprocess.check_call(buildInvocation)
if __name__ == "__main__":
main()