Alien-Base
view release on metacpan or search on metacpan
lib/Alien/Base.pm view on Meta::CPAN
share {
...
plugin 'Extract' => 'tar.gz';
plugin 'Build::MSYS' => ();
build [
'sh configure --prefix=%{alien.install.prefix}',
'%{gmake}',
'%{gmake} install',
];
};
...
=cut
sub alien_helper {
{};
}
=head2 inline_auto_include
my(@headers) = Alien::MyLibrary->inline_auto_include;
List of header files to automatically include in inline C and C++
code when using L<Inline::C> or L<Inline::CPP>. This is provided
as a public interface primarily so that it can be overidden at run
time. This can also be specified in your C<Build.PL> with
L<Alien::Base::ModuleBuild> using the C<alien_inline_auto_include>
property.
=cut
sub inline_auto_include {
my ($class) = @_;
return [] unless $class->config('inline_auto_include');
$class->config('inline_auto_include')
}
sub Inline {
my ($class, $language) = @_;
return if $language !~ /^(C|CPP)$/;
my $config = {
CCFLAGSEX => $class->cflags,
LIBS => $class->libs,
};
if (@{ $class->inline_auto_include } > 0) {
$config->{AUTO_INCLUDE} = join "\n", map { "#include \"$_\"" } @{ $class->inline_auto_include };
}
$config;
}
=head2 runtime_prop
my $hashref = Alien::MyLibrary->runtime_prop;
Returns a hash reference of the runtime properties computed by L<Alien::Build> during its
install process. If the L<Alien::Base> based L<Alien> was not built using L<Alien::Build>,
then this will return undef.
=cut
{
my %alien_build_config_cache;
sub runtime_prop
{
my($class) = @_;
return $alien_build_config_cache{$class} if
exists $alien_build_config_cache{$class};
$alien_build_config_cache{$class} ||= do {
my $dist = ref $class ? ref $class : $class;
$dist =~ s/::/-/g;
my $dist_dir = eval { File::ShareDir::dist_dir($dist) };
return if $@;
my $alien_json = File::Spec->catfile($dist_dir, '_alien', 'alien.json');
return unless -r $alien_json;
open my $fh, '<', $alien_json;
my $json = do { local $/; <$fh> };
close $fh;
require JSON::PP;
my $config = JSON::PP::decode_json($json);
$config->{distdir} = $dist_dir;
$config;
};
}
}
1;
__END__
__POD__
=head1 SUPPORT AND CONTRIBUTING
First check the L<Alien::Base::FAQ> for questions that have already been answered.
IRC: #native on irc.perl.org
L<(click for instant chatroom login)|http://chat.mibbit.com/#native@irc.perl.org>
If you find a bug, please report it on the projects issue tracker on GitHub:
=over 4
=item L<https://github.com/Perl5-Alien/Alien-Base/issues>
=back
Development is discussed on the projects google groups. This is also
a reasonable place to post a question if you don't want to open an issue
in GitHub.
=over 4
=item L<https://groups.google.com/forum/#!forum/perl5-alien>
( run in 0.692 second using v1.01-cache-2.11-cpan-6b5c3043376 )