The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use 5.008;

use strict;
use warnings;

use ExtUtils::MakeMaker;
use Config qw(%Config);
use Getopt::Long qw(GetOptions);
use File::Basename qw(fileparse);
use Alien::TinyCC;

my $debug = $ENV{DEBUG};

GetOptions(
    'debug|d' => \$debug,
);


our $OPTIMIZE;

if ($Config{gccversion}) {
    $OPTIMIZE = '-O3 -Wall -W';
} elsif ($Config{osname} eq 'MSWin32') {
    $OPTIMIZE = '-O2 -W4';
} else {
    $OPTIMIZE = $Config{optimize};
}

if ($debug) {
    $OPTIMIZE .= ' -g';
}

my @tcc_runtime_files;
push @tcc_runtime_files, 'typemap_func.h';

# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile1(
    MIN_PERL_VERSION => '5.008',
    META_MERGE => {
        resources => {
            repository => 'git://github.com/tsee/p5-XS-TCC.git'
        },
    },
    BUILD_REQUIRES => {
        'Test::More' => '0.88',
    },
    NAME              => 'XS::TCC',
    VERSION_FROM      => 'lib/XS/TCC.pm', # finds $VERSION
    PREREQ_PM         => {
        'XSLoader' => 0,
        'ExtUtils::ParseXS' => '3.21',
        'ExtUtils::Typemaps' => '3.21',
        'ExtUtils::Embed' => 0,
        'File::Spec' => 0,
        'File::ShareDir' => 0,
    },
    LICENSE => 'perl',
    ABSTRACT_FROM => 'lib/XS/TCC.pm',
    AUTHOR => 'Steffen Mueller <smueller@cpan.org>',
    Alien::TinyCC->EUMM_LIBS,
    Alien::TinyCC->EUMM_OBJECT,
    DEFINE            => '', # e.g., '-DHAVE_SOMETHING'
    INC               => '-I. -I' . Alien::TinyCC->libtcc_include_path,
    OPTIMIZE          => $OPTIMIZE,
    META_MERGE => {
        configure_requires => {
            'Getopt::Long' => 0,
            'Cwd' => 0,
            'File::Spec' => 0,
            'File::Basename' => 0,
            'Alien::TinyCC' => '0.06',
        },
    },
);

sub MY::postamble {
    my $self = shift;
    my @ret;
    push @ret, <<HERE;

pure_all ::
	\$(MKPATH) \$(INST_LIB)/auto/share/dist/\$(DISTNAME)
HERE
        foreach my $if (0..$#tcc_runtime_files) {
            my $f = $tcc_runtime_files[$if];
            my $name = fileparse($f);
            push @ret, "\t\$(CP)  $f \$(INST_LIB)/auto/share/dist/\$(DISTNAME)/$name"
              . ($if != $#tcc_runtime_files ? " \\\n" : "\n");
        }
        push @ret, "\n";
    return join "", @ret;
}


sub WriteMakefile1 {  #Written by Alexandr Ciornii, version 0.20. 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 not exists $params{LICENSE};
    if ($params{BUILD_REQUIRES} and $eumm_version < 6.5503) {
        #EUMM 6.5502 has problems with BUILD_REQUIRES
        $params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{BUILD_REQUIRES}} };
        delete $params{BUILD_REQUIRES};
    }
    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} 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;

    WriteMakefile(%params);
}