30 """Generate compile_commands.json for the C++ analysis servers.
32 compile_commands.json is used by the c++ clang and intellij language analysis
33 servers used in IDEs such as Visual Studio Code and Emacs.
36 options: supported options include: verbose, force, dir
39 success (0) or failure (non zero)
42 fname = os.path.join(options.dir,
"compile_commands.json")
44 if os.path.isfile(fname)
and not options.force:
45 print(fname +
" already exists, use --force to override")
56 sanitizer=options.sanitizer)
58 if not os.path.isdir(out_folder):
61 command_set = json.loads(
62 subprocess.check_output([
63 "buildtools/ninja/ninja",
"-C", out_folder,
"-t",
"compdb",
"-x",
68 for obj
in command_set:
69 command = obj[
"command"]
72 if "-DDART_PRECOMPILED_RUNTIME" in command:
76 command = command.replace(
"-Werror",
"")
81 command = re.sub(
r"([^\s]*)ninja -t msvc -e environment.x64 --",
"",
87 'C:\\src\\depot_tools\\win_toolchain\\vs_files\\27370823e7\\Windows Kits\\10\\Include\\10.0.22621.0\\um',
88 'C:\\src\\depot_tools\\win_toolchain\\vs_files\\27370823e7\\Windows Kits\\10\\Include\\10.0.22621.0\\shared',
89 'C:\\src\\depot_tools\\win_toolchain\\vs_files\\27370823e7\\Windows Kits\\10\\Include\\10.0.22621.0\\winrt',
90 'C:\\src\\depot_tools\\win_toolchain\\vs_files\\27370823e7\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt',
91 'C:\\src\\depot_tools\\win_toolchain\\vs_files\\27370823e7\\VC\\Tools\\MSVC\\14.34.31933\\include',
92 'C:\\src\\depot_tools\\win_toolchain\\vs_files\\27370823e7\\VC\\Tools\\MSVC\\14.34.31933\\atlmfc\\include',
94 for windowsSysroot
in windowsSysroots:
95 command = command.replace(
96 "-DDART_TARGET_OS_WINDOWS",
97 "-DDART_TARGET_OS_WINDOWS \"-I%s\"" % windowsSysroot)
100 command = command.replace(
"-DDART_TARGET_OS_WINDOWS",
101 "-DDART_TARGET_OS_WINDOWS -ferror-limit=0")
103 obj[
"command"] = command
106 with open(fname,
"w")
as f:
107 json.dump(commands, f, indent=4)