use ExtUtils::MakeMaker; use 5.005; use Config; $|=1; $DEFINE = ""; print <etjmp/longjump, context, rix, inux or indows?", $iface; $iface = lc $1 if $r =~ /(\S)/; if ($iface eq "u") { $DEFINE .= " -DCORO_UCONTEXT"; print "\nUsing ucontext implementation\n\n"; conftest("TEST_makecontext"); } elsif ($iface eq "s") { $DEFINE .= " -DCORO_SJLJ"; print "\nUsing setjmp/longjmp/sigaltstack implementation\n\n"; conftest("TEST_sigaltstack"); } elsif ($iface eq "l") { $DEFINE .= " -DCORO_LINUX"; print "\nUsing linux-specific implementation\n\n"; } elsif ($iface eq "i") { $DEFINE .= " -DCORO_IRIX"; print "\nUsing irix-specific implementation\n\n"; } elsif ($iface eq "w") { $DEFINE .= " -DCORO_LOSER"; print "\nUsing windows-specific implementation\n\n"; } else { print "\nUnknown implementation \"$iface\"\n"; goto retry; } print < header file available. Valgrind support is completely optional, so the default of disabling it is the safe choice. EOF my $valgrind = prompt ("Enable valgrind support (y/n)?", -r "/usr/include/valgrind/valgrind.h" ? "y" : "n"); $DEFINE .= " -DCORO_USE_VALGRIND=1" if $valgrind =~ /[yY]/; print < "Coro::State", VERSION_FROM => "State.pm", DEFINE => $DEFINE, DIR => [], ); sub conftest { my $type = shift; print "\nTrying to detect stack growth direction (for $type)\n"; print "You might see some warnings, this should not concern you.\n\n"; system "$Config{cc} $Config{ccflags} -D$type libcoro/conftest.c"; my $res = qx<./a.out>; $res =~ s/\s+$//; my ($sp, $ss) = split /,/, $res; print "\n\n*****************************************************************************\n"; print "If the testsuite fails PLEASE provide the following information\n"; print "to Marc Lehmann : operating system name, version,\n"; print "architecture name and this string '$sp|$ss'. Thanks a lot!\n";#d# print "*****************************************************************************\n\n"; unlink "a.out"; unlink "conftestval"; } print <