Try_header in mkmf.rb on mswin32

むらたです。

現在、mswin32 において、try_cpp は成功するけど try_compile は失敗するような
ヘッダファイルの存在を have_header を用いて正しく判定できません。

この問題は ruby-debug-base19 を gem install すると再現できます。
have_header(“iseq.h”) が失敗するためです。
しかし、mswin32 以外のアーキテクチャでは再現できません。

何故 mswin32 だけで失敗するのか調べてみたところ、mswin32 上では、
mkmf.rb で定義される try_header が try_compile のエイリアスになるようです。
これは、r21791 で中田さんが行なった修正で、ChangeLog によると
理由は -E を付けると CL が遅からということでした。

実際、try_header を try_cpp のエイリアスにすると問題は解決しましたが、
処理測度はとても遅くなってしまいました。

extconf.rb はとても遅くなってしまいますが、have_header の仕様を考えると
try_header は try_cpp のエイリアスに戻すべきだと思います。如何でしょう?

ほかにエレガントな解法はあるでしょうか?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs