#!/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 os import subprocess import sys # BFD architecture names recognized by objcopy. BFD_ARCH = { 'arm': 'arm', 'arm64': 'aarch64', 'x86': 'i386', 'x64': 'i386:x86-64', } # BFD target names recognized by objcopy. BFD_TARGET = { 'arm': 'elf32-littlearm', 'arm64': 'elf64-littleaarch64', 'x86': 'elf32-i386', 'x64': 'elf64-x86-64', } def main(): parser = argparse.ArgumentParser( description='Convert a data file to an object file' ) parser.add_argument('--objcopy', type=str, required=True) parser.add_argument('--input', type=str, required=True) parser.add_argument('--output', type=str, required=True) parser.add_argument('--arch', type=str, required=True) args = parser.parse_args() input_dir, input_file = os.path.split(args.input) output_path = os.path.abspath(args.output) subprocess.check_call([ args.objcopy, '-I', 'binary', '-O', BFD_TARGET[args.arch], '-B', BFD_ARCH[args.arch], input_file, output_path, ], cwd=input_dir) if __name__ == '__main__': sys.exit(main())