package Conf::Libconfig::ParseSource; use strict; use warnings; use vars qw{@ISA}; use Cwd; @ISA = qw( ExtUtils::XSBuilder::ParseSource ); use base qw/ExtUtils::XSBuilder::ParseSource/; my $cwd = cwd; $cwd =~ m{^(.+/Conf-Libconfig).*$} or die "Can't find base directory"; my $basedir = $1; my $srcdir = "$basedir/src"; my @dirs = ("$basedir/src"); my $basepackage = __PACKAGE__; if ($basepackage =~ /(.*)::[^:]+/) { $basepackage = $1; } sub find_includes { my $self = shift; return $self->{includes} if $self->{includes}; require File::Find; my(@dirs) = @{$self->include_dirs}; unless (-d $dirs[0]) { die "could not find include directory"; } my @includes; my $unwanted = join '|', @{$self -> unwanted_includes} ; for my $dir (@dirs) { File::Find::finddepth({ wanted => sub { return unless /\.h$/; return if ($unwanted && (/^($unwanted)/o)); my $dir = $File::Find::dir; push @includes, "$dir/$_"; }, follow => $^O ne 'MSWin32', }, $dir); } return $self->{includes} = $self -> sort_includes (\@includes) ; } sub include_dirs { \@dirs } sub package { $basepackage } 1;