diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-11 14:10:34 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-11 14:10:34 +0000 |
commit | 01cd3467fbd3e9ea212063d0a7405642b8746b94 (patch) | |
tree | 4b5e03ee9f2429e1573f1dda29b136461e0a4671 | |
parent | 709bff4f2b7564c34754feb5f33440a72f802fca (diff) | |
download | ruby-01cd3467fbd3e9ea212063d0a7405642b8746b94.tar.gz |
* ext/socket/extconf.rb: test IPPROTO_IP and IPPROTO_IPV6 constants.
* ext/socket/mkconstants.rb: define macros for enum.
[ruby-dev:38849]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27742 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | ext/socket/extconf.rb | 7 | ||||
-rw-r--r-- | ext/socket/mkconstants.rb | 12 |
3 files changed, 23 insertions, 4 deletions
@@ -1,3 +1,11 @@ +Tue May 11 23:07:22 2010 Tanaka Akira <akr@fsij.org> + + * ext/socket/extconf.rb: test IPPROTO_IP and IPPROTO_IPV6 constants. + + * ext/socket/mkconstants.rb: define macros for enum. + + [ruby-dev:38849] + Tue May 11 21:53:18 2010 Yusuke Endoh <mame@tsg.ne.jp> * test/rake/test_task_arguments.rb: makes ENV empty during tests diff --git a/ext/socket/extconf.rb b/ext/socket/extconf.rb index 3ce8316c4f..9125ec1ec3 100644 --- a/ext/socket/extconf.rb +++ b/ext/socket/extconf.rb @@ -110,6 +110,13 @@ end have_header("netinet/tcp.h") if /cygwin/ !~ RUBY_PLATFORM # for cygwin 1.1.5 have_header("netinet/udp.h") +%w[ + IPPROTO_IP + IPPROTO_IPV6 +].each {|name| + have_const(name, headers) +} + if (have_func("sendmsg") | have_func("recvmsg")) && /64-darwin/ !~ RUBY_PLATFORM # CMSG_ macros are broken on 64bit darwin, because of use of __DARWIN_ALIGN. have_struct_member('struct msghdr', 'msg_control', ['sys/types.h', 'sys/socket.h']) diff --git a/ext/socket/mkconstants.rb b/ext/socket/mkconstants.rb index c796cb4870..fe00f30e3d 100644 --- a/ext/socket/mkconstants.rb +++ b/ext/socket/mkconstants.rb @@ -73,11 +73,15 @@ end ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_const_decls") % each_const {|guard, make_value, name, default_value| -% if default_value -#ifndef <%=name%> -# define <%=name%> <%=default_value%> +#if !defined(<%=name%>) +# if defined(HAVE_CONST_<%=name.upcase%>) +# define <%=name%> <%=name%> +%if default_value +# else +# define <%=name%> <%=default_value%> +%end +# endif #endif -% end % } EOS |