ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/Makefile.PL
(Generate patch)

Comparing EV/Makefile.PL (file contents):
Revision 1.35 by root, Thu Oct 2 12:27:56 2008 UTC vs.
Revision 1.38 by root, Thu Nov 20 00:35:16 2008 UTC

1use 5.006; 1use 5.006;
2 2
3use strict qw(vars subs);
3use Config; 4use Config;
4use ExtUtils::MakeMaker; 5use ExtUtils::MakeMaker;
5 6
6unless (-e "libev/ev_epoll.c") { 7unless (-e "libev/ev_epoll.c") {
7 print <<EOF; 8 print <<EOF;
43will otherwise be autodetected at both compile- and runtime. (this setting 44will otherwise be autodetected at both compile- and runtime. (this setting
44currently affects the use of nanosleep over select as well). 45currently affects the use of nanosleep over select as well).
45 46
46EOF 47EOF
47 48
48$DEFINE .= " -DEV_USE_MONOTONIC=" . (0 + (prompt ("Enable optional support for CLOCK_MONOTONIC (y/n)?", "y") =~ /[yY]/)); 49my $DEFINE .= " -DEV_USE_MONOTONIC=" . (0 + (prompt ("Enable optional support for CLOCK_MONOTONIC (y/n)?", "y") =~ /[yY]/));
49 50
50print <<EOF; 51print <<EOF;
51 52
52*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 53*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
53 54
60type will be autodetected at compiletime. 61type will be autodetected at compiletime.
61 62
62EOF 63EOF
63 64
64$DEFINE .= " -DEV_USE_REALTIME=" . (0 + (prompt ("Prefer clock_gettime (CLOCK_REALTIME) over gettimeofday (y/n)?", "y") =~ /[yY]/)); 65$DEFINE .= " -DEV_USE_REALTIME=" . (0 + (prompt ("Prefer clock_gettime (CLOCK_REALTIME) over gettimeofday (y/n)?", "y") =~ /[yY]/));
65
66print <<EOF;
67
68*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
69
70
71Another useful bit of functionality is the Linux eventfd, which is useful
72for faster signal handling (don't care) and intra-thread communications
73(mostly useful for embedding). Kernel support for this will be probed at
74runtime, but your libc must contain the necessary wrapper. Glibc 2.7 and
75later should have this wrapper.
76
77EOF
78
79$DEFINE .= " -DEV_USE_EVENTFD=" . (0 + (prompt ("Enable linux eventfd support (y/n)?", (-e "/usr/include/sys/eventfd.h") || $ENV{EV_EVENTFD} ? "y" : "n") =~ /[yY]/));
80 66
81print <<EOF; 67print <<EOF;
82 68
83*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 69*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
84 70
142fall back to using select when epoll isn't available. If unsure, accept 128fall back to using select when epoll isn't available. If unsure, accept
143the default. 129the default.
144 130
145EOF 131EOF
146 132
133my $can_epoll = -e "/usr/include/sys/epoll.h";
134$can_epoll = $ENV{EV_EPOLL} if exists $ENV{EV_EPOLL};
147$DEFINE .= " -DEV_USE_EPOLL=" . (0 + (prompt ("Enable epoll backend (y/n)?", (-e "/usr/include/sys/epoll.h") ? "y" : "n") =~ /[yY]/)); 135$DEFINE .= " -DEV_USE_EPOLL=" . (0 + (prompt ("Enable epoll backend (y/n)?", $can_epoll ? "y" : "n") =~ /[yY]/));
148 136
149print <<EOF; 137print <<EOF;
150 138
151*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 139*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
152 140
155many BSD systems. Support for kqueue will be detected at runtime, with a 143many BSD systems. Support for kqueue will be detected at runtime, with a
156safe fallback to other methods when it cannot be used. 144safe fallback to other methods when it cannot be used.
157 145
158Note that kqueue is broken on most operating systems, so by default it 146Note that kqueue is broken on most operating systems, so by default it
159won't be used on many platforms, but you can still create your own event 147won't be used on many platforms, but you can still create your own event
160loop with qkueue backend. 148loop with kqueue backend.
161 149
162Here is what we know: 150Here is what we know:
163 151
164NetBSD: partially working in at least 3.1. Yeah! :) 152NetBSD: partially working in at least 3.1. Yeah! :)
165FreeBSD: broken on at least 6.2-STABLE, 153FreeBSD: broken on at least 6.2-STABLE,
169OS X: completely, utterly broken on at least < 10.5. 157OS X: completely, utterly broken on at least < 10.5.
170 158
171EOF 159EOF
172 160
173my $can_kqueue = -e "/usr/include/sys/event.h"; 161my $can_kqueue = -e "/usr/include/sys/event.h";
174 162$can_kqueue = $ENV{EV_KQUEUE} if exists $ENV{EV_KQUEUE};
175$DEFINE .= " -DEV_USE_KQUEUE=" . (0 + (prompt ("Enable kqueue backend (y/n)?", $can_kqueue ? "y" : "n") =~ /[yY]/)); 163$DEFINE .= " -DEV_USE_KQUEUE=" . (0 + (prompt ("Enable kqueue backend (y/n)?", $can_kqueue ? "y" : "n") =~ /[yY]/));
176 164
177print <<EOF; 165print <<EOF;
178 166
179*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 167*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
197can specify additional libraries to provide these calls (and any other 185can specify additional libraries to provide these calls (and any other
198required by EV) now, or accept the default. 186required by EV) now, or accept the default.
199 187
200EOF 188EOF
201 189
202$SOLARIS_LIBS = $^O =~ /solaris/ ? " -lsocket -lnsl" : ""; 190my $solaris_libs = $^O =~ /solaris/i ? "-lsocket -lnsl" : "";
203 191my $librt = $^O =~ /linux/i ? "-lpthread" : "-lpthread -lrt";
204$LIBS = prompt "Extra libraries for pthread_atfork and clock_gettime?", "-lpthread -lrt$SOLARIS_LIBS"; 192my $LIBS = prompt "Extra libraries for pthread_atfork and clock_gettime?", "$librt $solaris_libs";
205 193
206 194
207print <<EOF; 195print <<EOF;
208 196
209*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 197*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
214you have it, it is usually a good idea to enable it. 202you have it, it is usually a good idea to enable it.
215 203
216EOF 204EOF
217 205
218my $can_inotify = -e "/usr/include/sys/inotify.h"; 206my $can_inotify = -e "/usr/include/sys/inotify.h";
219 207$can_inotify = $ENV{EV_INOTIFY} if exists $ENV{EV_INOTIFY};
220$DEFINE .= " -DEV_USE_INOTIFY=" . (0 + (prompt ("Enable inotify support (y/n)?", $can_inotify ? "y" : "n") =~ /[yY]/)); 208$DEFINE .= " -DEV_USE_INOTIFY=" . (0 + (prompt ("Enable inotify support (y/n)?", $can_inotify ? "y" : "n") =~ /[yY]/));
209
210print <<EOF;
211
212*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
213
214
215Another useful bit of functionality is the Linux eventfd, which is useful
216for faster signal handling (don't care) and intra-thread communications
217(more relevant). Kernel support for this will be probed at runtime, but
218your libc must contain the necessary wrapper. Glibc 2.7 and later should
219have this wrapper.
220
221EOF
222
223my $can_eventfd = -e "/usr/include/sys/eventfd.h";
224$can_eventfd = $ENV{EV_EVENTFD} if exists $ENV{EV_EVENTFD};
225$DEFINE .= " -DEV_USE_EVENTFD=" . (0 + (prompt ("Enable linux eventfd support (y/n)?", $can_eventfd ? "y" : "n") =~ /[yY]/));
221 226
222print <<EOF; 227print <<EOF;
223 228
224*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 229*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
225 230

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines