5 from subprocess
import call
, check_call
, CalledProcessError
7 from typing
import List
, Tuple
11 settings
, rest
= parse_arguments()
14 if settings
.build_llvm
or settings
.build_llvm_only
:
16 if settings
.build_llvm_only
:
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.
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()
42 except CalledProcessError
:
43 print("Build failed!")
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"
59 check_call(CMAKE_COMMAND
+ ' /llvm-project/llvm', shell
=True)
63 check_call("ninja install", shell
=True)
66 def test(args
: List
[str]) -> int:
68 return call("/scripts/SATest.py " + " ".join(args
), shell
=True)
71 if __name__
== '__main__':