The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.


my %required = (
		URI => 1.03,
		XML::Parser => 2.30, 
	       );
my %optional = (
		DBI => 1.14,
		DB_File => 1.72,
	       );
my %msg = (
	   URI => 'module for URI handling',
	   XML::Parser => 'Expat XML parser needed for RDF::Core::Parser',
	   DBI => 'module for a database connectivity (optional)',
	   DB_File => 'needed for Berkeley DB data storage',
	  );

my @missing_req = ();
my @missing_opt = ();
$| = 1;

sub get_dots {
    return '.' x (30 - length shift);
}

sub check_deps {
    my ($list, $result) = @_;
    foreach (keys %$list) {
	my $m = "$_ ($list->{$_})";
	print "Checking for $m", get_dots($m);
	my $try = "require $_;";
	eval $try;
	if ($@) {
	    print "missing!\n";
	    push @$result, $_;
	} else {
	    my $version = '$' . "$_" . '::VERSION >= ' . $list->{$_};
	    if( eval $version ) {
		print "ok\n";
	    } else {
		print "old version!\n"; 
		push @result, $_;
	    }
	}
    }
}

sub report_deps {
    if ($missing_req[0]) {
#	print "\nSorry, RDF::Core can't be instaled. ";
	print "The following modules are required:\n\n";
	foreach (@missing_req) {
	    print "$_, version $required{$_} or later: $msg{$_}\n";
	}
	#exit 1;
    }
    
    if ($missing_opt[0]) {
	print "\nRDF::Core can be instaled but its functionality will be limited\n";
	print "as the following modules are required to support some features:\n\n";
	foreach (@missing_opt) {
	    print "$_, version $optional{$_} or later: $msg{$_}\n";
	}
	print "\nIf you want use the above described features,\n";
	print "install or update the missing modules.\n\n"
    }
}

check_deps(\%required, \@missing_req);
check_deps(\%optional, \@missing_opt);
report_deps;

WriteMakefile(
	      'PMLIBDIRS'    => [ 'lib' ],
	      'NAME'	     => 'RDF::Core',
	      'VERSION_FROM' => 'lib/RDF/Core.pm', # finds $VERSION
	      'PREREQ_PM'    => {%required, %optional}, 
	      'dist' => {
			 'COMPRESS' => 'gzip',
			 'SUFFIX'   => 'gz',
			}
);