-# $Id: Makefile.PL,v 1.5 2000/11/01 14:27:49 skimo Exp $
+# $Id: Makefile.PL,v 1.11 2001/06/08 15:09:47 skimo Exp $
use ExtUtils::MakeMaker;
use IO::File;
use Config;
use Cwd 'cwd';
+use Getopt::Long;
@h1 = qw(fastcgi.h fcgiapp.h fcgiappmisc.h fcgimisc.h fcgios.h);
@h = (@h1, 'fcgi_config.h');
@dist2 = qw(fcgiapp.c os_unix.c os_win32.c);
@dist3 = (@h1, qw(fcgi_config.h.in fcgi_config_x86.h));
+GetOptions ("pure-perl!" => \$pure);
+$pure =
+ (prompt("Do you want to use the pure perl implementation", "no") =~ /^y/)
+ ? "1" : "0" unless defined $pure;
+open(CFG,">FCGI.cfg");
+print CFG "\$pure = $pure;1;\n";
+close CFG;
+
$devkit = cwd() . "/..";
-if (-d "$devkit/libfcgi/" && -f "$devkit/libfcgi/libfcgi.a"
+if (-d "$devkit/libfcgi/"
&& -d "$devkit/include" && !grep {!-f "$devkit/include/$_"} (@h))
{
+ unless (-f "$devkit/libfcgi/libfcgi.a") {
+ warn "Please compile the library before attempting " .
+ "to compile the perl module.\n";
+ exit -1;
+ }
# devkit
$prefix = $devkit;
push @libs, "-L$devkit/libfcgi -lfcgi";
ABSTRACT => 'Fast CGI module',
AUTHOR => 'Sven Verdoolaege (skimo@kotnet.org)')
if ($ExtUtils::MakeMaker::VERSION >= 5.4301);
+
+$plfiles = { 'echo.PL' => 'echo.fpl',
+ 'remote.PL' => 'remote.fpl',
+ 'threaded.PL' => 'threaded.fpl',
+ 'FCGI.PL' => 'FCGI.pm',
+ };
+$plfiles->{'FCGI.XL'} = 'FCGI.xs' unless $pure;
+if ($pure) {
+ push @extras,
+ LINKTYPE => ' ';
+} else {
+ push @extras,
+ 'LIBS' => [ @libs ],
+ 'OBJECT' => "@o",
+ 'INC' => $inc;
+}
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
-WriteMakefile(
+
+# Work around bug in previous versions of MakeMaker
+WriteMakefile(NAME => 'FCGI')
+ if $ExtUtils::MakeMaker::VERSION <= 5.4302;
+
+$mm = MM->new({
'NAME' => 'FCGI',
- 'VERSION_FROM' => 'FCGI.pm',
- 'LIBS' => [ @libs ],
- 'OBJECT' => "@o",
- 'INC' => $inc,
+ 'VERSION_FROM' => 'FCGI.PL',
'dist' => { 'COMPRESS' => 'gzip -9f',
'SUFFIX' => 'gz',
'PREOP' => '$(CP) '.join(' ',
'POSTOP' =>
'$(MV) MANIFEST.old MANIFEST',
},
- 'clean' => { FILES => 'config.cache fcgi_config.h' },
- 'PL_FILES' => { 'echo.PL' => 'echo.fpl',
- 'remote.PL' => 'remote.fpl',
- 'threaded.PL' => 'threaded.fpl',
- 'FCGI.PL' => 'FCGI.xs',
- },
+ 'clean' => { FILES => 'config.cache fcgi_config.h' .
+ ' FCGI.xs FCGI.c FCGI.cfg ' .
+ (join ' ', values %$plfiles)},
+ 'PL_FILES' => $plfiles,
+ PM => {'FCGI.pm' => '$(INST_ARCHLIBDIR)/FCGI.pm'},
@extras,
-);
+});
+# don't install oldinterface pod
+delete $mm->{MAN3PODS}{oldinterface.pod};
+$mm->flush;
-exit if -f 'fcgi_config.h' or $prefix;
+exit if -f 'fcgi_config.h' or $prefix or $pure;
# CPAN and no installed lib found
if ($sys eq "win32") {
# configure will almost certainly not run on a normal NT install,
# use the pregenerated configuration file
+ use File::Copy qw(copy);
print "Using prebuilt fcgi_config.h file for Windows\n";
unlink("fcgi_config.h");
- die $! unless rename("fcgi_config_x86.h","fcgi_config.h");
+ die $! unless copy("fcgi_config_x86.h","fcgi_config.h");
# Win build system also can't deal with existence of FCGI.xs or absence of
# FCGI.c