|  | #!/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()) |