/usr/local/CPAN/Geo-Vector/Makefile.PL


use 5.008;

my($inc,$libs,$cflags) = ('','','');

my %missing_modules;

$missing_modules{chk_module('POSIX')} = 1;
$missing_modules{chk_module('Carp')} = 1;
$missing_modules{chk_module('File::Basename')} = 1;
$missing_modules{chk_module('Geo::GDAL')} = 1;
$missing_modules{chk_module('ExtUtils::MakeMaker')} = 1;
$missing_modules{chk_module('ExtUtils::Depends')} = 1;
$missing_modules{chk_module('Geo::Raster')} = 1;
$missing_modules{chk_module('Geo::Distance')} = 1;
$missing_modules{chk_module('Graph')} = 1;
delete $missing_modules{''};

my @missing_modules = keys %missing_modules;
warn "Following required modules are missing: @missing_modules\n" if @missing_modules;

use ExtUtils::MakeMaker;
use ExtUtils::Depends; 
use ExtUtils::PkgConfig;

my($inc,$libs,$cflags) = ('','','');

for $package ('gdal','gdk-pixbuf-2.0','libral') {
    print "Checking for $package: ";
    my($c,$l);
    if ($package eq 'gdal' and $^O ne 'MSWin32') {
	$c = `gdal-config --cflags`;
	chomp $c;
	$l = `gdal-config --libs`;
	chomp $l;
    } else {
	%pkg_info = ExtUtils::PkgConfig->find ($package);
	$c = $pkg_info{cflags};
	$l = $pkg_info{libs};
    }
    $cflags .= " $c";
    # this code is for MinGW in fact
    if ($^O eq "MSWin32") {
	my @a = split /\s+/,$l;
	for (@a) {
	    if (/^-l/ and !(/.dll/)) {
		$_ .= '.dll.a';
	    }
	}
	$l = join(' ',@a);
    }
    $libs .= " $l";
    print "ok\n";
}

$package = new ExtUtils::Depends('Geo::Vector');

$package->set_inc($inc);
$package->set_libs($libs);

$package->add_typemaps("typemap");

$package->save_config("Files.pm");

our %pm_files = (
	'lib/Geo/Vector.pm'          => '$(INST_LIBDIR)/Vector.pm',
);

$package->add_pm (%pm_files);

#       

WriteMakefile(
	      NAME              => 'Geo::Vector',
	      VERSION_FROM      => 'lib/Geo/Vector.pm',
	      $package->get_makefile_vars(),
	      ( $] >= 5.005 ?
		(ABSTRACT_FROM  => 'lib/Geo/Vector.pm',
		 AUTHOR         => 'Ari Jolma <ajolma at tkk.fi>') : () ),
	      CCFLAGS => "-O2 -fno-builtin $cflags $inc",
	      );
if  (eval {require ExtUtils::Constant; 1}) {
  # If you edit these definitions to change the constants used by this module,
  # you will need to use the generated const-c.inc and const-xs.inc
  # files to replace their "fallback" counterparts before distributing your
  # changes.
  my @names = (qw(CONCAVE CONVEX));
  ExtUtils::Constant::WriteConstants(
                                     NAME         => 'Geo::Vector',
                                     NAMES        => \@names,
                                     DEFAULT_TYPE => 'IV',
                                     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: $!";
  }
}

sub chk_module {
    my $pkg = shift;
    print "Checking for $pkg:";
    eval { 
	my $p; 
	($p = $pkg . ".pm") =~ s#::#/#g; 
	require $p; 
    };
    if ($@) {
	print " failed\n";
	return $pkg;
    } else {
	print " ok\n";
	return '';
    }
}