RPerl

 view release on metacpan or  search on metacpan

Makefile.PL  view on Meta::CPAN

    elsif ($version_retval =~ m/Free\ Software\ Foundation/xms) {
        $cxx_real = 'g++';
    }
    else {
        print {*STDERR} 'C++ compiler ', $cxx, ' does not seem to provide the known g++ or clang++ compilers, bailing out!', "\n";
        exit 0;
    }
}
#print {*STDERR} '<<< DEBUG >>>: have $cxx_real = ', $cxx_real, "\n";

# must meet minimum compiler version requirements
$version_retval =~ m/(\d+\.\d+)/xms;
my $version = $1 + 0;
#print {*STDERR} '<<< DEBUG >>>: have $version = ', $version, "\n";
if ($version < $min_cxx_versions->{$cxx_real}) {
    print {*STDERR} 'C++ compiler ', $cxx_real, ' version ', $version, ' found, does not meet minimum version requirement ', $min_cxx_versions->{$cxx_real} , ', bailing out!', "\n";
    exit 0;
}

# fix read-only blib/lib in MS Windows
if ( $OSNAME eq 'MSWin32' ) {
    push( @ExtUtils::MakeMaker::Overridable, qw(pm_to_blib) );
}

WriteMakefile(
    NAME             => 'RPerl',
    ABSTRACT         => 'Restricted Perl, The Optimizing Perl 5 Compiler',
    AUTHOR           => 'Will Braswell <wbraswell@cpan.org>',
    VERSION_FROM     => 'lib/RPerl.pm',
    LICENSE          => 'perl_5',
    EXE_FILES        => ['script/rperl'],
    MIN_PERL_VERSION => '5.12.0',  # NEED ANSWER, CORRELATION #rp000: is RPerl truly incompatible with Perl v5.10 and earlier?
#    MAKE             => 'gmake',   # CORRELATION #rp200, Windows + EU::MM + GNU makef
    CONFIGURE_REQUIRES => {
        # DEV NOTE, CORRELATION #rp061: prioritize installation of all dists which are (or may be) dependencies of other dists or components, CONFIGURE_REQUIRES prioritizes installation, PREREQ_PM creates runtime dependency
        'IO::Socket::SSL'          => '2.043',     # (infamously problematic) subdependency for Alien::*
        'Alien::Base::ModuleBuild' => '1.02',      # dependency of Alien::GSL etc, v1.02 allows setting download protocol via env var as workaround for Alien::GSL
        'Alien::GMP'               => '1.08',      # dependency of Math::BigInt::GMP, v1.08 uses http intead of ftp, no env var workaround required
        'Alien::GSL'               => '1.01',      # dependency of Math::GSL, set env var ALIEN_GSL_REPO_FTP_PROTOCOL=http in .travis.yml as workaround fix to avoid Travis network failures
    },
    PREREQ_PM        => {
        # DEV NOTE, CORRELATION #rp061: prioritize installation of all dists which are (or may be) dependencies of other dists or components, CONFIGURE_REQUIRES prioritizes installation, PREREQ_PM creates runtime dependency
        'IO::Socket::SSL'          => '2.043',     # (infamously problematic) subdependency of Alien::*
        'Alien::Base::ModuleBuild' => '1.02',      # dependency of Alien::GSL etc, v1.02 allows setting download protocol via env var as workaround for Alien::GSL
        'Alien::GMP'               => '1.08',      # dependency of Math::BigInt::GMP, v1.08 uses http intead of ftp, no env var workaround required
        'Alien::GSL'               => '1.01',      # dependency of Math::GSL, set env var ALIEN_GSL_REPO_FTP_PROTOCOL=http in .travis.yml as workaround fix to avoid Travis network failures

        # RPERL USER DEPENDENCIES
        'ExtUtils::MakeMaker' => '7.04',      # for compatibility with Inline::C >= v0.75
        'PPI'                 => '1.242',     # avoid endless loop from exponents of 2+ zeroes; https://github.com/adamkennedy/PPI/pull/230
        'Test::Exception'     => '0.43',      # 0.43 needed because Appveyor testing required it
        'Test::CPAN::Changes' => '0.400002',
        'Test::Number::Delta' => '1.06',      # for compatibility with Perls compiled using -Duselongdouble
        'Test2::Suite'        => '0.000069',  # older versions are broken
        'Perl::Critic'        => '1.121',
        'Perl::Tidy'          => '20191203',  # RT#130394: Allow short nested blocks; had to reformat 19 test files to pass tests again
        'Inline'              => '0.80',
        'Inline::C'           => '0.76',      # wbraswell added CPPFLAGS
        'Inline::CPP'         => '0.74',      # davido & mohawk fixed ntype warnings; davido & wbraswell fixed namespace hack; nanis fixed Win32 filename space bug
        'Inline::Filters'     => '0.19',      # wbraswell, rurban, & bulk88 added preprocess inc array; wbraswell added CPPFLAGS; bulk88 fix space in path
        'PadWalker'           => '2.1',
        'Module::Refresh'     => '0.17',
        'Filter::Simple'      => '0.91',
        'Module::ScanDeps'    => '1.19',
        'Time::HiRes'         => '1.9726',
        'List::MoreUtils'     => '0.33',
        'Math::BigInt::GMP'   => '1.46',
        'Math::GSL'           => '0.39',
        'Alien::astyle'       => '0.009',
        'Alien::PCRE2'        => '0.015',     # for regex support
        'Alien::JPCRE2'       => '0.012',     # for regex support
#        'Alien::Pluto'        => '0.003',
        'MongoDB'             => "v1.8.0",    # NEED FIX: EU::MM does not seem to handle v-strings properly???
        'IPC::Run3'           => '0.048',      # for subcompile, testing, etc

        # RPERL SYSTEM (NON-USER) DEPENDENCIES
        'Parse::Eyapp'        => '1.21',      # RPerl Grammar; used by grammar_recompile.sh
        'File::Which'         => '1.21',      # RPerl Grammar; used by grammar_increment.pl
        'CPAN::Meta'          => '2.150005',  # CPAN Distribution Build; used for generating CPAN metadata from this file
        'App::Pod2CpanHtml'   => '0.04',      # Learning RPerl; used by pod2rperlhtml.pl, provides pod2cpanhtml
        'Date::Format'        => '2.24',      # Learning RPerl; used by pod2rperlhtml.pl
        'Pod::PseudoPod'      => '0.18',      # Learning RPerl; provides ppodchecker, ppod2txt, ppod2html, ppod2docbook
        'Text::ASCIITable'    => '0.20',      # Learning RPerl; used by pod2text & ppod2txt
    },
    META_MERGE => {
        'meta-spec' => {
            version => '2',
            url     => 'https://metacpan.org/pod/CPAN::Meta::Spec'
        },

        # NEED FIX: no_index is a temporary solution to the CPAN indexing and data type package naming issue
        # mst says we need to set data type package names without using 'package FOO;' like how Lexical::Types works
        no_index => {

            # indexing of the following packages is double-disabled, both here and also newlines-in-package-declarations
            package => [ 
                # DEV NOTE: the following package namespaces are already controlled by some other PAUSE owner on CPAN,
                'array', 'boolean', 'hash', 'integer', 'method', 'number', 'object', 'ref', 'string', 'unknown', 
                # DEV NOTE, CORRELATION #rp045: identifiers containing underscores may be reserved by C++
                # the following packages must exist outside of the RPerl::Test namespace for testing purposes
                'MyClass_Good', '_MyClass_Bad'
            ],

            # DEV NOTE: disable indexing of all test package namespaces
            namespace => ['RPerl::Test'],
        },
        release_status => 'stable',
        keywords       => [qw(rperl perl5 optimizing compiler optimize compile)],
        description    => 'RPerl is the optimizing compiler for the Perl 5 programming language.  '
            . 'RPerl compiles slow low-magic Perl 5 code into fast binary code, which can optionally be mixed back into high-magic Perl apps.',
        resources => {
            license    => ['http://dev.perl.org/licenses/'],
            homepage   => 'http://www.rperl.org',
            bugtracker => { web => 'http://rt.cpan.org/Public/Dist/Display.html?Name=RPerl' },
            repository => {
                type => 'git',
                url  => 'git://github.com/wbraswell/rperl.git',
                web  => 'https://github.com/wbraswell/rperl',
            },
            x_IRC         => "irc://irc.perl.org/#perl11",
#            x_mailinglist => "http://lists.rperl.org/listinfo/dev",



( run in 0.735 second using v1.01-cache-2.11-cpan-fe3c2283af0 )