$|++; BEGIN { require 5.005 } use strict; use ExtUtils::MakeMaker; use Config; $ENV{SNOWBALL_SRC} = "snowball_src"; $ENV{SNOWBALL_STEMMER} = "stemmers_src"; my $ext = $Config{obj_ext}; my @stemmers; my $yes = 0; foreach my $stemdir (grep { /\.h$/ } glob $ENV{SNOWBALL_STEMMER}.'/*') { $yes++; my $lang; if ($stemdir =~ /stem_(.+)\.h/) { push @stemmers, $1; } } if ( $#stemmers < 0 ) { die "There are no stemmers. Exiting...\n"; } my $list = join(', ', @stemmers); print < perl Makefile.PL #################################################### EOT # config.c generation open(OUT_H,">config.c") || die "Can't open file for writing"; print OUT_H "/* Autogenerated file! */\n"; print OUT_H join("\n", map { qq|#include "$ENV{SNOWBALL_STEMMER}/stem_$_.h"| } @stemmers); print OUT_H "\n#define NUMSTEM (".($#stemmers + 1).")\n"; print OUT_H "STEM stemmers[] = {\n"; print OUT_H join(",\n", map { qq| {"$_", NULL, ${_}_create_env, ${_}_close_env, ${_}_stem}| } @stemmers); print OUT_H "\n};\n"; close(OUT_H); # postamble my @snowballfiles = ('api.h', 'api.c', 'header.h', 'utilities.c'); my $act = "\n"; foreach my $file (@snowballfiles) { $act .= "$file: $ENV{SNOWBALL_SRC}/q/$file\n\t\$(CP) $ENV{SNOWBALL_SRC}/q/$file $file\n"; } my $commonheaders = join(' ', grep { /\.h$/ } @snowballfiles); foreach my $lang (@stemmers) { $act .= "stem_$lang.h: $ENV{SNOWBALL_STEMMER}/stem_$lang.h\n\t\$(CP) $ENV{SNOWBALL_STEMMER}/stem_$lang.h stem_$lang.h\n"; $act .= "stem_$lang.c: $ENV{SNOWBALL_STEMMER}/stem_$lang.c $commonheaders stem_$lang.h\n\t\$(CP) $ENV{SNOWBALL_STEMMER}/stem_$lang.c stem_$lang.c\n"; } my $copyfile = join(' ', @snowballfiles, map { "stem_$_.h stem_$_.c" } @stemmers); my $objects = join(' ', map { "stem_$_$ext" } @stemmers).' '. join(' ', map { $_ =~ s/\.c$/$ext/; "$_" } grep { /\.c$/ } @snowballfiles); my $headers = join(' ', map { "stem_$_.h" } @stemmers).' '.$commonheaders; WriteMakefile( PREREQ_PM => { 'POSIX' => 0, }, VERSION_FROM => 'lib/Lingua/Stem/Snowball.pm', NAME => 'Lingua::Stem::Snowball', AUTHOR => 'Fabien POTENCIER ', INC => "-I. -I$ENV{SNOWBALL_SRC}/q -I$ENV{SNOWBALL_STEMMER}", OBJECT => "Snowball$ext $objects", clean => { FILES => "config.c $copyfile" }, depend => { 'Snowball$ext' => "config.c $headers", }, EXE_FILES => [ 'bin/add_stemmer.pl' ], ); sub MY::postamble{ return $act; }