| #!/usr/bin/env python3 |
| # Copyright 2019 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Library and tool to expand command lines that mention thin archives |
| # into command lines that mention the contained object files. |
| |
| import argparse |
| import sys |
| |
| from remote_link import RemoteLinkWindows |
| from remote_ld import RemoteLinkUnix |
| |
| |
| def main(argv): |
| ap = argparse.ArgumentParser( |
| description=('Expand command lines that mention thin archives into ' |
| 'command lines that mention the contained object files.'), |
| usage='%(prog)s [options] -- command line') |
| ap.add_argument('-o', |
| '--output', |
| help=('Write new command line to named file ' |
| 'instead of standard output.')) |
| ap.add_argument('-p', '--linker-prefix', |
| help='String to prefix linker flags with.', |
| default='') |
| ap.add_argument('cmdline', |
| nargs=argparse.REMAINDER, |
| help='Command line to expand. Should be preceded by \'--\'.') |
| args = ap.parse_args(argv[1:]) |
| if not args.cmdline: |
| ap.print_help(sys.stderr) |
| return 1 |
| |
| cmdline = args.cmdline |
| if cmdline[0] == '--': |
| cmdline = cmdline[1:] |
| linker_prefix = args.linker_prefix |
| |
| if linker_prefix == '-Wl,': |
| linker = RemoteLinkUnix() |
| else: |
| linker = RemoteLinkWindows() |
| |
| rsp_expanded = list(linker.expand_args_rsps(cmdline)) |
| expanded_args = list(linker.expand_thin_archives(rsp_expanded)) |
| |
| if args.output: |
| output = open(args.output, 'w') |
| else: |
| output = sys.stdout |
| for arg in expanded_args: |
| output.write('%s\n' % (arg,)) |
| if args.output: |
| output.close() |
| return 0 |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main(sys.argv)) |