Litavis

 view release on metacpan or  search on metacpan

Makefile.PL  view on Meta::CPAN

# XSLoader::load is intercepted so the .pm's pure-Perl methods are available
# without needing the compiled .bundle (which may not match the .pm version).
eval {
    no warnings 'redefine';
    local *XSLoader::load = sub {};  # no-op the XS bootstrap
    require Colouring::In::XS;
    $colour_inc = Colouring::In::XS->include_dir();
    $colour_inc = undef unless $colour_inc && -d $colour_inc;
};
if (!$colour_inc) {
    # include_dir() arrived in 0.09; older installs still put the header
    # at .../Colouring/In/XS/include next to the .pm, so derive it - the
    # CPAN smokers holding 0.08 satisfied `configure_requires => 0` and
    # then died here for the want of one method.
    for my $dir (@INC) {
        next if ref $dir;
        my $pm = "$dir/Colouring/In/XS.pm";
        next unless -f $pm;
        (my $inc = $pm) =~ s{\.pm\z}{/include};
        if (-d $inc) { $colour_inc = $inc; last }
    }
}
if (!$colour_inc && -d '../Colouring-In-XS/include') {
    $colour_inc = '../Colouring-In-XS/include';
}
die "Cannot find Colouring::In::XS include directory. Install Colouring::In::XS first.\n"
    unless $colour_inc;

my %WriteMakefileArgs = (
    NAME             => 'Litavis',
    AUTHOR           => ['LNATION <email@lnation.org>'],
    VERSION_FROM     => 'lib/Litavis.pm',
    ABSTRACT_FROM    => 'lib/Litavis.pm',
    LICENSE          => 'artistic_2',
    MIN_PERL_VERSION => '5.010',
    macro 	     => { TARFLAGS   => "--format=ustar -c -v -f" },
    CONFIGURE_REQUIRES => {
        'ExtUtils::MakeMaker' => '0',
        # 0.11: include_dir() (0.09) plus colouring.h's PERL_IMPLICIT_SYS
        # guard for Windows perls. A floor of 0 leaves a smoker's stale
        # install in place - which is exactly what failed 0.04.
        'Colouring::In::XS'   => '0.11',
    },
    TEST_REQUIRES => {
        'Test::More' => '0.88',
    },
    PREREQ_PM => {
        'Colouring::In::XS'   => '0.11',
    },

    INC    => "-I. -Iinclude -I$colour_inc",
    OBJECT => '$(O_FILES)',

    # Install headers so downstream XS modules can #include them
    PM => {
        'lib/Litavis.pm'                 => '$(INST_LIB)/Litavis.pm',
        'include/litavis.h'              => '$(INST_LIB)/Litavis/include/litavis.h',
        'include/litavis_ast.h'          => '$(INST_LIB)/Litavis/include/litavis_ast.h',
        'include/litavis_tokeniser.h'    => '$(INST_LIB)/Litavis/include/litavis_tokeniser.h',
        'include/litavis_parser.h'       => '$(INST_LIB)/Litavis/include/litavis_parser.h',
        'include/litavis_cascade.h'      => '$(INST_LIB)/Litavis/include/litavis_cascade.h',
        'include/litavis_vars.h'         => '$(INST_LIB)/Litavis/include/litavis_vars.h',
        'include/litavis_emitter.h'      => '$(INST_LIB)/Litavis/include/litavis_emitter.h',
        'include/litavis_colour.h'       => '$(INST_LIB)/Litavis/include/litavis_colour.h',
        'include/litavis_dirent_win.h'   => '$(INST_LIB)/Litavis/include/litavis_dirent_win.h',
    },

    dist  => { COMPRESS => 'gzip -9f', SUFFIX => 'gz' },
    clean => { FILES => 'Litavis-*' },
);

# Compatibility with old versions of ExtUtils::MakeMaker
unless (eval { ExtUtils::MakeMaker->VERSION('6.64'); 1 }) {
    my $test_requires = delete $WriteMakefileArgs{TEST_REQUIRES} || {};
    @{$WriteMakefileArgs{PREREQ_PM}}{keys %$test_requires} = values %$test_requires;
}

unless (eval { ExtUtils::MakeMaker->VERSION('6.55_03'); 1 }) {
    my $build_requires = delete $WriteMakefileArgs{BUILD_REQUIRES} || {};
    @{$WriteMakefileArgs{PREREQ_PM}}{keys %$build_requires} = values %$build_requires;
}

delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
    unless eval { ExtUtils::MakeMaker->VERSION('6.52'); 1 };
delete $WriteMakefileArgs{MIN_PERL_VERSION}
    unless eval { ExtUtils::MakeMaker->VERSION('6.48'); 1 };
delete $WriteMakefileArgs{LICENSE}
    unless eval { ExtUtils::MakeMaker->VERSION('6.31'); 1 };

# Old MakeMaker doesn't support AUTHOR as arrayref
if (ref $WriteMakefileArgs{AUTHOR} eq 'ARRAY') {
    unless (eval { ExtUtils::MakeMaker->VERSION('6.5702'); 1 }) {
        $WriteMakefileArgs{AUTHOR} = join(', ', @{$WriteMakefileArgs{AUTHOR}});
    }
}

WriteMakefile(%WriteMakefileArgs);



( run in 5.280 seconds using v1.01-cache-2.11-cpan-0fb53d1c279 )