The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*- perl -*-

use 5.008;
use strict;
use warnings;
use ExtUtils::MakeMaker;

my $conflictMsg = <<EOCM;
***
    This version of SQL::Statement conflicts with
    the version of module %s (%s) you have installed.

    It's strongly recommended that you update it after
    installing this version of SQL::Statement.
***
EOCM

my $selfConflictMsg = <<EOSCM;
***
    This version of SQL::Statement conflicts with
    the version of %s (%s) you have installed.

    It's strongly recommended that you carefully read
    the Changes file and test your application with
    this version before finally upgrading.

    See local::lib how to do it easily.
***
EOSCM

my %RUN_DEPS = (
    'Carp'            => 0,
    'Clone'           => '0.30',
    'Data::Dumper'    => 0,
    'Module::Runtime' => 0,
    'Params::Util'    => '1.00',
    'Scalar::Util'    => '1.0',
    'Text::Balanced'  => 0,
);
my %CONFIGURE_DEPS = (
    'ExtUtils::MakeMaker' => 0,
);
my %BUILD_DEPS = ();

my %TEST_DEPS = (
    'Math::Complex'       => '1.56',
    'Math::Base::Convert' => 0,
    'Test::Deep'          => 0,
    'Test::More'          => '0.90',
    'Text::Soundex'       => '3.04',
);
my %CONFLICTS = (
    'SQL::Statement' => '1.20',
    'DBI'            => '1.611',
    'DBD::AnyData'   => '0.09',
    'DBD::CSV'       => '0.29',
);

WriteMakefile1(
    MIN_PERL_VERSION => '5.008',
    META_MERGE       => {
        'meta-spec' => { version => 2 },
        resources   => {
            homepage      => 'https://metacpan.org/release/SQL-Statement',
            x_IRC         => "irc://irc.perl.org/#dbi",
            x_MailingList => "mailto:dbi-dev\@perl.org'",
            repository    => {
                url  => 'https://github.com:perl5-utils/SQL-Statement.git',
                web  => 'https://github.com/perl5-utils/SQL-Statement',
                type => 'git',
            },
            bugtracker => {
                web    => 'http://rt.cpan.org/Public/Dist/Display.html?Name=SQL-Statement',
                mailto => 'sql-statement@rt.cpan.org',
            },
            license => 'http://dev.perl.org/licenses/',
        },
        prereqs => {
            develop => {
                requires => {
                    'Test::CPAN::Changes'                 => 0,
                    'Test::CheckManifest'                 => 0,
                    'Module::CPANTS::Analyse'             => '0.96',
                    'Test::Kwalitee'                      => 0,
                    'Test::Pod'                           => 0,
                    'Test::Pod::Coverage'                 => 0,
                    'Test::Pod::Spelling::CommonMistakes' => 0,
                    'Test::Spelling'                      => 0,
                },
            },
            configure => {
                requires => {%CONFIGURE_DEPS},
            },
            build => {
                requires => {%BUILD_DEPS},
            },
            test => {
                requires  => {%TEST_DEPS},
                conflicts => {%CONFLICTS},
            },
            runtime => {
                recommends => {
                    'Math::Complex'       => '1.56',
                    'Text::Soundex'       => '3.04',
                    'Math::Base::Convert' => 0,
                },
                requires  => {%RUN_DEPS},
                conflicts => {%CONFLICTS},
            },
        },
    },
    NAME          => 'SQL::Statement',
    VERSION_FROM  => 'lib/SQL/Statement.pm',
    ABSTRACT_FROM => 'lib/SQL/Statement.pm',
    dist          => {
        'SUFFIX'       => ".gz",
        'DIST_DEFAULT' => 'manifest tardist',
        'COMPRESS'     => "gzip -9vf"
    },
    CONFLICTS      => \%CONFLICTS,
    PREREQ_PM      => \%RUN_DEPS,
    BUILD_REQUIRES => \%BUILD_DEPS,
    TEST_REQUIRES  => \%TEST_DEPS,
    LICENSE        => 'perl',
    AUTHOR         => 'Jeff Zucker <jeff@vpservices.com>, Jens Rehsack <rehsack@cpan.org>',
    test           => { TESTS => 't/*.t xt/*.t' },
);

sub CheckConflicts
{
    my %params    = @_;
    my %conflicts = %{ $params{CONFLICTS} };
    my $found     = 0;

    while ( my ( $module, $version ) = each(%conflicts) )
    {
        undef $@;
        eval "require $module";
        next if $@;
        my $installed = eval "\$" . $module . "::VERSION";
        if ( $installed le $version )
        {
            ++$found;
            my $msg = $module eq $params{NAME} ? $selfConflictMsg : $conflictMsg;
            my $warning = sprintf( $msg, $module, $installed );
            warn $warning;
        }
    }

    return !$found;
}

sub WriteMakefile1
{    #Written by Alexandr Ciornii, version 0.21. Added by eumm-upgrade.
    my %params       = @_;
    my $eumm_version = $ExtUtils::MakeMaker::VERSION;
    $eumm_version = eval $eumm_version;
    die "EXTRA_META is deprecated" if ( exists( $params{EXTRA_META} ) );
    die "License not specified"    if ( !exists( $params{LICENSE} ) );
    $params{TEST_REQUIRES}
      and $eumm_version < 6.6303
      and $params{BUILD_REQUIRES} = { %{ $params{BUILD_REQUIRES} || {} }, %{ delete $params{TEST_REQUIRES} } };
    #EUMM 6.5502 has problems with BUILD_REQUIRES
    $params{BUILD_REQUIRES}
      and $eumm_version < 6.5503
      and $params{PREREQ_PM} = { %{ $params{PREREQ_PM} || {} }, %{ delete $params{BUILD_REQUIRES} } };
    ref $params{AUTHOR}
      and "ARRAY" eq ref $params{AUTHOR}
      and $eumm_version < 6.5702
      and $params{AUTHOR} = join( ", ", @{ $params{AUTHOR} } );
    delete $params{CONFIGURE_REQUIRES}    if ( $eumm_version < 6.52 );
    delete $params{MIN_PERL_VERSION}      if ( $eumm_version < 6.48 );
    delete $params{META_MERGE}            if ( $eumm_version < 6.46 );
    delete $params{META_ADD}{prereqs}     if ( $eumm_version < 6.58 );
    delete $params{META_ADD}{'meta-spec'} if ( $eumm_version < 6.58 );
    delete $params{META_ADD}              if ( $eumm_version < 6.46 );
    delete $params{LICENSE}               if ( $eumm_version < 6.31 );
    delete $params{AUTHOR}                if ( $] < 5.005 );
    delete $params{ABSTRACT_FROM}         if ( $] < 5.005 );
    delete $params{BINARY_LOCATION}       if ( $] < 5.005 );

    # more or less taken from Moose' Makefile.PL
    if ( $params{CONFLICTS} )
    {
        my $ok = CheckConflicts(%params);
        exit(0) if ( $params{PREREQ_FATAL} and not $ok );
        my $cpan_smoker = grep { $_ =~ m/(?:CR_SMOKER|CPAN_REPORTER|AUTOMATED_TESTING)/ } keys %ENV;
        unless ( $cpan_smoker || $ENV{PERL_MM_USE_DEFAULT} || $ENV{SQL_STATEMENT_WARN_UPDATE} )
        {
            sleep 4 unless ($ok);
        }
        delete $params{CONFLICTS};
    }

    WriteMakefile(%params);
}