From: NISHIMATSU Takeshi Date: 2003-07-13T01:40:54+09:00 Subject: [ruby-dev:20643] Re: compiling Ruby on AIX (powerpc-ibm-aix4.3.3.0) and Alpha OSF/1 (alphaev67-dec-osf5.1) 西松です. aixとosfについて一緒くたに報告をして混乱させてしまいました. ごめんなさい. とりあえず, 今回はosfについてのみです. [ruby-dev:20635]でなかださん: > > でしたので, わけもわからず -D_XOPEN_SOURCE_EXTENDED をつけて > > みましたところOKのようです. > > うーん、これは付けても他の環境にまずい影響はないのかな。 とりあえずほうっておいて, osfのひとは各自対応するのがよいと思います. >>> ext/socket/extconf.rb について: > 前に出てた案はどんなのだったかなぁ。 既出の難問だったのですね. [ruby-dev:20635]のパッチでは -Dss_family=__ss_family が 付いてしまうので, 下記★印のところをこのとおりにちょっと 直すとosfではコンパイルがとおるようになります. しかし, ※印のところでlinuxですとfalseになって, "-DHAVE_SOCKADDR_STORAGE" をpushできません. . . . unless have_struct_member("struct sockaddr_storage", "ss_family", headers) #★ $defs.push("-Dss_family=__ss_family") $defs.push("-Dss_len=__ss_len") end if have_struct_member("struct sockaddr_in", "sin_len", headers) $defs.push("-DHAVE_SIN_LEN") end if have_struct_member("struct sockaddr_storage", "ss_family", headers) #※ $defs.push("-DHAVE_SOCKADDR_STORAGE") end if have_struct_member("struct sockaddr", "sa_len", headers) $defs.push("-DHAVE_SA_LEN") end . . . まとめると, have_struct_member("struct sockaddr_storage", "ss_family", headers) は osf: true osf(-Dss_family=__ss_family): false linux: false linux(-Dss_family=__ss_family): true です. have_struct_member() のコンパイルテストが $defs を 使っていないようですが, 使った方がよいのかもしれません. extconf.rb をシンプルに保つために, これもosfのひとが各自対応するのがよいかと思います. -- love && peace && free_software 西松 毅