# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
use 5.005;
use ExtUtils::MakeMaker;
# add a number of tests to stop the smoke testers from reporting Failed
# in unsupported environments
#
print "Checking for Microsoft Windows... (not supported)\n";
if ( $^O =~ /MSWin32/ ) {
die q{
OS unsupported
Sys::SigAction is not Supported on on $^O operating systems
if you can make all or most of the tests work on this OS, then
please send patches to me, and I will consider them for a new
release that supports $^O.
Note that smoke testers have had successful results in a Cygwin
environment however. So if you want to write scripts using
signals on a Win32 environment consider Cygwin Bash.
Lincoln
};
}
print "Checking for multi-threaded Perl... (warning)\n";
use Config;
eval "use threads";
#belt and suspenders....
if ( ! $@ || $Config{usethreads} || $Config{useithreads} || $Config{use5005threads} ) {
warn q{
Using Signals in a multi-thread perl application is unsupported
by Sys::SigAction.
Read the following from perldoc perlthrtut:
...mixing signals and threads may be problematic.
Implementations are platform-dependent, and even the POSIX semantics
may not be what you expect (and Perl doesn't even give you the full
POSIX API). For example, there is no way to guarantee that a signal
sent to a multi-threaded Perl application will get intercepted by
any particular thread.
You are on your own if we use this module in a multi threaded application
Lincoln
};
}
print "Checking support for signals... (required)\n";
if ( ! defined $Config{sig_name} ) {
die q{
Signals are not supported in this OS or perl version.
}
}
#is sigaction enabled?
print "Checking support for POSIX::sigaction... (required)\n";
if ( ( $] >= 5.008 ) &&
! ( $Config{useposix} && $Config{d_sigaction} ) ) {
die q{
This perl is not supported.
Perl must be built with 'useposix' and 'sigaction' defined.
Lincoln
};
}
print "Checking for armv5tejl... (not supported)\n";
#belt and suspenders....
if ( $Config{archname} =~ m/armv5tejl/ ) {
die q{
Sys::SigAction is not supported on armv5tejl systems.
I have communicated with the smoke tester on this OS,
and we believe that the base perl implementation of
POSIX:sigaction is probably the root cause.
if you want to use this module anyway, or work on getting
it supported by fixing the perl port, you can uncomment out
this section of Makefile.PL to build Sys::SigAction.
};
}
print "Checking for Time::HiRes (support for fractional seconds in timeouts)\n";
eval "use Time::HiRes qw( ualarm )";
if ( $@ ) {
warn q(
Time::HiRes is not available. Fractional seconds in timeout_call()
will be raised to the next high integer value with POSIX::ceil().
);
}
#ok... enough defensiveness...
my $args = {
'NAME' => 'Sys::SigAction',
'VERSION_FROM' => 'lib/Sys/SigAction.pm', # finds $VERSION
'PREREQ_PM' => {
'Test::More' => 0
,POSIX => 0
}, # e.g., Module::Name => 1.1
'ABSTRACT_FROM' => 'lib/Sys/SigAction.pm', # retrieve abstract from module
'AUTHOR' => 'Lincoln A. Baxter <lab-at-lincolnbaxter-dot-com>'
};
print "MakeMaker version = $ExtUtils::MakeMaker::VERSION\n";
if ($ExtUtils::MakeMaker::VERSION >= 6.3002 ) {
$args->{LICENSE} = 'perl';
}
WriteMakefile( %$args );