/usr/local/CPAN/HTML-CTPP2/Makefile.PL
use 5.008001;
use strict;
use ExtUtils::MakeMaker;
my @IncludeDirs = ($ENV{'CTPP2_INCLUDE'},
"/usr/local/include/ctpp2",
"/usr/include/ctpp2",
"/opt/include/ctpp2",
"/opt/REKIctpp2/include/ctpp2",
"/usr/local/ctpp2/include");
my @LibDirs = ($ENV{'CTPP2_LIB'},
"/usr/local/lib",
"/usr/lib",
"/opt/lib",
"/opt/REKIctpp2/lib",
"/usr/local/ctpp2/lib");
sub NeedToInstallCTPP
{
my $Error = shift;
warn $Error .
"\nYou should install CTPP2 library first!\n" .
"Sources of CTPP2 available here: http://ctpp.havoc.ru/download/\n".
"You may also define the CTPP2_INCLUDE and CTPP2_LIB environment variables.";
exit;
}
sub SearchDir
{
my $File = shift;
foreach (@_)
{
return $_ if (-e "$_/$File");
}
return undef;
}
print "perl thinks the current OS is '$^O'\n";
my $CXX = 'g++';
my $CC = 'gcc';
my $STDCPP = '-lstdc++';
my $inc_dirs = "";
my $lib_dirs = "";
if ($^O eq 'solaris') { $CXX = 'CC'; $CC = 'CC'; $STDCPP = '-lCstd'; }
elsif ($^O eq 'MSWin32')
{
$CXX = 'cl'; $CC = 'link'; $STDCPP = '';
my @s_incdir = {};
my @s_libdir = {};
if(defined $ENV{'INCLUDE'})
{
@s_incdir = split(/;/, $ENV{'INCLUDE'});
foreach my $v (@s_incdir)
{
if($v)
{
$inc_dirs.= ' /I "'.$v.'" ';
push(@IncludeDirs, $v);
}
}
}
if(defined $ENV{'LIB'})
{
@s_libdir = split(/;/, $ENV{'LIB'});
foreach my $v (@s_libdir)
{
$lib_dirs .= ' /LIBPATH:"'.$v.'" ';
push(@LibDirs, $v);
}
}
if(defined $ENV{'PATH'})
{
@s_libdir = split(/;/, $ENV{'PATH'});
foreach my $v (@s_libdir)
{
push(@LibDirs, $v);
}
}
}
my $CTPP2IncludeDir = SearchDir("CDT.hpp", @IncludeDirs);
unless ($CTPP2IncludeDir)
{
NeedToInstallCTPP("Cannot find header file CDT.hpp");
exit;
}
if ($^O eq 'MSWin32')
{
my $libfile = 'ctpp2l.lib';
my $CTPP2LibDir = SearchDir("ctpp2l.lib", @LibDirs);
unless ($CTPP2LibDir)
{
$libfile = 'ctpp2.lib';
$CTPP2LibDir = SearchDir("ctpp2.lib", @LibDirs);
unless ($CTPP2LibDir)
{
NeedToInstallCTPP("Cannot find shared library file ctpp2.lib");
exit;
}
}
WriteMakefile(
'NAME' => 'HTML::CTPP2',
'VERSION_FROM' => 'lib/HTML/CTPP2.pm',
'LIBS' => $CTPP2LibDir.'\\'.$libfile,
'DEFINE' => ' /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D"_MBCS" /D "NDEBUG" /D "_USRDLL" /D "CTPPPERL_EXPORTS"',
'INC' => ' /I "'.$CTPP2IncludeDir.'" '.$inc_dirs.' /I "."',
'OPTIMIZE' => ' /O2 /Oi /GL',
'LDDLFLAGS' => ' '.$lib_dirs.' /IMPLIB:'.$libfile.' /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /LTCG /DYNAMICBASE /DLL /NXCOMPAT /MACHINE:X86 /ERRORREPORT:PROMPT',
'CCFLAGS' => ' /FD /EHsc /MD /Gy /W3 /nologo /c /Zi /TP /errorReport:prompt',
'CC' => $CXX,
'LD' => $CC,
'XSOPT' => '-C++',
'clean' => { 'FILES' => '*.ct2' },
'TYPEMAPS' => ['perlobject.map'],
'AUTHOR' => 'Andrei V. Shetuhin <reki@reki.ru>'
);
}
else
{
my $CTPP2LibDir = SearchDir("libctpp2.so.2", @LibDirs);
unless ($CTPP2LibDir) { NeedToInstallCTPP("Cannot find shared library file libctpp2.so"); exit; }
WriteMakefile(
'NAME' => 'HTML::CTPP2',
'VERSION_FROM' => 'lib/HTML/CTPP2.pm',
'LIBS' => "-L$CTPP2LibDir -L/usr/lib -lm -lctpp2 $STDCPP",
'DEFINE' => '-fexceptions -O2 -Wno-deprecated ',
'INC' => "-I$CTPP2IncludeDir -I/usr/include -I/usr/local/include -I. ",
'CC' => $CXX,
'LD' => $CC,
'XSOPT' => '-C++',
'clean' => { 'FILES' => '*.ct2' },
'TYPEMAPS' => ['perlobject.map'],
'AUTHOR' => 'Andrei V. Shetuhin <reki@reki.ru>'
);
}