この ruby-gtk-0.12 について,ちょっと提案.
現在の extconf.rb は LDFLAGS と CFLAGS を gtk-config をみて決定して
いますよね.で,いくつか問題があると思ったわけです.
1. (たとえば FreeBSD の packages に入ってるののような)gtk-config
がないシステムだとくじける.
これは「失敗したらありそうな設定をしておく」ということで結構どう
にでもなるのではないかと思うのです.たとえば
/usr/X11R6/{lib,include} と /usr/local/{lib,include} ぐらいを設定
しておく.
2. gtk-config --libs は -L だけでなく -l もはいてくれるわけです.そ
れでもってこれが LIBS の設定とかぶる.かぶるだけならまだしも -o
や .o の前に挿入されるのでリンカが文句をいう.
これもまあ,ちょっとした事で直りそうだな,と.
--- extconf.rb.orig Tue Sep 22 22:58:57 1998
+++ extconf.rb Tue Sep 22 23:23:36 1998
@@ -1,8 +1,14 @@
require "mkmf"
# may need to be changed
-$LDFLAGS=`gtk-config --libs`.chomp!
-$CFLAGS=`gtk-config --cflags`.chomp!
+begin
+ $LDFLAGS, *libs = `gtk-config --libs`.chomp!.split(/(-l.*)/)
+ $libs = libs.join(' ')+' '+$libs
+ $CFLAGS = `gtk-config --cflags`.chomp!
+rescue
+ $LDFLAGS = '-L/usr/X11R6/lib -L/usr/local/lib'
+ $CFLAGS = '-I/usr/X11R6/lib -I/usr/local/include'
+end
have_library("X11", "XOpenDisplay")
have_library("Xext", "XShmQueryVersion")
@@ -10,5 +16,6 @@
if have_library("glib", "g_print") and
have_library("gdk", "gdk_init") and
have_library("gtk", "gtk_init")
+ $libs = $libs.split(/\s/).uniq.join(' ')
create_makefile("gtk")
end
あわせると,こんな感じ.もっとまともに書けるかもしれませんが.
どうでしょ?
# ついでに,FreeBSD では ruby そのものの make で -lxpg4 としてくれる
# と gtk みたいな setlocale を使うライブラリを使っても `locale
# unsuppoted. not changed' などとくどくど言われなくてすむのですが,
# どうでしょ?
> | 実は僕も list/dev の使い分けがよくわかってないんですが、まぁこのくらいなら
> |list でもいいんじゃないかな...
>
> そーですね.過去にパッチ合戦の経験がありますので,そうなりそ
> うでしたらdevの方へどうぞ.
このぐらいだと,まあ合戦にはなりませんよね.
# ruby/gtk で ppp の on/off トグルをする「だけ」のものでも書いて見よ
# うと思いつつ,早一月.... (^^;
===========================================================================
柳川和久 @ 東大阪市 . 大阪府
kjana / os.xaxon.ne.jp September 22, 1998
The more haste, the less speed.