diff options
Diffstat (limited to 'tools/run_rustc.py')
-rw-r--r-- | tools/run_rustc.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tools/run_rustc.py b/tools/run_rustc.py new file mode 100644 index 000000000..9e7284c26 --- /dev/null +++ b/tools/run_rustc.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +# Inspired by +# https://fuchsia.googlesource.com/build/+/master/rust/build_rustc_target.py +# Copyright 2018 The Fuchsia Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import sys +import os +import argparse +import subprocess + + +# Updates the path of the main target in the depfile to the relative path +# from base_path build_output_path +def fix_depfile(depfile_path, base_path, build_output_path): + with open(depfile_path, "r") as depfile: + content = depfile.read() + content_split = content.split(': ', 1) + target_path = os.path.relpath(build_output_path, start=base_path) + new_content = "%s: %s" % (target_path, content_split[1]) + with open(depfile_path, "w") as depfile: + depfile.write(new_content) + + +def main(): + parser = argparse.ArgumentParser("Compiles a Rust crate") + parser.add_argument( + "--depfile", + help="Path at which the output depfile should be stored", + required=False) + parser.add_argument( + "--output_file", + help="Path at which the output file should be stored", + required=False) + args, rest = parser.parse_known_args() + + env = os.environ.copy() + subprocess.check_call(["rustc"] + rest, env=env) + + if args.depfile and args.output_file: + fix_depfile(args.depfile, os.getcwd(), args.output_file) + + +if __name__ == '__main__': + sys.exit(main()) |