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 )