はじめまして、古川といいます。

これを追っかけたのはかなり前なので、記憶が曖昧になってますが ...

>さらに、Ruby/Gtk の src/Makefile では $? という変数が使われて
>ますが、これは FreeBSD の make では無視されてしまうようです。
>これはどう直せばいいのでしょうか?

該当箇所は src/Makefile の以下の部分ですよね。
(タブはおそらくスペースに展開されています)

--------
librbgdkkeysyms.a: makedefconst.rb rbgdkkeysyms.h
    $(RUBY) $? Init_gtk_gdkkeysyms
    cd rbgdkkeysyms; make ../$@; cd ..
--------

$? が無視されているというよりは、(2 回目以降の make, または
make install 時には) makedefconst.rb, rbgdkkeysyms.h のタイムスタンプは
librbgdkkeysyms.a より古いのに librbgdkkeysyms.a のコマンド
記述行に突入するため、$? には何もはいらない、といったことが
起こってます。

とりあえずの対策としては、
(1) GNU の make を使う
(2) 「.SUFFIXES :」という一行を Makefile に入れておく
というのがあげられるかと思います。

正しい解法をご存知の方は教えてください。

# 1999 年の 12 月の時点で、FreeBSD の ruby-gtk の ports も
# 上記の問題のためインストールできませんでした

--------
古川大介