package Module::Install::PRIVATE::File::Extractor; use strict; use warnings; use Module::Install::Base; use ExtUtils::PkgConfig; use vars qw{$VERSION @ISA}; BEGIN { $VERSION = '0.01'; @ISA = qw{Module::Install::Base}; } sub extractor { my ($self) = @_; my %pkg_info = ExtUtils::PkgConfig->find('libextractor'); $self->makemaker_args( INC => '-I.' ); $self->makemaker_args( LIBS => $pkg_info{libs} ); $self->makemaker_args( CCFLAGS => $pkg_info{cflags} ); $self->makemaker_args( OPTIMIZE => '-Wall -O0 -g' ); $self->xs_files; } sub xs_files { my ($self) = @_; my @clean; my @OBJECT; my %XS; for my $xs (<*.xs>) { (my $c = $xs) =~ s/\.xs$/\.c/i; (my $o = $xs) =~ s/\.xs$/\$(OBJ_EXT)/i; $XS{$xs} = $c; push @OBJECT, $o; push @clean, $o; } for my $c (qw/perl_extractor.c/) { (my $o = $c) =~ s/\.c$/\$(OBJ_EXT)/i; push @OBJECT, $o; push @clean, $o; } $self->makemaker_args( clean => { FILES => join(q{ }, @clean) } ); $self->makemaker_args( OBJECT => join(q{ }, @OBJECT) ); $self->makemaker_args( XS => \%XS ); } package MY; use strict; use warnings; use Config; sub const_cccmd { my $self = shift; my $inherited = $self->SUPER::const_cccmd(@_); return '' unless $inherited; if ($Config{cc} eq 'cl') { warn 'you are using MSVC... my condolences.'; $inherited .= ' /Fo$@'; } else { $inherited .= ' -o $@'; } return $inherited; } 1;