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.1 by root, Sun Feb 21 09:28:18 2010 UTC vs.
Revision 1.9 by root, Fri Nov 26 21:27:41 2010 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines