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 バイト 説明: 無し Download -------------- 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