summaryrefslogtreecommitdiff
path: root/Build/source/libs/teckit/TECkit-2.5.1/source/Perl/Makefile.PL
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/teckit/TECkit-2.5.1/source/Perl/Makefile.PL')
-rw-r--r--Build/source/libs/teckit/TECkit-2.5.1/source/Perl/Makefile.PL115
1 files changed, 115 insertions, 0 deletions
diff --git a/Build/source/libs/teckit/TECkit-2.5.1/source/Perl/Makefile.PL b/Build/source/libs/teckit/TECkit-2.5.1/source/Perl/Makefile.PL
new file mode 100644
index 00000000000..6390f61f9c4
--- /dev/null
+++ b/Build/source/libs/teckit/TECkit-2.5.1/source/Perl/Makefile.PL
@@ -0,0 +1,115 @@
+use ExtUtils::MakeMaker;
+use Config;
+use Getopt::Std;
+
+$name = 'Encode::TECkit';
+
+getopts('d');
+
+@scripts = grep {-f } glob("scripts/*.*");
+@cpps = qw(../Engine);
+$c_ext = '.cpp';
+$o_ext = ($^O =~ m/win32/o) ? '.obj' : '.o';
+push(@ExtUtils::MakeMaker::Overridable, qw(pm_to_blib)) if ($^O eq 'MSWin32');
+
+$define = '-I.. "-I../Public-headers" -I../../zlib-1.2.3 -I../..';
+$lddlflags = $Config{'lddlflags'};
+if ($Config{'byteorder'} eq '4321')
+{ $define .= ' -DTARGET_RT_BIG_ENDIAN'; }
+elsif (!$Config{'byteorder'} eq '1234')
+{ die "Byteorder of $Config{'byteorder'} not currently supported by TECkit"; }
+# $libs = $Config{'libs'};
+$extras{OPTIMIZE} = '-g' if ($opt_d);
+$define .= " -DTRACING" if ($opt_d);
+
+
+if ($^O =~ m/win32/oi)
+{
+ $lddlflags =~ s/:x86/:I386/o;
+ $lddlflags .= " ../../zlib-1.2.3/zlib.lib";
+# $libs = 'strmbase.lib msvcprt.lib';
+ $define .= ' -DWIN32 -GX -Fo$@';
+ $ccflags = $Config{'ccflags'};
+ $objects = join(' ', map {$_ . $o_ext} (@cpps, 'TECkit'));
+# $ccflags =~ s/-O1//o;
+# foreach $i (split(/;/, $ENV{'INCLUDE'}))
+# { $define .= " -I\"$i\""; }
+}
+elsif ($^O eq 'linux' || $^O eq 'darwin')
+{
+ $ccflags = $Config{'ccflags'};
+ $objects = join(' ', map {$_ . $o_ext} (@cpps, 'TECkit'));
+ $ldfrom = $objects;
+ $ldfrom =~ s{\.\./}{}og;
+ $extras{LDFROM} = $ldfrom;
+ $define .= " -DHAVE_CONFIG_H";
+ $libs = '-lstdc++ -lz';
+# $lddlflags .= ' ' . join(' ', map {"-L$_"} split(' ', $Config{'libsdirs'}));
+}
+
+
+WriteMakefile(
+ 'NAME' => $name,
+ 'VERSION_FROM' => 'lib/Encode/TECkit.pm',
+ 'XS' => {'TECkit.xs' => 'TECkit.cpp'},
+ 'OBJECT' => $objects,
+ 'C' => [map {"$_" . $c_ext} @cpps],
+ 'CCFLAGS' => $ccflags,
+ 'DEFINE' => $define,
+ 'LDDLFLAGS' => $lddlflags,
+ 'XSPROTOARG' => '-C++ -nolinenumbers -noprototypes',
+ 'EXE_FILES' => \@scripts,
+ 'AUTHOR' => "martin_hosken\@sil.org",
+ 'ABSTRACT' => "Perl TECkit interface",
+ 'PMLIBDIRS' => ['lib'],
+# 'OPTIMIZE' => '-GZ -Gs',
+ 'LIBS' => $libs,
+ 'dist' => { 'TO_UNIX' => 'perl -Mtounix -e "tounix(\"$(DISTVNAME)\")"' },
+ %extras
+);
+
+if ($^O eq 'MSWin32') {
+# incantation to solve the problem of everyone's $Config{make} being 'nmake'
+# when we want 'pmake'. And $Config{} is read only.
+# actually, this is just a copy of the code from ExtUtiles::MM_Win32 tidied
+# up (to expose tabs) and the dependency on Config removed
+sub MY::pm_to_blib
+{
+ my $self = shift;
+ my($autodir) = $self->catdir('$(INST_LIB)','auto');
+ return <<"EOT";
+
+pm_to_blib: \$(TO_INST_PM)
+\t$self->{NOECHO}\$(PERL) \"-I\$(INST_ARCHLINE)\" \"-I\$(INST_LIB)\" \\
+\t\"-I\$(PERL_ARCHLIB)\" \"-I\$(PERL_LIB)\" -MExtUtils::Install \\
+\t-e \"pm_to_blib({ qw[\$(PM_TO_BLIB)] }, '$autodir')
+\t$self->{NOECHO}\$(TOUCH) \$@
+
+EOT
+}
+
+}
+
+sub MY::xs_c
+{
+ package MY;
+ if ($_[-1] eq 'pass_thru')
+ {
+ pop @_;
+ shift->SUPER::xs_c(@_);
+ }
+ else
+ { return ''; }
+}
+
+
+sub MY::xs_o
+{
+ package MY;
+ my ($str) = shift->xs_c(@_, 'pass_thru');
+# $str =~ s/^(\s*)\.xs\.c/$1.xs.cpp/o;
+ $str =~ s/\.c/\.cpp/og;
+ $str;
+}
+
+1;