From: nobu.nakada@... Date: 2003-09-25T22:00:11+09:00 Subject: [ruby-dev:21407] Re: Building 1.8.0 on Solaris with Sun CC なかだです。 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ビットのときと同じ命令になります。 どんなエラーでしょうか。 > さらに、Sun ccはもう一つ問題があります。拡張ライブラリが一部作成されません。 > 例えばreadlineの場合、readline.hをチェックしている部分が次のようになります。 rbconfig.rbに設定されるコマンドにリダイレクトを想定してなかった ので、Shellwordsを使っています。これを単純にsystemだけにすれば よさそうに思えます。 Index: defines.h =================================================================== RCS file: /cvs/ruby/src/ruby/defines.h,v retrieving revision 1.31 diff -u -2 -p -r1.31 defines.h --- defines.h 24 Jul 2003 07:05:28 -0000 1.31 +++ defines.h 25 Sep 2003 12:57:13 -0000 @@ -140,11 +140,16 @@ static inline void flush_register_windows(void) { -# if defined(__sparc_v9__) || defined(__arch64__) - asm volatile ("flushw" : :); + asm +#ifdef __GNUC__ + volatile +#endif +# if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__) + ("flushw" : :) # elif defined(linux) || defined(__linux__) - asm volatile ("ta 0x83"); + ("ta 0x83") # else /* Solaris, OpenBSD, NetBSD, etc. */ - asm volatile ("ta 0x03"); + ("ta 0x03") # endif /* trap always to flush register windows if we are on a Sparc system */ + ; } # define FLUSH_REGISTER_WINDOWS flush_register_windows() Index: lib/mkmf.rb =================================================================== RCS file: /cvs/ruby/src/ruby/lib/mkmf.rb,v retrieving revision 1.149 diff -u -2 -p -r1.149 mkmf.rb --- lib/mkmf.rb 12 Sep 2003 03:16:29 -0000 1.149 +++ lib/mkmf.rb 25 Sep 2003 05:30:56 -0000 @@ -166,7 +166,6 @@ def xsystem command Config.expand(command) Logging::open do - command = Shellwords.shellwords(command) - puts command.quote.join(' ') - system(*command) + puts command.quote + system(command) end end -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦