From: "桑村慎哉" Date: 2003-09-26T11:59:27+09:00 Subject: [ruby-dev:21409] Re: Building 1.8.0 on Solaris with Sun CC 桑村です。 <200309251300.h8PD0A2s015632@sharui.nakada.kanuma.tochigi.jp>で、 nobu.nakada@nifty.ne.jpさんは書きました: > > At Thu, 25 Sep 2003 13:51:56 +0900, > 桑村慎哉 wrote: > > masa> Sun CC でコンパイルが通らないという [ruby-core:1547] ですけど、以下の > > masa> ようにすると問題なくコンパイルできましたので、一応お知らせしておきます。 > > > > asmにvolatileがついているのが気に入らないみたいなので、 > > 私は単にvolatileを取ってコンパイルしました。 > > パッチは最後につけます。 > > 要するにasm volatileはgccのみということでしょうか。 おそらく。 > > 32ビットはこれでいいのですが、64ビットは > > asm volatile ("flushw" : :); > > のコンパイルがエラーになり、よく分からなかったので手付かずです。 > > パッチのままだと32ビットのときと同じ命令になります。 > > どんなエラーでしょうか。 > syntax errorです。 いただいたパッチを1.8.0に当ててコンパイルすると、次のようになります。 cc -xO4 -xarch=v9 -KPIC -I. -I. -c array.c "./defines.h", line 147: syntax error before or at: : これもgcc拡張機能のような気がします。 > > さらに、Sun ccはもう一つ問題があります。拡張ライブラリが一部作成されません。 > > 例えばreadlineの場合、readline.hをチェックしている部分が次のようになります。 > > rbconfig.rbに設定されるコマンドにリダイレクトを想定してなかった > ので、Shellwordsを使っています。これを単純にsystemだけにすれば > よさそうに思えます。 こちらはいただいたパッチで直りました。 それから、もう一つ問題がありました。 ext/opensslがコンパイルできません。 ext/openssl/ossl_config.cで、次のようなエラーが出ます。 "ossl_config.c", line 125: warning: argument mismatch "ossl_config.c", line 125: syntax error before or at: ) 可変引数マクロと、マクロの空引数を組み合わせると発生するので、 バグのような気もしますが、次のように変更するとコンパイルできます。 --- ext/openssl/ossl.h.org Sat Jul 26 10:59:50 2003 +++ ext/openssl/ossl.h Wed Aug 6 18:21:11 2003 @@ -144,10 +144,10 @@ extern VALUE dOSSL; #if defined(HAVE_VA_ARGS_MACRO) -#define OSSL_Debug(fmt, ...) do { \ +#define OSSL_Debug(...) do { \ if (dOSSL == Qtrue) { \ fprintf(stderr, "OSSL_DEBUG: "); \ - fprintf(stderr, fmt, ##__VA_ARGS__); \ + fprintf(stderr, __VA_ARGS__); \ fprintf(stderr, " [in %s (%s:%d)]\n", __func__, __FILE__, __LINE__); \ } \ } while (0) -- 桑村 慎哉 (株) 富士通研究所 ITメディア研究所 CAD研究部