[Gauche-devel-jp] Snow Leopard用パッチ

アーカイブの一覧に戻る

KOGURO, Naoki naoki****@kogur*****
2009年 9月 6日 (日) 10:03:18 JST


小黒です。

Snow Leopard で Gauche をコンパイルできなかったので、パッチ 
を作成しました。問題の事象が複数あるので、パッチを個別に分けていま 
す。

(1) BoehmGC の mach_dep.c でコンパイルエラーが発生する  
(gc.patch)

Snow Leopard では、ucontext.h が deprecated となったた 
め、_XOPEN_SOURCE が定義されていないとインクルードした時点で 
コンパイルエラーとなります。

ただ、ソースコード上では Darwin だとインクルードしても使って 
いないので、とりあえず "DARWIN" が定義されている場合はインク 
ルードしないようにしました。なお、最新の BoehmGC ではすでに修正されているようです (http://www.hpl.hp.com/hosted/l 
inux/mail-archives/gc/2009-September/003118.html)。

	
(2) bignum.c のコンパイルでエラーが発生する (target.patch)

Snow Leopard では、ターゲットが i386-apple-darwin10 となりま 
すが、gcc が生成するバイナリはデフォルトで x86_64 にな 
るのでエラーが発生します (x86_64 であるにも関わらず、arith- 
i386.h をインクルードしてしまうため)。

対策として、configure でターゲットが i?86-apple-darwin*  
だった場合は、i386 が定義されている場合のみ SCM_TARGET_I386  
を定義するようにしました。このチェックのため、AC_CHECK_DEFINED マクロを新たに追加しています (http://ac-archiv 
e.sourceforge.net/ac-archive/ax_check_define.html)。

なお、Snow Leopard 上で x86_32 用 Gauche を生成 
する場合は、以下のように CFLAGS を定義して configure  
を実行すれば OK です。

  env CFLAGS='-arch i386' ./configure

パッチは、添付の target.patch になります。


(3) digest framework のテストで失敗する (md5.patch)

Snow Leopard の /usr/lib/libSystem.B.dylib に ext/digest/ 
m5c.c で定義されている MD5Final と同名の関数が存在しており、 
実行時に libSystem 側の関数が呼ばれてしまうため、問題が発生 
しています。

とりあえずの対策として、ext/digest/m5c.c の関数名を変更しま 
した (MD5Final -> MD5_Final といった変更)。本当は何か 
独自の接頭辞とか付けた方がよいと思いますが、いいのが思いつかなかっ 
たので sha2.c に合わせる形で '_' を間に入れています。

	
(4) printf フォーマット文字列で warning が発生する  
(printf.patch)

intptr_t や size_t に対して、"%d" を使うと gcc  
が警告を出します。

C99 に従う形で修正を入れてみました。C99 の機能に依存したくな 
い場合は、long や unsigned long にキャストして "%ld"  
を使うことになるかと思います。


--
KOGURO, Naoki <naoki****@kogur*****>

-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: gc.patch
型:         application/octet-stream
サイズ:     368 バイト
説明:       無し
ダウンロード 
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: md5.patch
型:         application/octet-stream
サイズ:     4964 バイト
説明:       無し
URL:        http://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/attachments/20090906/fed23689/attachment-0001.obj 
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: printf.patch
型:         application/octet-stream
サイズ:     1065 バイト
説明:       無し
URL:        http://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/attachments/20090906/fed23689/attachment-0002.obj 
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: target.patch
型:         application/octet-stream
サイズ:     2707 バイト
説明:       無し
URL:        http://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/attachments/20090906/fed23689/attachment-0003.obj 



Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る