Litavis

 view release on metacpan or  search on metacpan

Makefile.PL  view on Meta::CPAN

use 5.010;
use strict;
use warnings;
use ExtUtils::MakeMaker;

# Resolve Colouring::In::XS include directory (for colour headers)
my $colour_inc;
# Load Colouring::In::XS without triggering XSLoader, then call include_dir().
# 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 && -d '../Colouring-In-XS/include') {
    $colour_inc = '../Colouring-In-XS/include';
}
if (!$colour_inc && -d '../Colouring-In-XS-0.07/include') {
    $colour_inc = '../Colouring-In-XS-0.07/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',

    CONFIGURE_REQUIRES => {
        'ExtUtils::MakeMaker' => '0',
        'Colouring::In::XS'   => '0',
    },
    TEST_REQUIRES => {
        'Test::More' => '0.88',
    },
    PREREQ_PM => {},

    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',
    },

    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 2.570 seconds using v1.01-cache-2.11-cpan-df04353d9ac )