#!/usr/bin/perl

# It is so hard getting the absolute path of the current script in bash
# so I converted CP back to perl. :)

use File::Basename ;
use Cwd ;
use Cwd 'abs_path';

$trick_bin = dirname(abs_path($0)) ;
$trick_home = dirname($trick_bin) ;

#### Handle arguments ####
$numArgs = $#ARGV + 1;
$makefileAddArgs = ' ';
foreach $argnum (0 .. $#ARGV) {
    $arg = $ARGV[$argnum];
    if ($arg =~ /(\w+)=(\w+)/ ) {
        $makefileAddArgs = $makefileAddArgs . $1 . "=" . $2 . " ";
    } elsif ($arg =~ /-d/ ) {
        $makefileAddArgs = $makefileAddArgs . " debug ";
    } elsif ($arg =~ /-t/ ) {
        $makefileAddArgs = $makefileAddArgs . " test ";
    } else {
        print "Warning: Ignoring unrecognized argument $arg\n"
    }
}

if ( -f "S_define" ) {
    if ( not -w "." ) {
        print getcwd() , " is not writable\n" ;
        print "CP aborted\n" ;
        exit 1 ;
    }
    unlink "build/Makefile_sim", "makefile" ;
    $makefile_text = do { local $/; <main::DATA> } ;
    $makefile_text =~ s/SUB_TRICK_HOME/$trick_home/ ;
    $makefile_text =~ s/SUB_TRICK_BIN/$trick_bin/ ;
    open MAKEFILE, ">makefile" ;
    print MAKEFILE $makefile_text ;
    close MAKEFILE ;
    system("make -f makefile " . $makefileAddArgs) ;
    exit $? >> 8;
} else {
    print "S_define does not exist" ;
    exit 1 ;
}
__END__
# CP found at SUB_TRICK_BIN

ifndef TRICK_HOME
    export TRICK_HOME := SUB_TRICK_HOME
endif

include ${TRICK_HOME}/share/trick/makefiles/Makefile.sim
-include S_overrides.mk