ruby-trunk-changes r29591 - r29598

今日のコミットにはビルド環境についての変更がいくらかあって、元々よくわからない部分なのでちゃんと理解できていないところがあります。眉に唾をつけてお読みください。あ、あてにならないのはいつものことか。

nobu:r29591 2010-10-26 00:29:32 +0900

ruby.pc というファイルを作るようになったようです。正直なところ何をしているものなのかよくわかりません。おそらく Windows 向けパッケージのビルドの為のものだと思います。と、思ったんですが、Linux で make しても ruby-1.9.pc というファイルが生成されるようになっていますね。うーん。
[追記] *.pc は pkg-confing というツール向けのデータファイルで、Linux でのコンパイル時に使うそうです。コメントありがとうございます。[/追記]

nobu:r29592 2010-10-26 08:46:27 +0900

昨日の r29589 の gcc 拡張の atomic 操作用のビルトイン関数を使うようにした修正の #elsif -> #elif の修正。始めて知ったんですがこういう typo してプリプロセッサに認識されなくてもエラーや警告は出ないんですね。

nobu:r29593 2010-10-26 09:13:37 +0900

同じく signal.c の gcc のビルトイン関数を使うようにした修正について、条件コンパイルの条件が gcc 4 以降だと Mac OS XXcodegcc だと利用できないらしいので、configure で利用できるかチェックしてその定数 HAVE_GCC_ATOMIC_BUILTINS を使うようにしています。
わたしも Snow Leopard でビルドしていますが、上の typo の影響で顕在化していなかったみたいです。

nobu:r29594 2010-10-26 12:44:56 +0900

.gitignore に *.pc を追加しています。

nobu:r29595 2010-10-26 12:47:15 +0900

r29591 で Windows でのビルドに失敗するようになっていたのを修正しています。
[Bug #3983]

nobu:r29596 2010-10-26 18:04:59 +0900

ruby.pc ファイルの雛形に DLDFLAGS というのを追加しています。拡張ライブラリなど共有ライブラリのコンパイルに必要なオプションのことではないかと思います。

nobu:r29597 2010-10-26 18:09:39 +0900

vsnprintf.c で gcc が未使用の自動変数の宣言に警告を出すのに対策をしている、とコミットメッセージからは読み取れるのですが、実際には修正されてる宣言の変数は使われているようにみえます。ちょっと見た限りでは #ifdef などの条件もそろっているのでそのせいでもなさそうですし、実際この修正を戻して make vsnprintf.o しても変数についての警告は出ないのでちょっと謎です。(@ Ubuntu gcc-4.3.3)
[追記]なかださんに twitter で教えていただきました。ありがとうございます。未使用の変数じゃなくて、未初期化の変数として警告が出ることの対策だったそうです。なぜか未使用変数のほうだと思いこんでしまいました。[/追記]

nobu:r29598 2010-10-26 18:09:45 +0900

いくつか細かい修正がありますが、おおまかな目的としては Linux 上で x86_64(x64) のアークテクチャ向けの Windows 版のクロスコンパイルの時に alloca をサポートするようにしているようです。おぉ、アセンブラのソースが含まれていますよ。