ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/constants.pl.PL
(Generate patch)

Comparing AnyEvent/constants.pl.PL (file contents):
Revision 1.3 by root, Sat Mar 13 00:08:08 2010 UTC vs.
Revision 1.11 by root, Tue Mar 27 23:47:57 2012 UTC

1#! perl 1#! perl
2
3# this file is unfortunately only executed at Makefile.PL time
4
5use Config;
6
7# when built as part of perl, these are not available
8BEGIN { eval "use Socket ()" }
9BEGIN { eval "use Fcntl ()" }
10BEGIN { eval "use POSIX ()" }
2 11
3open my $fh, ">lib/AnyEvent/constants.pl" 12open my $fh, ">lib/AnyEvent/constants.pl"
4 or die "lib/AnyEvent/constants.pl: $_[0]\n"; 13 or die "lib/AnyEvent/constants.pl: $_[0]\n";
5 14
6my $oldstdout = select $fh; 15my $oldstdout = select $fh;
7 16
17print "# automatically generated from constants.pl.PL for perl $] built for $Config{archname}\n";
18
8sub i($$) { 19sub i($$) {
9 print "sub $_[0] () { ", $_[1]*1, " }\n"; 20 print "sub $_[0](){", $_[1]*1, "}\n";
21}
22
23sub n($$) {
24 print "sub $_[0](){", (defined $_[1] ? $_[1]*1 : "undef"), "}\n";
10} 25}
11 26
12print "package AnyEvent;\n"; 27print "package AnyEvent;\n";
13 28
14our $WIN32 = $^O =~ /mswin32/i; 29our $WIN32 = $^O =~ /mswin32/i;
15 30
16 31# used a lot
17i CYGWIN => $^O =~ /cygwin/i; 32i CYGWIN => $^O =~ /cygwin/i;
18i WIN32 => $WIN32; 33i WIN32 => $WIN32;
19 34
20use Fcntl (); 35# add these purely to avoid loading Fcntl, which is slow and bloated.
21 36
22i F_SETFL => eval { Fcntl::F_SETFL() };
23i F_SETFD => eval { Fcntl::F_SETFD() }; 37i F_SETFD => eval { Fcntl::F_SETFD() } || 2;
38i F_SETFL => eval { Fcntl::F_SETFL() } || 4;
24i O_NONBLOCK => eval { Fcntl::O_NONBLOCK() }; 39i O_NONBLOCK => eval { Fcntl::O_NONBLOCK() } || 04000;
25i FD_CLOEXEC => eval { Fcntl::FD_CLOEXEC() }; 40i FD_CLOEXEC => eval { Fcntl::FD_CLOEXEC() } || 1;
41
42print "package AnyEvent::Base;\n";
43
44# add these purely to avoid loading POSIX, which is slow and bloated.
45
46i WNOHANG => eval { POSIX::WNOHANG() } || 1;
47
48print "package AnyEvent::IO;\n";
49
50i O_RDONLY => eval { Fcntl::O_RDONLY() } || 0;
51i O_WRONLY => eval { Fcntl::O_WRONLY() } || 1;
52i O_RDWR => eval { Fcntl::O_RDWR () } || 2;
53i O_CREAT => eval { Fcntl::O_CREAT () } || 64;
54i O_EXCL => eval { Fcntl::O_EXCL () } || 128;
55i O_TRUNC => eval { Fcntl::O_TRUNC () } || 512;
56i O_APPEND => eval { Fcntl::O_APPEND() } || 1024;
26 57
27print "package AnyEvent::Util;\n"; 58print "package AnyEvent::Util;\n";
28 59
29# broken windows perls use undocumented error codes... 60# broken windows perls use undocumented error codes...
30if ($WIN32) { 61if ($WIN32) {
38 i WSAEINPROGRESS => -1e99; 69 i WSAEINPROGRESS => -1e99;
39} 70}
40 71
41my $af_inet6; 72my $af_inet6;
42 73
43$af_inet6 ||= eval { require Socket ; Socket::AF_INET6 () }; 74$af_inet6 ||= eval { Socket::AF_INET6 () }; # where it should be
44$af_ine6t ||= eval { require Socket6; Socket6::AF_INET6() }; 75$af_inet6 ||= eval { require Socket6; Socket6::AF_INET6() }; # where it actually is ...
45 76
46# uhoh 77# ... or isn't, because nobody has it installed
47$af_inet6 ||= 10 if $^O =~ /linux/; 78$af_inet6 ||= 10 if $^O =~ /linux/;
48$af_inet6 ||= 23 if $^O =~ /cygwin/i; 79$af_inet6 ||= 23 if $^O =~ /cygwin/i;
49$af_inet6 ||= 23 if AnyEvent::WIN32; 80$af_inet6 ||= 23 if AnyEvent::WIN32;
50$af_inet6 ||= 24 if $^O =~ /openbsd|netbsd/; 81$af_inet6 ||= 24 if $^O =~ /openbsd|netbsd/;
51$af_inet6 ||= 28 if $^O =~ /freebsd/; 82$af_inet6 ||= 28 if $^O =~ /freebsd/;
52 83
53#TODO: WSAxxx, EDOM/ESPIPE 84#TODO: EDOM/ESPIPE
85#TODO: maybe move socket stuff to Socket::?
54 86
55i _AF_INET6 => $af_inet6; 87i _AF_INET6 => $af_inet6;
56#i AF_UNIX => Socket::AF_UNIX (); 88#i AF_UNIX => Socket::AF_UNIX ();
57#i SOCK_STREAM => Socket::SOCK_STREAM (); 89#i SOCK_STREAM => Socket::SOCK_STREAM ();
58#i SOCK_DGRAM => Socket::SOCK_DGRAM (); 90#i SOCK_DGRAM => Socket::SOCK_DGRAM ();
60#i SO_REUSEADDR => Socket::SO_REUSEADDR (); 92#i SO_REUSEADDR => Socket::SO_REUSEADDR ();
61#i SO_KEEPALIVE => Socket::SO_KEEPALIVE (); 93#i SO_KEEPALIVE => Socket::SO_KEEPALIVE ();
62#i SO_OOBINLINE => Socket::SO_OOBINLINE (); 94#i SO_OOBINLINE => Socket::SO_OOBINLINE ();
63#i IPPROTO_TCP => Socket::IPPROTO_TCP (); 95#i IPPROTO_TCP => Socket::IPPROTO_TCP ();
64 96
97print "package AnyEvent::Socket;\n";
98
99# more hardcoded os-specific constants - none
100# of these are available via any known module, but we
101# are forward-looking and try Socket:: anyways.
102my %const;
103
104while (<DATA>) {
105 my ($os, $name, $default) = split /\s+/;
106
107 $const{$name} ||= undef; # make sure it exists
108
109 next unless $os eq $^O;
110
111 my $value = eval "Socket::$name ()";
112 $value = eval $default unless defined $value;
113
114 $const{$name} = $value;
115}
116
117for my $k (sort keys %const) {
118 n $k, $const{$k};
119}
120
65print "1;\n"; 121print "1;\n";
66 122
67close $fh; 123close $fh;
68select $oldstdout; 124select $oldstdout;
69 125
70rename "$ARGV[0]~", $ARGV[0]; 1261
71 127
721 128__DATA__
129linux TCP_MAXSEG 2
130linux TCP_CORK 3
131linux TCP_KEEPIDLE 4
132linux TCP_KEEPINTVL 5
133linux TCP_KEEPCNT 6
134linux TCP_SYNCNT 7
135linux TCP_LINGER2 8
136linux TCP_DEFER_ACCEPT 9
137linux TCP_WINDOW_CLAMP 10
138linux TCP_INFO 11
139linux TCP_QUICKACK 12
140linux TCP_CONGESTION 13
141linux TCP_MD5SIG 14
142netbsd TCP_MAXSEG 2
143netbsd TCP_KEEPIDLE 3
144netbsd TCP_NOPUSH 4
145netbsd TCP_KEEPINTVL 5
146netbsd TCP_KEEPCNT 6
147netbsd TCP_KEEPINIT 7
148netbsd TCP_NOOPT 8
149netbsd TCP_MD5SIG 0x10
150netbsd TCP_CONGESTION 0x20
151cygwin TCP_MAXSEG 0x02
152cygwin TCP_NOPUSH 0x04
153cygwin TCP_NOOPT 0x08
154freebsd TCP_MAXSEG 0x02
155freebsd TCP_NOPUSH 0x04
156freebsd TCP_NOOPT 0x08
157freebsd TCP_MD5SIG 0x10
158freebsd TCP_INFO 0x20
159freebsd TCP_CONGESTION 0x40
160solaris TCP_CORK 0x18
161solaris TCP_LINGER2 0x1C
162solaris TCP_INIT_CWND 0x15
163solaris TCP_KEEPALIVE 0x8
164solaris TCP_MAXSEG 0x02
165openbsd TCP_MAXSEG 0x02
166openbsd TCP_MD5SIG 0x04
167openbsd TCP_SACK_ENABLE 0x08
168darwin TCP_MAXSEG 0x02
169darwin TCP_NOPUSH 0x04
170darwin TCP_NOOPT 0x08
171darwin TCP_KEEPALIVE 0x10
172darwin TCP_CONNECTIONTIMEOUT 0x20

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines