Shiro Kawai
shiro****@lava*****
2009年 9月 6日 (日) 19:20:51 JST
ありがとうございます。 どのパッチも問題なさそうなので全て取り込みました。 --shiro From: "KOGURO, Naoki" <naoki****@kogur*****> Subject: [Gauche-devel-jp] Snow Leopard用パッチ Date: Sun, 6 Sep 2009 10:03:18 +0900 > 小黒です。 > > 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*****> >