Alien-uPB-Core
view release on metacpan or search on metacpan
inc/AU/Build.pm view on Meta::CPAN
package AU::Build;
use strict;
use warnings;
use parent 'Alien::Base::ModuleBuild';
use Alien::ProtoBuf;
use ExtUtils::CBuilder;
use ExtUtils::CppGuess;
use Config;
use Cwd;
my $base = Cwd::cwd;
my $commit = '3e4cd724ea7ac538723a2044878e7af40481fa4b';
sub new {
my $class = shift;
my $protobuf_flags = Alien::ProtoBuf->cflags;
my $protobuf_cxxflags = Alien::ProtoBuf->cxxflags;
my $make_args = '';
if ($^O eq 'freebsd') {
$make_args = 'CXX=c++';
}
my $self = $class->SUPER::new(
@_,
alien_name => 'uPB::Core', # to stop Alien::Base warnings
alien_bin_requires => {
'Alien::gmake' => 0.11, # needed for %{gmake} helper
},
alien_build_commands => [
"CFLAGS='$protobuf_flags -fPIC' cmake .",
"%{gmake} $make_args",
],
alien_install_commands => [
"$^X ../../scripts/install.pl %s",
],
alien_repository => {
protocol => 'http',
exact_filename => "https://github.com/mbarbon/upb/archive/$commit.zip",
},
);
return $self;
}
sub alien_check_built_version {
my($self) = @_;
my $builder = ExtUtils::CBuilder->new(quiet => 0);
die "C++ compiler not found"
unless $builder->have_cplusplus;
my %cxx_flags = ExtUtils::CppGuess->new->module_build_options;
my ($version, $flags) = _check_flags(
$builder, \%cxx_flags,
compiler_flags => '-I. -Igenerated_for_cmake ' . Alien::ProtoBuf->cflags,
linker_flags => '-L. -lupb ' . Alien::ProtoBuf->libs,
);
die "It seems something went wrong while building uPB"
unless $version;
return $version;
}
sub alien_generate_manual_pkgconfig {
my $self = shift;
my $config = $self->SUPER::alien_generate_manual_pkgconfig(@_);
# -DNDEBUG works around https://github.com/google/upb/issues/63
$config->{keywords}{Cflags} = '-I${pcfiledir}/include -DNDEBUG';
$config->{keywords}{Libs} =
'-L${pcfiledir}/lib ' .
( run in 1.455 second using v1.01-cache-2.11-cpan-39bf76dae61 )