diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-15 20:57:30 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-15 20:57:30 +0000 |
commit | 54ec1c4fe81672ca66f327ef6ae170f458cd79e5 (patch) | |
tree | 45a752c60a9a08d681a792b70f43c89903b638a2 /ruby_1_8_5/ext/socket/extconf.rb | |
parent | d464704f111d211c1f1ff9ef23ef1d755054be00 (diff) |
sorry. I made wrong tags.v1_8_5_54
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_5_54@13009 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_1_8_5/ext/socket/extconf.rb')
-rw-r--r-- | ruby_1_8_5/ext/socket/extconf.rb | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/ruby_1_8_5/ext/socket/extconf.rb b/ruby_1_8_5/ext/socket/extconf.rb deleted file mode 100644 index 41b715e0af..0000000000 --- a/ruby_1_8_5/ext/socket/extconf.rb +++ /dev/null @@ -1,282 +0,0 @@ -require 'mkmf' - -case RUBY_PLATFORM -when /bccwin32/ - test_func = "WSACleanup" - have_library("ws2_32", "WSACleanup") -when /mswin32|mingw/ - test_func = "WSACleanup" - if with_config("winsock2") - have_library("ws2_32", "WSACleanup") - else - have_library("wsock32", "WSACleanup") - end -when /cygwin/ - test_func = "socket" -when /beos/ - test_func = "socket" - have_library("net", "socket") - have_func("closesocket") -when /i386-os2_emx/ - test_func = "socket" - have_library("socket", "socket") -else - test_func = "socket" - have_library("nsl", "t_open") - have_library("socket", "socket") -end - -unless $mswin or $bccwin or $mingw - headers = %w<sys/types.h netdb.h string.h sys/socket.h netinet/in.h> -end -if /solaris/ =~ RUBY_PLATFORM and !try_compile("") - # bug of gcc 3.0 on Solaris 8 ? - headers << "sys/feature_tests.h" -end - -ipv6 = false -default_ipv6 = /cygwin/ !~ RUBY_PLATFORM -if enable_config("ipv6", default_ipv6) - if checking_for("ipv6") {try_link(<<EOF)} -#include <sys/types.h> -#include <sys/socket.h> -main() -{ - socket(AF_INET6, SOCK_STREAM, 0); -} -EOF - $defs << "-DENABLE_IPV6" << "-DINET6" - ipv6 = true - end -end - -if ipv6 - ipv6lib = nil - class << (fmt = "unknown") - def %(s) s || self end - end - idirs, ldirs = dir_config("inet6", %w[/usr/inet6 /usr/local/v6].find {|d| File.directory?(d)}) - checking_for("ipv6 type", fmt) do - if have_macro("IPV6_INRIA_VERSION", "netinet/in.h") - "inria" - elsif have_macro("__KAME__", "netinet/in.h") - have_library(ipv6lib = "inet6") - "kame" - elsif have_macro("_TOSHIBA_INET6", "sys/param.h") - have_library(ipv6lib = "inet6") and "toshiba" - elsif have_macro("__V6D__", "sys/v6config.h") - have_library(ipv6lib = "v6") and "v6d" - elsif have_macro("_ZETA_MINAMI_INET6", "sys/param.h") - have_library(ipv6lib = "inet6") and "zeta" - elsif ipv6lib = with_config("ipv6-lib") - warn <<EOS ---with-ipv6-lib and --with-ipv6-libdir option will be obsolete, use ---with-inet6lib and --with-inet6-{include,lib} options instead. -EOS - find_library(ipv6lib, nil, with_config("ipv6-libdir", ldirs)) and - ipv6lib - elsif have_library("inet6") - "inet6" - end - end or not ipv6lib or abort <<EOS - -Fatal: no #{ipv6lib} library found. cannot continue. -You need to fetch lib#{ipv6lib}.a from appropriate -ipv6 kit and compile beforehand. -EOS -end - -if have_struct_member("struct sockaddr_in", "sin_len", headers) - $defs[-1] = "-DHAVE_SIN_LEN" -end - -# doug's fix, NOW add -Dss_family... only if required! -[nil, " -Dss_family=__ss_family -Dss_len=__ss_len"].each do |flags| - if flags - cppflags = $CPPFLAGS - $CPPFLAGS += flags - end - if have_struct_member("struct sockaddr_storage", "ss_family", headers) - $defs[-1] = "-DHAVE_SOCKADDR_STORAGE" - break - elsif flags - $CPPFLAGS = cppflags - end -end - -if have_struct_member("struct sockaddr", "sa_len", headers) - $defs[-1] = "-DHAVE_SA_LEN " -end - -have_header("netinet/tcp.h") if not /cygwin/ =~ RUBY_PLATFORM # for cygwin 1.1.5 -have_header("netinet/udp.h") - -if have_func("sendmsg") | have_func("recvmsg") - have_struct_member('struct msghdr', 'msg_control', ['sys/types.h', 'sys/socket.h']) - have_struct_member('struct msghdr', 'msg_accrights', ['sys/types.h', 'sys/socket.h']) -end - -getaddr_info_ok = enable_config("wide-getaddrinfo") do - checking_for("wide getaddrinfo") {try_run(<<EOF)} -#{cpp_include(headers)} -#include <stdlib.h> - -#ifndef EXIT_SUCCESS -#define EXIT_SUCCESS 0 -#endif -#ifndef EXIT_FAILURE -#define EXIT_FAILURE 1 -#endif - -#ifndef AF_LOCAL -#define AF_LOCAL AF_UNIX -#endif - -main() -{ - int passive, gaierr, inet4 = 0, inet6 = 0; - struct addrinfo hints, *ai, *aitop; - char straddr[INET6_ADDRSTRLEN], strport[16]; - - for (passive = 0; passive <= 1; passive++) { - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_UNSPEC; - hints.ai_protocol = IPPROTO_TCP; - hints.ai_flags = passive ? AI_PASSIVE : 0; - hints.ai_socktype = SOCK_STREAM; - if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) { - (void)gai_strerror(gaierr); - goto bad; - } - for (ai = aitop; ai; ai = ai->ai_next) { - if (ai->ai_family == AF_LOCAL) continue; - if (ai->ai_addr == NULL) - goto bad; -#if defined(_AIX) - ai->ai_addr->sa_len = ai->ai_addrlen; - ai->ai_addr->sa_family = ai->ai_family; -#endif - if (ai->ai_addrlen == 0 || - getnameinfo(ai->ai_addr, ai->ai_addrlen, - straddr, sizeof(straddr), strport, sizeof(strport), - NI_NUMERICHOST|NI_NUMERICSERV) != 0) { - goto bad; - } - if (strcmp(strport, "54321") != 0) { - goto bad; - } - switch (ai->ai_family) { - case AF_INET: - if (passive) { - if (strcmp(straddr, "0.0.0.0") != 0) { - goto bad; - } - } else { - if (strcmp(straddr, "127.0.0.1") != 0) { - goto bad; - } - } - inet4++; - break; - case AF_INET6: - if (passive) { - if (strcmp(straddr, "::") != 0) { - goto bad; - } - } else { - if (strcmp(straddr, "::1") != 0) { - goto bad; - } - } - inet6++; - break; - case AF_UNSPEC: - goto bad; - break; - default: - /* another family support? */ - break; - } - } - } - - if (!(inet4 == 0 || inet4 == 2)) - goto bad; - if (!(inet6 == 0 || inet6 == 2)) - goto bad; - - if (aitop) - freeaddrinfo(aitop); - exit(EXIT_SUCCESS); - - bad: - if (aitop) - freeaddrinfo(aitop); - exit(EXIT_FAILURE); -} -EOF -end -if ipv6 and not getaddr_info_ok - abort <<EOS - -Fatal: --enable-ipv6 is specified, and your OS seems to support IPv6 feature. -But your getaddrinfo() and getnameinfo() are appeared to be broken. Sorry, -you cannot compile IPv6 socket classes with broken these functions. -You can try --enable-wide-getaddrinfo. -EOS -end - -case with_config("lookup-order-hack", "UNSPEC") -when "INET" - $defs << "-DLOOKUP_ORDER_HACK_INET" -when "INET6" - $defs << "-DLOOKUP_ORDER_HACK_INET6" -when "UNSPEC" - # nothing special -else - abort <<EOS - -Fatal: invalid value for --with-lookup-order-hack (expected INET, INET6 or UNSPEC) -EOS -end - -$objs = ["socket.#{$OBJEXT}"] - -unless getaddr_info_ok and have_func("getnameinfo", "netdb.h") and have_func("getaddrinfo", "netdb.h") - if have_struct_member("struct in6_addr", "s6_addr8", headers) - $defs[-1] = "-DHAVE_ADDR8" - end - $CPPFLAGS="-I. "+$CPPFLAGS - $objs += ["getaddrinfo.#{$OBJEXT}"] - $objs += ["getnameinfo.#{$OBJEXT}"] - have_func("inet_ntop") or have_func("inet_ntoa") - have_func("inet_pton") or have_func("inet_aton") - have_func("getservbyport") - have_header("arpa/inet.h") - have_header("arpa/nameser.h") - have_header("resolv.h") -end - -unless have_type("socklen_t", headers) - $defs << "-Dsocklen_t=int" -end - -have_header("sys/un.h") -have_header("sys/uio.h") - -if have_func(test_func) - have_func("hsterror") - have_func("getipnodebyname") or have_func("gethostbyname2") - have_func("socketpair") - unless have_func("gethostname") - have_func("uname") - end - if enable_config("socks", ENV["SOCKS_SERVER"]) - if have_library("socks5", "SOCKSinit") - $defs << "-DSOCKS5" << "-DSOCKS" - elsif have_library("socks", "Rconnect") - $defs << "-DSOCKS" - end - end - create_makefile("socket") -end |