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

アーカイブの一覧に戻る

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*****>
> 




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