1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
use Canary::Stability IO::AIO => 1, 5.008002;
use ExtUtils::MakeMaker;
use Config;
if ($^O eq "MSWin32") {
# configuration on windows is hardcoded - as always
print STDERR <<EOF;
***
*** Your platform is not standards compliant. To get this module working, you need to
*** download and install win32 pthread (http://sourceware.org/pthreads-win32/).
***
EOF
if(0){
if ($Config{cc} =~ /(?:^|\\|\/)gcc(?:|.*\.exe)$/) {
$INC = "$ENV{INC} -I/gtk/include";
$LIBS = ["$ENV{LIBS} -L/gtk/lib -lpthreadGC2"];
} else {
$INC = "$ENV{INC} -I/sdk/include -I/vc98/include -I/gtk/include";
$LIBS = ["$ENV{LIBS} -L/gtk/lib -lpthreadVC2"];
}
}
open my $fh, ">config.h"
or die "config.h: $!";
print $fh <<EOF;
EOF
} else {
$INC = "";
$LIBS = ['-lpthread', '-lpthreads', ''];
if ($^O =~ /bsd/i) {
print <<EOF;
If you have problems with deadlocks or crashes on your system,
make sure your perl has been linked with -lpthread (you might try
LD_PRELOAD=/path/to/libpthread.so as a workaround). Also, pthread support
under many BSDs is not the best - before reporting a bug in this module,
make sure it's not an OS bug.
EOF
}
{
local %ENV = %ENV;
while (my ($k, $v) = each %Config) {
$ENV{$k} = $v;
}
$ENV{MAKE} = $Config{make};
$ENV{SHELL} = $Config{sh};
$ENV{CC} = $Config{cc};
$ENV{CPPFLAGS} = "$Config{cppflags} -I$Config{archlibexp}/CORE";
$ENV{CFLAGS} = $Config{ccflags};
$ENV{LDFLAGS} = "$Config{ldflags} $Config{ccdlflags}";
$ENV{LINKER} = $Config{ld}; # nonstandard
$ENV{LIBS} = "-L$Config{archlibexp}/CORE -L$Config{privlibexp} -lperl $Config{perllibs}";
my $hostflag = "";
$hostflag = "--host=$1" if ($Config{cc} =~ m/(. -. -. )-g?cc/);
system $ENV{SHELL}, -c => "./configure --prefix \Q$Config{prefixexp}\E $hostflag"
and exit $? >> 8;
}
}
if ($^O =~ /linux/ && $Config{usemymalloc} eq "y") {
print <<EOF;
***
*** WARNING:
***
*** Your perl uses its own memory allocator (-Dusemymalloc=y),
*** which is known not to be threadsafe on GNU/Linux and probably
*** other platforms (even when not used concurrently, it trashes
*** the data structures of the system malloc running concurrently),
*** for perls up to 5.8.8 and possibly later versions.
***
*** If you are unsure wether your perl has been fixed, your system
*** is safe for other reasons, or you experience spurious segfaults,
*** please compile your perl with -Dusemymalloc=n.
***
EOF
}
my $mm = MM->new({
dist => {
PREOP => 'pod2text AIO.pm | tee README >$(DISTVNAME)/README; chmod -R u=rwX,go=rX . ;',
COMPRESS => 'gzip -9v',
SUFFIX => '.gz',
},
depend => {
"AIO.c" => "schmorp.h libeio/eio.h libeio/xthread.h libeio/etp.c libeio/eio.c config.h",
},
NAME => "IO::AIO",
VERSION_FROM => "AIO.pm",
INC => $INC,
LIBS => $LIBS,
EXE_FILES => ["bin/treescan"],
PM => {
'AIO.pm' => '$(INST_LIB)/IO/AIO.pm',
},
CONFIGURE_REQUIRES => { ExtUtils::MakeMaker => 6.52, Canary::Stability => 2001 },
PREREQ_PM => {
"common::sense" => 0,
},
clean => { FILES => "config.h libeio/config.h libeio/config.log libeio/config.status" },
});
$mm->flush;
|