Bio-DB-Big

 view release on metacpan or  search on metacpan

Build.PL  view on Meta::CPAN

#!/usr/bin/env perl

# Copyright [2015-2017] EMBL-European Bioinformatics Institute
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

use strict;
use warnings;

use Module::Build;

my $class = Module::Build->subclass( class => 'Module::Build::Big' );

my $build = $class->new(

    module_name       => 'Bio::DB::Big',
    dist_version_from => 'lib/Bio/DB/Big.pm',
    dist_author       => 'Andy Yates',
    dist_abstract =>
      'Perl interface to bigWigLib for accessing the kent big formats',
    license => 'open_source',

    extra_compiler_flags => [
        '-D_IOLIB=2', '-D_FILE_OFFSET_BITS=64',

        # warnings not treated as errors
        '-Wno-error',

        # Don't care about unused results from function calls
        '-Wno-unused-result',
    ],

    build_requires     => { 'ExtUtils::CBuilder' => 0, },
    configure_requires => { 'Module::Build'      => 0.42, 'Module::Build::Pluggable' => 0, 'Module::Build::Pluggable::CPANfile' => 0, },
    test_requires      => { 'Test::Fake::HTTPD', => 0, 'Test::Differences' => 0, 'Test::Exception' => 0, 'Test::Output' => 0, },
    requires           => { 'perl'               => '5.008' },
    meta_merge         => {
        'resources' => {
            'repository' => 'https://github.com/Ensembl/Bio-DB-Big',
        },
    },
);

$build->find_libbigwig;
$build->set_include_and_compiler_flags;
$build->create_build_script;

exit 0;

package Module::Build::Big;

use Module::Load::Conditional qw(can_load);
use base 'Module::Build';

sub find_libbigwig {
    my ($self) = @_;

    # If either of these are set, we expect to find the libBigWig files there:
    # (They're explicitly set by the user, so we shouldn't fall back to
    # finding another copy somewhere else.)
    if ( my $dir = $self->args('libbigwig') ) {
        return 1 if $self->find_libbigwig_in_build_dir($dir);
        return 1 if $self->find_libbigwig_in_install_dir($dir);
        $self->die_libbigwig_not_found(
"--libbigwig '$dir' command line parameter does not contain expected files\n"
        );
    }
    elsif ( $dir = $ENV{'LIBBIGWIG_DIR'} ) {
        return 1 if $self->find_libbigwig_in_build_dir($dir);
        return 1 if $self->find_libbigwig_in_install_dir($dir);
        $self->die_libbigwig_not_found(
"LIGBIGWIG_DIR=$ENV{LIBBIGWIG_DIR} environment variable does not contain expected files\n"
        );
    }

    # Search through remaining possible (but not fatal) locations:
    my $found = 0;
    foreach my $dir (
        $self->prefix, from_Alien(),
        scalar `pkg-config --variable=libdir libBigWig 2>/dev/null`,
        qw{ /usr /usr/local /usr/share /opt/local },
      )
    {
        if ( $dir and $self->find_libbigwig_in_install_dir($dir) ) {
            $found = 1;
            last;
        }
    }
    return 1 if $found;

    $self->die_libbigwig_not_found();
}

sub set_include_and_compiler_flags {
    my ($self) = @_;



( run in 1.579 second using v1.01-cache-2.11-cpan-39bf76dae61 )