1#!/usr/bin/env python 2# SPDX-License-Identifier: BSD-2-Clause 3# Copyright (c) 2018, Linaro Limited 4 5import argparse 6import shutil 7import os 8import re 9 10def get_args(): 11 parser = argparse.ArgumentParser() 12 parser.add_argument('--br', required=True, 13 help='Path to buildroot tree') 14 parser.add_argument('--out', required=True, 15 help='Path to buildroot out directory') 16 parser.add_argument('--top-dir', required=True, 17 help='Replaces %TOP_DIR% in defconfig files') 18 parser.add_argument('--br-ext-optee', required=True, 19 help='Path the OP-TEE external buildroot tree') 20 parser.add_argument('--br-defconfig', required=True, action='append', 21 help='Buildroot defconfig file') 22 parser.add_argument('--make-cmd', required=True, 23 help='Make command') 24 return parser.parse_args() 25 26def concatenate_files(top_dir, dst, srcs): 27 with open(dst, 'w') as outfile: 28 for fname in srcs: 29 with open(fname) as infile: 30 for line in infile: 31 outfile.write(line.replace('%TOP_DIR%', top_dir)) 32 33def main(): 34 args = get_args() 35 36 if not os.path.isdir(args.out): 37 os.makedirs(args.out) 38 39 concatenate_files(args.top_dir, args.out + '/defconfig', args.br_defconfig) 40 41 if os.path.isabs(args.out): 42 out = args.out 43 else: 44 out = '../' + args.out 45 46 if os.path.isabs(args.br_ext_optee): 47 br_ext_optee = args.br_ext_optee 48 else: 49 br_ext_optee = '../' + args.br_ext_optee 50 51 os.execlp(args.make_cmd, args.make_cmd, '-C', args.br, 'O=' + out, 52 'BR2_EXTERNAL=' + br_ext_optee, 53 'BR2_DEFCONFIG=' + out + '/defconfig', 'defconfig') 54 55if __name__ == "__main__": 56 main() 57