/usr/local/CPAN/Net-CDP/Makefile.PL


use 5.00503;
use ExtUtils::MakeMaker;

package MY;

sub postamble {
	return <<'EOF';
$(MYEXTLIB) :: libcdp/Makefile
$(MYEXTLIB) ::
	cd libcdp && $(MAKE)

libcdp/Makefile: libcdp/Makefile.in
	cd libcdp && ./configure

EOF
}

sub clean_subdirs {
	return <<'EOF';
clean_subdirs: 
	cd libcdp && test -f Makefile && $(MAKE) clean

EOF
}

sub realclean_subdirs {
	return <<'EOF';
realclean_subdirs: 
	cd libcdp && test -f Makefile && $(MAKE) distclean

EOF
}

package main;

# Extract the configure arguments before MakeMaker sees it
my @configure_args;
my @argv;
BEGIN {
	while (my $line = shift @ARGV) {
		if ($line =~ /^configure_args=(.*)/i) {
			push @configure_args, $1;
		} else {
			push @argv, $line;
		}
	}
	@ARGV = @argv;
}

chdir 'libcdp' or die "Could not change to libcdp directory\n";
system("./configure @configure_args") and die "libcdp configure failed\n";
chdir '..' or die "Could not change back to original directory\n";

use vars qw(%config);
do 'libcdp/config.pl';

WriteMakefile(
	NAME         => 'Net::CDP',
	VERSION_FROM => 'libcdp/config.pl',
	PREREQ_PM    => { 'Carp::Clan' => 0, 'Test::More' => 0, },
	($] >= 5.005 ? (
		ABSTRACT_FROM  => 'lib/Net/CDP.pm',
		AUTHOR         => 'Michael Chapman <cpan@very.puzzling.org>'
	) : ()),
	INC          => "@config{qw(LIBPCAP_CPPFLAGS LIBNET_CPPFLAGS)}",
	LIBS         => [ "@config{qw(LIBPCAP_LDFLAGS LIBPCAP_LIBS LIBNET_LDFLAGS LIBNET_LIBS)}" ],
	MYEXTLIB     => 'libcdp/src/.libs/libcdp.a libcdp/lib/.libs/libmisc.a',
);

if (eval { require ExtUtils::Constant; 1 }) {
	my @names = qw(
		CDP_PROMISCUOUS CDP_DISABLE_RECV CDP_DISABLE_SEND
		CDP_RECV_NONBLOCK CDP_RECV_DECODE_ERRORS
		CDP_ADDR_PROTO_CLNP CDP_ADDR_PROTO_IPV4 CDP_ADDR_PROTO_IPV6
		CDP_ADDR_PROTO_DECNET CDP_ADDR_PROTO_APPLETALK CDP_ADDR_PROTO_IPX
		CDP_ADDR_PROTO_VINES CDP_ADDR_PROTO_XNS CDP_ADDR_PROTO_APOLLO
		CDP_CAP_ROUTER CDP_CAP_TRANSPARENT_BRIDGE CDP_CAP_SOURCE_BRIDGE
		CDP_CAP_SWITCH CDP_CAP_HOST CDP_CAP_IGMP CDP_CAP_REPEATER
	);
	ExtUtils::Constant::WriteConstants(
		NAME         => 'Net::CDP::Constants',
		NAMES        => \@names,
		DEFAULT_TYPE => 'UV',
		C_FILE       => 'const-c.inc',
		XS_FILE      => 'const-xs.inc',
	);
} else {
	use File::Copy;
	use File::Spec;
	foreach my $file ('const-c.inc', 'const-xs.inc') {
		my $fallback = File::Spec->catfile('fallback', $file);
		copy($fallback, $file) or die "Can't copy $fallback to $file: $!";
	}
}