[JITLink] Add support of R_X86_64_32S relocation
[llvm-project.git] / clang / utils / analyzer / entrypoint.py
blob9c84431da548257a4a5dec04d3d19a753f21b997
1 import argparse
2 import os
3 import sys
5 from subprocess import call, check_call, CalledProcessError
6 from time import sleep
7 from typing import List, Tuple
10 def main():
11 settings, rest = parse_arguments()
12 if settings.wait:
13 wait()
14 if settings.build_llvm or settings.build_llvm_only:
15 build_llvm()
16 if settings.build_llvm_only:
17 return
18 sys.exit(test(rest))
21 def wait():
22 # It is an easy on CPU way of keeping the docker container running
23 # while the user has a terminal session in that container.
24 while True:
25 sleep(3600)
28 def parse_arguments() -> Tuple[argparse.Namespace, List[str]]:
29 parser = argparse.ArgumentParser()
30 parser.add_argument('--wait', action='store_true')
31 parser.add_argument('--build-llvm', action='store_true')
32 parser.add_argument('--build-llvm-only', action='store_true')
33 return parser.parse_known_args()
36 def build_llvm():
37 os.chdir('/build')
38 try:
39 if is_cmake_needed():
40 cmake()
41 ninja()
42 except CalledProcessError:
43 print("Build failed!")
44 sys.exit(1)
47 def is_cmake_needed():
48 return "build.ninja" not in os.listdir()
51 CMAKE_COMMAND = "cmake -G Ninja -DCMAKE_BUILD_TYPE=Release " \
52 "-DCMAKE_INSTALL_PREFIX=/analyzer -DLLVM_TARGETS_TO_BUILD=X86 " \
53 "-DLLVM_ENABLE_PROJECTS=\"clang;openmp\" -DLLVM_BUILD_RUNTIME=OFF " \
54 "-DLLVM_ENABLE_TERMINFO=OFF -DCLANG_ENABLE_ARCMT=OFF " \
55 "-DCLANG_ENABLE_STATIC_ANALYZER=ON"
58 def cmake():
59 check_call(CMAKE_COMMAND + ' /llvm-project/llvm', shell=True)
62 def ninja():
63 check_call("ninja install", shell=True)
66 def test(args: List[str]) -> int:
67 os.chdir("/projects")
68 return call("/scripts/SATest.py " + " ".join(args), shell=True)
71 if __name__ == '__main__':
72 main()