[#21338] $SAFE=4 での autoload — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

21 messages 2003/09/04
[#21346] Re: $SAFE=4 での autoload — nobu.nakada@... 2003/09/04

なかだです。

[#21359] Re: $SAFE=4 での autoload — Hidetoshi NAGAI <nagai@...> 2003/09/05

永井@知能.九工大です.

[#21419] Makefile.inのlex.c — Kazuhiro NISHIYAMA <zn@...>

西山和広です。

15 messages 2003/09/28

[ruby-dev:21409] Re: Building 1.8.0 on Solaris with Sun CC

From: 桑村慎哉 <kuwa@...>
Date: 2003-09-26 02:59:27 UTC
List: ruby-dev #21409
桑村です。

<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研究部

In This Thread