わたなべです.

Tadayoshi Funaba <tadf / kt.rim.or.jp> writes:

:なぜか、1.5 の configure が失敗するようになりました。ぱっとみ、eval す
:るように変更されているようで、このあたりがあやしいような気がしますが、
:よくわかりません。

えっと, なぜ sitedir を 
  sitedir='${prefix}/lib/ruby/site_ruby'
にしたかというと rbconfig.rb が
  CONFIG["sitedir"] = "/usr/local/lib/ruby/site_ruby"
となってしまうのがいやだったからなんです.
#それで eval が必要になってしまいました.
CONFIG["prefix"] を書き換えても変化しないし.

で, 今は
  sitedir="${prefix}/lib/ruby/site_ruby"
に戻ってるけど, eval はそのままというのが原因かなあ.

でなんでこんなことしたかというと fake_i386-cygwin.rb という
ファイルを用意して, こんな感じで書いとけば cross-compile し
た環境でも拡張ライブラリを make できるからです.
  ruby -rfake_i386-cygwin.rb -e extconf.rb --with-foo-dir=/usr/local/cygwin
みたいに. この場合の cygwin 版 ruby は
  make install DESTDIR=/install/i386-cygwin
でインストールしてあります.

ARCH = /fake_(.*).rb/.match(__FILE__)[1]
DESTDIR = '/install/' + ARCH
$:.collect! do |x|
  x.sub(/^/, DESTDIR).sub(RUBY_PLATFORM, ARCH)
end

class Object
  remove_const :RUBY_PLATFORM
  RUBY_PLATFORM = ARCH
  if defined? PLATFORM
    remove_const :PLATFORM
    PLATFORM = ARCH
  end
  CROSS_COMPILING = true
  remove_const :ARCH
end

-- 
わたなべひろふみ