The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use ExtUtils::MakeMaker;
use Config;
%config = (
           'linux' => [ '-D_LINUX_ -D_ETH_ -D_IFLIST_'.$ENV{'CFLAGS'},
	              'RawIP.o util.o eth.o ifaddrlist.o',
		      '',
           q{$def .= ' -D_GLIBC_' if -e "/usr/include/net/if_packet.h"}, 
		      ],
		      
	   'solaris' => [ '-D_SOLARIS_ -D_IFLIST_',
	                  'RawIP.o util.o ifaddrlist.o',
         "Sorry,ethernet related methods are not implemented on Solaris
Sorry, the rdev function is not imlemented on Solaris\n",
	                  '',		  
			],
			
	   'freebsd' => [ '-D_BSDRAW_ -D_ETH_ -D_BPF_ -D_IFLIST_ \
                         -DHAVE_SOCKADDR_SA_LEN',
			  'RawIP.o util.o ifaddrlist.o eth.o rdev.o',
			  '',
			  '',
			],
			  
	   'netbsd' => [ '-D_BSDRAW_ -D_ETH_ -D_BPF_ -D_IFLIST_ \
	                  -DHAVE_SOCKADDR_SA_LEN',
			  'RawIP.o util.o ifaddrlist.o eth.o rdev.o',
			  '',
			  '',
			],
	                
	   'bsdos' => [ '-D_BSDRAW_ -D_ETH_ -D_BPF_ -D_IFLIST_ \
	                  -DHAVE_SOCKADDR_SA_LEN',
			  'RawIP.o util.o ifaddrlist.o eth.o rdev.o',
			  '',
			  '',
			],

	   'openbsd' => ['-D_ETH_ -D_BPF_ -D_IFLIST_ -DHAVE_SOCKADDR_SA_LEN',
                         'RawIP.o util.o ifaddrlist.o eth.o rdev.o',
			  '',
q|$def .= ' -D_BSDRAW_' if join('',(split /\./,$Config{osvers})[0,1]) < 21|, 
			],
	  
	   'others'   => ['',
	                  'RawIP.o util.o',
     "Sorry,ethernet related methods are not implemented on this system 
Sorry, the ifaddrlist function is not imlemented on this system
Sorry, the rdev function is not imlemented on this system\n",
                          '',
			 ]
         );			 

$name = 'others' unless exists $config{$name = $Config{osname}}; 
$def = $config{$name}->[0];
$obj = $config{$name}->[1];
print $config{$name}->[2];
eval $config{$name}->[3];

WriteMakefile(
    'NAME'	=> 'Net::RawIP',
    'VERSION_FROM' => 'RawIP.pm', 
    'LIBS'	=> ['-lpcap'],   
    'DEFINE'	=> $def,      
    'INC'	=> '',      
    'OBJECT' => $obj
);