use ExtUtils::MakeMaker;

my $have_yapp = eval { require Parse::Yapp ;          1 };
my $have_gvpy = eval { require GraphViz::Parse::Yapp; 1 };

warn <<'NO_HAVE_END' unless $have_yapp && $have_gvpy;

Only if you plan on altering XML::Filter::Dispatcher::Parser
============================================================

NO_HAVE_END

warn <<'NO_HAVE_END' unless $have_yapp ;
You'll need to install Parse::Yapp to rebuild
XML::Filter::Dispatcher::Parser from xfdxpath.yp
To do this, install Parse::Yapp and redo "perl Makefile.PL".
This will add a rule to the Makefile to rebuild Grammar.pm
from xfdxpath.yp.

NO_HAVE_END

warn <<'NO_HAVE_END' unless $have_gvpy ;
Optionally, you may want to graph the grammar.  Install
GraphViz::Parse::Yapp and redo "perl Makefile.PL".  Then
do a "make xfdxpath.png" to build a (large!) xfdxpath.png
file, or "make xfdxpath.dot" to make a file you can play
with using dotty.

NO_HAVE_END

my %soft_prereqs;

$soft_prereqs{Devel::TraceSAX} = 0.021
    if eval "use Devel::TraceSAX; 1";

WriteMakefile(
    NAME          => 'XML::Filter::Dispatcher',
    VERSION_FROM  => 'lib/XML/Filter/Dispatcher.pm',
    EXE_FILES     => [qw( bin/xfd_dump )],

    PREREQ_PM => {
       XML::SAX::Base             => 0,
       XML::NamespaceSupport      => 0,
       XML::SAX::EventMethodMaker => 0,
       XML::SAX::ParserFactory    => 0,
       %soft_prereqs,
    },
);


sub MY::libscan {
    package MY;
    my $self = shift;
    my ( $path ) = @_;
    return '' if /\.sw[a-z]$/;
    return '' unless length $self->SUPER::libscan( $path );
    return $path;
}


# Note the literal tabes herein
sub MY::postamble { return $have_yapp ? <<'POSTAMBLE_END' : '' }
lib/XML/Filter/Dispatcher/Parser.pm : xfdxpath.yp
	yapp -m XML::Filter::Dispatcher::Parser \
		-o lib/XML/Filter/Dispatcher/Parser.pm \
		-s \
		xfdxpath.yp

xfdxpath.output: xfdxpath.yp
	yapp -v xfdxpath.yp

xfdxpath.png: xfdxpath.output
	$(PERL) -MGraphViz::Parse::Yapp \
                -e 'binmode STDOUT; print GraphViz::Parse::Yapp->new( "xfdxpath.output" )->as_png' \
                > xfdxpath.png

xfdxpath.dot: xfdxpath.output
	$(PERL) -MGraphViz::Parse::Yapp \
                -e 'binmode STDOUT; print GraphViz::Parse::Yapp->new( "xfdxpath.output" )->as_dot' \
                > xfdxpath.dot

POSTAMBLE_END