| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | """ |
| | Generate a linker script that links libc++ to the proper ABI library. |
| | An example script for c++abi would look like "INPUT(libc++.so.1 -lc++abi)". |
| | """ |
| |
|
| | import argparse |
| | import os |
| | import sys |
| |
|
| |
|
| | def main(): |
| | parser = argparse.ArgumentParser(description=__doc__) |
| | parser.add_argument("--dryrun", help="Don't write any output", |
| | action="store_true", default=False) |
| | parser.add_argument("--rename", action="store_true", default=False, |
| | help="Rename the output as input so we can replace it") |
| | parser.add_argument("--input", help="Path to libc++ library", required=True) |
| | parser.add_argument("--output", help="Path to libc++ linker script", |
| | required=True) |
| | parser.add_argument("libraries", nargs="+", |
| | help="List of libraries libc++ depends on") |
| | args = parser.parse_args() |
| |
|
| | |
| | libcxx = os.path.relpath(args.input, os.path.dirname(args.output)) |
| |
|
| | |
| | public_libs = ['-l%s' % l for l in args.libraries] |
| |
|
| | |
| | contents = "INPUT(%s)" % ' '.join([libcxx] + public_libs) |
| |
|
| | if args.dryrun: |
| | print("GENERATING SCRIPT: '%s' as file %s" % (contents, args.output)) |
| | return 0 |
| |
|
| | |
| | if os.path.islink(args.output): |
| | os.unlink(args.output) |
| |
|
| | |
| | with open(args.output, 'w') as f: |
| | f.write(contents + "\n") |
| |
|
| | return 0 |
| |
|
| |
|
| | if __name__ == '__main__': |
| | sys.exit(main()) |
| |
|