#!/usr/bin/env python

import os
import sys
import argparse
import subprocess
from shutil import copy

def exec_command(cmd, log_path='out/build.log', **kwargs):
    process = subprocess.Popen(cmd)
    process.wait()
    ret_code = process.returncode

    if ret_code != 0:
        raise Exception("{} failed, return code is {}".format(cmd, ret_code))

def musl_copy_file(src, dest):
    dest_dir = os.path.dirname(dest)
    if not os.path.exists(dest_dir):
        os.makedirs(dest_dir)
    copy(src, dest)

def main():
    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument('--input',
                        required = True,
                        help = 'The header source path',
                        metavar = 'FILE')

    parser.add_argument('--output',
                        required = True,
                        help = 'The output directory',
                        metavar = 'FILE')

    parser.add_argument('--ldpath',
                        required = True,
                        help = 'The ld file path',
                        metavar = 'FILE')

    parser.add_argument('--crtplus',
                        required = True,
                        help = 'The crtplus file path',
                        metavar = 'FILE')                        

    args = parser.parse_args()

    if os.path.basename(args.input) == 'crtn.o':
        ldargs = [args.ldpath, "-r", args.input, args.crtplus, "-o", args.output]
        exec_command(ldargs)
    else:
        musl_copy_file(args.input, args.output)

if __name__ == "__main__":
    sys.exit(main())