The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#  -*- makefile -*-
{
    use strict;

    use vars qw(@OKS $SANITIZE $SLAYMAKE);

    my @exps = <*.log.exp>;
    @OKS = @exps;
    s((.*)\.log\.exp\z)($1.ok) foreach @OKS;

    my @flags;
    push @flags, "-d" if $ENV{DEBUG};
    push @flags, "-M'Devel::Cover=-db,../cover_db,-silent,1,-summary,0,+ignore,.*,+select,/script/'"
	if $ENV{COVER};
    my $flags = join ' ', @flags;
    $SLAYMAKE = "$^X $flags -I ../../blib/lib ../../blib/script/slaymake";
    $SANITIZE = "$^X -pe 's/(slaymake line) \\d+\.?/\\1 314159/; s/(slaymake) \\d+(\\.[\\d_]+)+/\\1 3.141.59/'";
}

test:	{ @OKS }

# Fault grading
%.ok:	%.log
	diff $DEP0.exp $DEP0 > $TARGET 2>&1

# Test execution
SlayMakefile.log: SlayMakefile
	$SLAYMAKE > $TARGET 2>&1

bad_opt_e.log:
	$SLAYMAKE -e 'use vars qw($VAR1 $var2);' -e '$VAR1=4);' VAR1=Sad -e '$var2=" birthday"' -f var.smak 2>&1 | $SANITIZE > $TARGET

opt_e.log:
	$SLAYMAKE -e 'use vars qw($VAR1 $var2 $var3);' -e '$VAR1="Happy";' VAR1=Sad -e '$var2=" birthday"' var3='' -f var.smak > $TARGET 2>&1

var.log:
	$SLAYMAKE VAR1=Sad VAR1=Happy var2=' birthday' var3=', ABC\' -f var.smak > $TARGET 2>&1

opt_%.log:
	$SLAYMAKE -$1 2>&1 | $SANITIZE | head -2 > $TARGET 

%.log:	%.smak
	$SLAYMAKE -f $DEP0 2>&1 | $SANITIZE > $TARGET