#!/usr/bin/env python # Copyright 2016 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Runs a compilation command. This script exists to avoid using complex shell commands in gcc_toolchain.gni's tool("cxx") and tool("cc") in case the host running the compiler does not have a POSIX-like shell (e.g. Windows). """ import argparse import sys import wrapper_utils def main(): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument('--resource-whitelist', help='Generate a resource whitelist for this target.', metavar='PATH') parser.add_argument('command', nargs=argparse.REMAINDER, help='Compilation command') args = parser.parse_args() returncode, stderr = wrapper_utils.CaptureCommandStderr( wrapper_utils.CommandToRun(args.command)) used_resources = wrapper_utils.ExtractResourceIdsFromPragmaWarnings(stderr) sys.stderr.write(stderr) if args.resource_whitelist: with open(args.resource_whitelist, 'w') as f: if used_resources: f.write('\n'.join(str(resource) for resource in used_resources)) f.write('\n') return returncode if __name__ == "__main__": sys.exit(main())