use strict; use warnings; use lib 'inc'; use File::Spec::Functions qw.catdir catfile.; use MyBuilder; use File::Copy; my $version = get_version(); my $builder = MyBuilder->new ( module_name => 'Lingua::Jspell', license => 'perl', dist_author => ['Alberto Simões ', 'José João Almeida ', 'Ulisses Pinto'], needs_compiler => 1, requires => { 'File::Copy' => '0', 'ExtUtils::Manifest' => '0', 'Archive::Any' => '0.0932', 'Data::Compare' => '1.22', 'LWP::Simple' => '0', 'IPC::Open2' => '0', 'YAML' => '0.72', }, configure_requires => { 'Config::AutoConf' => '0.14', 'ExtUtils::CBuilder' => '0.27', 'ExtUtils::LibBuilder' => '0.01', 'Module::Build' => '0.3603', }, build_requires => { 'Config::AutoConf' => '0.14', 'ExtUtils::CBuilder' => '0.27', 'ExtUtils::LibBuilder' => '0.01', 'Module::Build' => '0.3603', 'Test::More' => '0', }, add_to_cleanup => [ 'src/*.o', 'src/*.so', 'src/*.dylib', 'src/*.dll', 'Lingua-Jspell-*', ], ); $builder = detect_curses($builder); ## HACK HACK HACK HACK my $libdir = $builder->install_destination("bin"); my $pkgconfig = $libdir; my $incdir = $libdir; if ($^O =~ /mswin32/i) { $libdir = undef; # Find a place where we can write. my @folders = split /;/, $ENV{PATH}; my $installed = 0; my $target = "jspell-test.$$"; while(@folders && !$installed) { $libdir = shift @folders; copy("MANIFEST", catfile($libdir,$target)); $installed = 1 if -f catfile($libdir, $target); } if (!$installed) { warn("Wasn't able to find a suitable place for libjspell.dll!"); } else { print STDERR "libjspell.dll will be installed in $libdir\n"; unlink catfile($libdir, $target); } $pkgconfig = undef; $incdir = undef; } else { $libdir =~ s/\bbin\b/lib/; $incdir =~ s/\bbin\b/include/; $pkgconfig =~ s/\bbin\b/catdir("lib","pkgconfig")/e; } $builder->notes('version' => $version); $builder->notes('libdir' => $libdir); $builder->config_data("version" => $version); $builder->config_data("libdir" => $libdir); $builder->config_data("incdir" => $incdir); $builder->config_data("bindir" => $builder->install_destination('bin')); $builder->add_build_element('usrlib'); $builder->add_build_element('incdir'); $builder->add_build_element('pcfile'); $builder->install_path( 'usrlib' => $libdir ); $builder->install_path( 'incdir' => $incdir ); $builder->install_path( 'pcfile' => $pkgconfig ); $builder->create_build_script; sub get_version { my $version = undef; open PM, "lib/Lingua/Jspell.pm" or die "Cannot open 'lib/Lingua/Jspell.pm' for reading: $!\n"; while () { if (m!^our\s+\$VERSION\s*=\s*'([^']+)'!) { $version = $1; last; } } close PM; die "Could not find VERSION on your .pm file. Weirdo!\n" unless $version; } sub detect_curses { my $builder = shift; my $LCURSES=""; my $CCURSES=""; if (not Config::AutoConf->check_header("ncurses.h")) { $CCURSES="-DNOCURSES"; } if ($CCURSES ne "-DNOCURSES") { if (not Config::AutoConf->check_lib("ncurses", "tgoto")) { $CCURSES="-DNOCURSES"; } else { $LCURSES="-lncurses"; } } if ($^O eq "MSWin32") { $CCURSES.=" -D__WIN__" } $builder->notes('ccurses' => $CCURSES); $builder->notes('lcurses' => $LCURSES); return $builder; }