1570af302Sopenharmony_ci#!/usr/bin/env python 2570af302Sopenharmony_ci 3570af302Sopenharmony_ciimport os 4570af302Sopenharmony_ciimport sys 5570af302Sopenharmony_ciimport argparse 6570af302Sopenharmony_ciimport subprocess 7570af302Sopenharmony_cifrom shutil import copy 8570af302Sopenharmony_ci 9570af302Sopenharmony_cidef exec_command(cmd, log_path='out/build.log', **kwargs): 10570af302Sopenharmony_ci process = subprocess.Popen(cmd) 11570af302Sopenharmony_ci process.wait() 12570af302Sopenharmony_ci ret_code = process.returncode 13570af302Sopenharmony_ci 14570af302Sopenharmony_ci if ret_code != 0: 15570af302Sopenharmony_ci raise Exception("{} failed, return code is {}".format(cmd, ret_code)) 16570af302Sopenharmony_ci 17570af302Sopenharmony_cidef musl_copy_file(src, dest): 18570af302Sopenharmony_ci dest_dir = os.path.dirname(dest) 19570af302Sopenharmony_ci if not os.path.exists(dest_dir): 20570af302Sopenharmony_ci os.makedirs(dest_dir) 21570af302Sopenharmony_ci copy(src, dest) 22570af302Sopenharmony_ci 23570af302Sopenharmony_cidef main(): 24570af302Sopenharmony_ci parser = argparse.ArgumentParser(description=__doc__) 25570af302Sopenharmony_ci 26570af302Sopenharmony_ci parser.add_argument('--input', 27570af302Sopenharmony_ci required = True, 28570af302Sopenharmony_ci help = 'The header source path', 29570af302Sopenharmony_ci metavar = 'FILE') 30570af302Sopenharmony_ci 31570af302Sopenharmony_ci parser.add_argument('--output', 32570af302Sopenharmony_ci required = True, 33570af302Sopenharmony_ci help = 'The output directory', 34570af302Sopenharmony_ci metavar = 'FILE') 35570af302Sopenharmony_ci 36570af302Sopenharmony_ci parser.add_argument('--ldpath', 37570af302Sopenharmony_ci required = True, 38570af302Sopenharmony_ci help = 'The ld file path', 39570af302Sopenharmony_ci metavar = 'FILE') 40570af302Sopenharmony_ci 41570af302Sopenharmony_ci parser.add_argument('--crtplus', 42570af302Sopenharmony_ci required = True, 43570af302Sopenharmony_ci help = 'The crtplus file path', 44570af302Sopenharmony_ci metavar = 'FILE') 45570af302Sopenharmony_ci 46570af302Sopenharmony_ci args = parser.parse_args() 47570af302Sopenharmony_ci 48570af302Sopenharmony_ci if os.path.basename(args.input) == 'crtn.o': 49570af302Sopenharmony_ci ldargs = [args.ldpath, "-r", args.input, args.crtplus, "-o", args.output] 50570af302Sopenharmony_ci exec_command(ldargs) 51570af302Sopenharmony_ci else: 52570af302Sopenharmony_ci musl_copy_file(args.input, args.output) 53570af302Sopenharmony_ci 54570af302Sopenharmony_ciif __name__ == "__main__": 55570af302Sopenharmony_ci sys.exit(main()) 56