| 133 | |
| 134 | |
| 135 | def GenerateCompileCommandsAndBuild(build_dir, out): |
| 136 | if not os.path.isdir(build_dir): |
| 137 | print("Error: Specified build dir {} is not a directory.".format( |
| 138 | build_dir), file=sys.stderr) |
| 139 | exit(1) |
| 140 | |
| 141 | autoninja = "autoninja -C {}".format(build_dir) |
| 142 | if subprocess.call(autoninja, shell=True, stdout=out) != 0: |
| 143 | print("Error: Building {} failed.".format(build_dir), file=sys.stderr) |
| 144 | exit(1) |
| 145 | |
| 146 | compile_commands_file = "{}/compile_commands.json".format(build_dir) |
| 147 | print("Generating compile commands in {}.".format( |
| 148 | compile_commands_file), file=out) |
| 149 | ninja = "ninja -C {} -t compdb cxx cc > {}".format( |
| 150 | build_dir, compile_commands_file) |
| 151 | if subprocess.call(ninja, shell=True, stdout=out) != 0: |
| 152 | print("Error: Cound not generate {} for {}.".format( |
| 153 | compile_commands_file, build_dir), file=sys.stderr) |
| 154 | exit(1) |
| 155 | |
| 156 | ninja_deps_file = "{}/ninja-deps.txt".format(build_dir) |
| 157 | print("Generating ninja dependencies in {}.".format( |
| 158 | ninja_deps_file), file=out) |
| 159 | ninja = "ninja -C {} -t deps > {}".format( |
| 160 | build_dir, ninja_deps_file) |
| 161 | if subprocess.call(ninja, shell=True, stdout=out) != 0: |
| 162 | print("Error: Cound not generate {} for {}.".format( |
| 163 | ninja_deps_file, build_dir), file=sys.stderr) |
| 164 | exit(1) |
| 165 | |
| 166 | return compile_commands_file, ninja_deps_file |
| 167 | |
| 168 | |
| 169 | def fmt_bytes(num_bytes): |