ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/Makefile.PL
Revision: 1.16
Committed: Tue Nov 6 17:20:42 2007 UTC (16 years, 6 months ago) by root
Content type: text/plain
Branch: MAIN
CVS Tags: rel-0_51
Changes since 1.15: +1 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.4 use 5.006;
2    
3 root 1.7 use Config;
4 root 1.1 use ExtUtils::MakeMaker;
5    
6 root 1.10
7     unless (-e "libev/ev_epoll.c") {
8     print <<EOF;
9    
10     ***
11     *** ERROR: libev is missing or damaged. If you used a CVS check-out of EV,
12     *** you also have to check-out the "libev" module from the same CVS
13     *** repository into the EV dir (i.e. EV/libev from outside).
14     ***
15    
16     EOF
17     exit 1;
18     }
19    
20 root 1.11 print <<EOF;
21    
22    
23     *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
24    
25     Welcome to EV configuration. If you are in a hurry, just press return here
26     and hope for the best. The defaults should usually do.
27    
28     EOF
29    
30     if (prompt ("Skip further questions and use defaults (y/n)?", "y") =~ /[yY]/) {
31     $ENV{PERL_MM_USE_DEFAULT} = 1;
32     }
33    
34     print <<EOF;
35    
36    
37     *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
38    
39 root 1.14 POSIX optionally offers support for a monotonic clock source. EV
40     can take advantage of this clock source to detect time jumps
41     reliably. Unfortunately, some systems are bound to be broken, so you can
42     disable this here: you can completely disable the detection and use of
43     the monotonic clock by answering 'n' here. Support for this clock type
44     will otherwise be autodetected at both compile- and runtime.
45 root 1.11
46     EOF
47    
48     if (prompt ("Enable optional support for CLOCK_MONOTONIC (y/n)?", "y") =~ /[yY]/) {
49     $DEFINE .= " -DEV_USE_MONOTONIC";
50     }
51    
52     print <<EOF;
53    
54    
55     *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
56    
57     POSIX optionally offers support for a (potentially) high-resolution
58     realtime clock interface. In a good implementation, using it is faster
59     than the normal method of using gettimeofday. Unfortunately, this option
60     is also bound to be broken on some systems, so you can disable use and
61     probing of this feature altogether here. Otherwise support for this clock
62     type will be autodetected at compiletime.
63    
64     EOF
65    
66     if (prompt ("Prefer clock_gettime (CLOCK_REALTIME) over gettimeofday (y/n)?", "y") !~ /[yY]/) {
67     $DEFINE .= " -DEV_USE_REALTIME=0";
68     }
69    
70     print <<EOF;
71    
72    
73     *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
74    
75 root 1.15 EV by default uses select, which makes it hard to write efficient servers,
76     especially if the number of active conencitons is much lower than the open
77     ones. GNU/Linux systems have a more scalable method called "epoll", which
78     EV can use. For this to work, both your kernel and glibc have to support
79     epoll, but if you can compile it, the detection will be done at runtime,
80     and EV will safely fall back to using select when epoll isn't available.
81     If unsure, accept the default.
82 root 1.11
83     EOF
84    
85 root 1.15 if (prompt ("Enable epoll backend (y/n)?", (-e "/usr/include/sys/epoll.h") ? "y" : "n") =~ /[yY]/) {
86     $DEFINE .= " -DEV_USE_EPOLL";
87     }
88    
89     print <<EOF;
90    
91    
92     *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
93    
94     Similarly to the epoll backend above, EV can take advantage of kqueue on
95     many BSD systems (it seems to be broken on Mac OS X though). The kqueue
96     backend has not been tested, however, so it is disabled by default. Please
97     test (and preferably fix) the kqueue backend when you have a machine
98     supporting it. Support for kqueue will be detected at runtime, with a
99     safe fallback to other methods when it cannot be used.
100 root 1.11
101 root 1.15 EOF
102    
103 root 1.16 if (prompt ("Enable kqueue backend (y/n)?", (-e "/usr/include/sys/event.h") ? "y" : "n") =~ /[yY]/) {
104 root 1.15 $DEFINE .= " -DEV_USE_KQUEUE";
105     }
106 root 1.11
107     print <<EOF;
108    
109    
110     *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
111    
112     EV needs the functions pthread_atfork and clock_gettime. On most systems
113 root 1.15 you need some special libraries for this (such as -lrt and -lpthread). You
114     can specify additional libraries to provide these calls now, or accept the
115     default.
116 root 1.11
117     EOF
118    
119 root 1.15 $LIBS = prompt "Extra libraries for pthread_atfork and clock_gettime?", "-lpthread -lrt";
120    
121 root 1.11
122     print <<EOF;
123    
124    
125     *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
126    
127     EOF
128    
129 root 1.1 WriteMakefile(
130     dist => {
131 root 1.2 PREOP => 'pod2text EV.pm | tee README >$(DISTVNAME)/README; chmod -R u=rwX,go=rX . ;',
132 root 1.1 COMPRESS => 'gzip -9v',
133     SUFFIX => '.gz',
134     },
135 root 1.10 depend => {
136 root 1.13 "EV.c" => "EV/EVAPI.h "
137     . "libev/ev.c libev/ev.h libev/ev_epoll.c libev/ev_select.c "
138     . "libev/event.h libev/event.c libev/evdns.h libev/evdns.c",
139 root 1.10 },
140 root 1.8 INC => "-Ilibev",
141 root 1.11 DEFINE => "$DEFINE",
142 root 1.2 NAME => "EV",
143 root 1.11 LIBS => [$LIBS],
144 root 1.2 VERSION_FROM => "EV.pm",
145 root 1.5 PM => {
146     'EV.pm' => '$(INST_LIBDIR)/EV.pm',
147     'EV/AnyEvent.pm' => '$(INST_LIBDIR)/EV/AnyEvent.pm',
148 root 1.12 'EV/DNS.pm' => '$(INST_LIBDIR)/EV/DNS.pm',
149 root 1.5 'EV/EVAPI.h' => '$(INST_LIBDIR)/EV/EVAPI.h',
150     'EV/MakeMaker.pm' => '$(INST_LIBDIR)/EV/MakeMaker.pm',
151 root 1.8 'libev/ev.h' => '$(INST_LIBDIR)/EV/ev.h',
152 root 1.5 },
153 root 1.1 );
154    
155 root 1.6