[#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:21405] Re: Building 1.8.0 on Solaris with Sun CC

From: 桑村慎哉 <kuwa@...>
Date: 2003-09-25 04:51:56 UTC
List: ruby-dev #21405
桑村です。

<m3wuc1gili.wl@dhcp-208-175.mtk.nao.ac.jp>で、
 Masahiro TANAKAさんは書きました:

masa> Sun CC でコンパイルが通らないという [ruby-core:1547] ですけど、以下の
masa> ようにすると問題なくコンパイルできましたので、一応お知らせしておきます。

asmにvolatileがついているのが気に入らないみたいなので、
私は単にvolatileを取ってコンパイルしました。
パッチは最後につけます。

32ビットはこれでいいのですが、64ビットは
    asm volatile ("flushw" : :);
のコンパイルがエラーになり、よく分からなかったので手付かずです。
パッチのままだと32ビットのときと同じ命令になります。
# なお、Sun ccでは64ビットの場合 __sparcv9 が定義されます。

さらに、Sun ccはもう一つ問題があります。拡張ライブラリが一部作成されません。
例えばreadlineの場合、readline.hをチェックしている部分が次のようになります。
# 諸事情により64ビットモードのログになっています。

have_header: checking for readline/readline.h... --------------------
cc -E -I/home/mu/kuwa/src/ruby-1.8.0 -I/home/mu/kuwa/src/ruby-1.8.0 -I/usr/local
/include -xO4 -xarch=v9 -KPIC > conftest.i conftest.c
>:
コマンド行: 致命的エラー: ファイルを開けません  >: ファイルもディレクトリもあり
ません。
cc: > に対して、acomp が失敗しました。
conftest.i:
cc: 警告: オプション -E と conftest.i は同時には指定できません。
conftest.c:
# 1 "conftest.c"
# 1 "/usr/local/include/readline/readline.h"
(以下略)

どうも、">"を含むコマンドのsystem()呼び出しがうまくいかないみたいです。
こちらはとりあえず">"を使わないようにしたら作成されました。
どう修正すべきなのかはよく分かりません。

--- mkmf.rb.orig	Sat Aug  2 15:42:45 2003
+++ mkmf.rb	Wed Aug  6 13:29:36 2003
@@ -211,7 +211,7 @@
 
 def cpp_command(outfile, opt="")
   "$(CPP) #$INCFLAGS -I#{$hdrdir} " \
-  "#$CPPFLAGS #$CFLAGS #{outfile} #{opt} #{CONFTEST_C}"
+  "#$CPPFLAGS #$CFLAGS #{opt} #{CONFTEST_C}"
 end
 
 def libpathflag(libpath=$LIBPATH)


なお、コンパイラのバージョンはちょっと古く
cc: Sun WorkShop 6 update 2 C 5.3 Patch 111679-12 2003/05/18
です。

最後に、defines.hへのパッチは次のようになります。

--- defines.h.org	Fri Aug  1 19:57:18 2003
+++ defines.h	Wed Aug  6 15:21:29 2003
@@ -144,7 +144,11 @@
 # elif defined(linux) || defined(__linux__)
     asm volatile ("ta  0x83");
 # else /* Solaris, OpenBSD, NetBSD, etc. */
+#  ifdef __SUNPRO_C
+    asm ("ta  0x03");
+#  else 
     asm volatile ("ta  0x03");
+#  endif
 # endif /* trap always to flush register windows if we are on a Sparc system */
 }
 #  define FLUSH_REGISTER_WINDOWS flush_register_windows()

-- 
    桑村 慎哉  (株) 富士通研究所 ITメディア研究所 CAD研究部

In This Thread