The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use strict;

require 5.006 ;
use ExtUtils::MakeMaker ;
use Config ;
use FindBin ;
use File::Path ;
use File::Copy ;

no warnings ;

BEGIN
{
    eval { require File::Spec::Functions ; File::Spec::Functions->import() } ;
    if ($@)
    {
        *catfile = sub { return "$_[0]/$_[1]" }
    }
}

########
# VARS #
########

my $exe = $Config{_exe};

my $rm = $^O eq 'MSWin32' ? '$(PERL) -MExtUtils::Command -e rm_f' : 'rm';
my $mv = $^O eq 'MSWin32' ? '$(PERL) -MExtUtils::Command -e mv' : 'mv';

my $rm_exe = "-\$(RM) *$exe" if $exe ;

#################
# WRITEMAKEFILE #
#################

if ( $ARGV[0] =~ /releasedir/i ) {
  releasedir() ;
  exit;
}

print "Writing Makefile for LibHTTP-Perl\n";

open OUT, "> Makefile" or die "open 'Makefile': $!";

################################################################################

print OUT <<EOT;
# AUTOGENERATED, DO NOT EDIT, RERUN Makefile.PL

RM=$rm
MV=$mv
PERL=$^X

RM_RF = \$(PERL) -MExtUtils::Command -e rm_rf

all: libhttp-perl$exe releasedir

clean: cleanrelease
	-\$(RM) *.dll *.so *.exe *.zip libzip.modules
	-\$(RM) *.opt *.pdb
	\$(MV) Makefile Makefile.old

realclean: clean
	-\$(RM) libhttp-perl$exe
	-\$(RM) Makefile Makefile.old

cleanrelease :
	\$(RM_RF) release

releasedir:
	\$(PERL) myMakeFile.PL releasedir

libhttp-perl$exe: \$(OBJECTS)
	\$(PERL) lib.pl
	libzip -ob libhttp-perl.pl -allowopts ceiImMTvVwWX

EOT


################################################################################


##############
# RELEASEDIR #
##############

sub releasedir {
  my $dir = catfile($FindBin::RealBin, 'release') ;
  rmtree($dir);
  
  mkdir($dir , 0775) ;
  
  my @files = ("libhttp-perl$exe" , 'libhttp.conf' , 'main.pl') ;

  opendir (DIRLOG, $FindBin::RealBin);
  while (my $filename = readdir DIRLOG) {
    push(@files , $filename) if $filename =~ /\.(?:dll|so|zip)$/ ;
  }
  closedir (DIRLOG);
  
  foreach my $files_i ( @files ) {
    copy(catfile($FindBin::RealBin, $files_i), $dir) ;
  }
}

#######
# END #
#######