わたなべです。

ruby-devへ移行しましょう。

nobu.nokada / softhome.net <nobu.nokada / softhome.net> writes:

> >   $LIBPATH.unshift("$(libdir)") unless $extmk or CROSS_COMPILING
> > をif文の外に出してしまって問題ないと思います。
> 
> つまり、$LIBPAHTの初期値は、$extmkなら$(topdir)、それ以外でネイ
> ティブなら$(libdir)、ということですね。

はい。外に出すと
  $LIBPATH = $extmk ? ["$(topdir)"] : []
  $LIBPATH.unshift("$(libdir)") unless $extmk or CROSS_COMPILING
となるので、これをまとめると
$extmkが真のときは
  ["$(topdir)"]
となり、$extmkが偽でCROSS_COMPILINGが偽のときは
  [].unshift("$(libdir)")
で、これは
  ["$(libdir)"]
と等価ということですね。

> 残るはクロスコンパイルの
> ときですが、ライブラリとかは一体どこに置かれてるもんでしょう。

$prefix/$cpu-$vender-$target/libあたりに。

> $(libdir)はターゲットシステム上でのインストール先ですよね。

そうです。何も変更しなければ/usr/local/libになります。
というわけで、$(libdir)が残るのはまずいです。

> やっぱり$(topdir)にそのまま残しておくものなんでしょうか。

拡張ライブラリを作るときにやはり指定したくなると思うので、
各々--with-foo-dirか、面倒なら--with-opt-dirでしょうね。
というわけで、CROSSのときは何もなくていいと思います。

つまり
  $LIBPATH =
    if $extmk
      ["$(topdir)"]
    elsif CROSS_COMPILING
      []
    else
      ["$(libdir)"]
    end
かな。

と、ここで疑問なんですが、そもそも$extmkが偽のときってなぜ
$(libdir)を追加しちゃいけないんだっけ?むしろこんな感じかなあ。

  $LIBPATH = CROSS_COMPILING ? [] : ["$(libdir)"]
  $LIBPATH.unshift "$(topdir)" if $extmk

-- 
わたなべひろふみ
って今度は返り討ちあったりして