| #!/usr/bin/env python3 | |
| # | |
| # Copyright 2013 The Flutter 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 argparse | |
| import subprocess | |
| import sys | |
| import os | |
| buildroot_dir = os.path.abspath( | |
| os.path.join(os.path.realpath(__file__), '..', '..', '..', '..') | |
| ) | |
| def main(): | |
| parser = argparse.ArgumentParser( | |
| description='Copies architecture-dependent gen_snapshot binaries to output dir' | |
| ) | |
| parser.add_argument('--dst', type=str, required=True) | |
| parser.add_argument('--clang-dir', type=str, default='clang_x64') | |
| parser.add_argument('--x64-out-dir', type=str) | |
| parser.add_argument('--arm64-out-dir', type=str) | |
| parser.add_argument('--armv7-out-dir', type=str) | |
| parser.add_argument('--zip', action="store_true", default=False) | |
| args = parser.parse_args() | |
| dst = ( | |
| args.dst | |
| if os.path.isabs(args.dst) else os.path.join(buildroot_dir, args.dst) | |
| ) | |
| # if dst folder does not exist create it. | |
| if not os.path.exists(dst): | |
| os.makedirs(dst) | |
| if args.x64_out_dir: | |
| x64_out_dir = ( | |
| args.x64_out_dir if os.path.isabs(args.x64_out_dir) else | |
| os.path.join(buildroot_dir, args.x64_out_dir) | |
| ) | |
| generate_gen_snapshot(x64_out_dir, os.path.join(dst, 'gen_snapshot_x64')) | |
| if args.arm64_out_dir: | |
| arm64_out_dir = ( | |
| args.arm64_out_dir if os.path.isabs(args.arm64_out_dir) else | |
| os.path.join(buildroot_dir, args.arm64_out_dir) | |
| ) | |
| generate_gen_snapshot( | |
| os.path.join(arm64_out_dir, args.clang_dir), | |
| os.path.join(dst, 'gen_snapshot_arm64') | |
| ) | |
| if args.armv7_out_dir: | |
| armv7_out_dir = ( | |
| args.armv7_out_dir if os.path.isabs(args.armv7_out_dir) else | |
| os.path.join(buildroot_dir, args.armv7_out_dir) | |
| ) | |
| generate_gen_snapshot( | |
| os.path.join(armv7_out_dir, args.clang_dir), | |
| os.path.join(dst, 'gen_snapshot_armv7') | |
| ) | |
| if args.zip: | |
| zip_archive(dst) | |
| def zip_archive(dst): | |
| subprocess.check_call([ | |
| 'zip', | |
| '-r', | |
| 'gen_snapshot.zip', | |
| '.', | |
| ], cwd=dst) | |
| def generate_gen_snapshot(directory, destination): | |
| gen_snapshot_dir = os.path.join(directory, 'gen_snapshot') | |
| if not os.path.isfile(gen_snapshot_dir): | |
| print('Cannot find gen_snapshot at %s' % gen_snapshot_dir) | |
| sys.exit(1) | |
| subprocess.check_call([ | |
| 'xcrun', 'bitcode_strip', '-r', gen_snapshot_dir, '-o', destination | |
| ]) | |
| if __name__ == '__main__': | |
| sys.exit(main()) |