ものがたり(旧)

atsushieno.hatenablog.com に続く

メモ: gtk-osx build on Snow Leopard

初めてgtk+をいじろうとしている。しかもMac OS Xの、である。ソースからビルドした経験はほとんど無いので*1、やり方がさっぱり分からない。とりあえずImendioのquartzベースの実装をいじることになるんだろうと思って調べてみたら

http://gtk-osx.sourceforge.net/
http://sourceforge.net/apps/trac/gtk-osx/wiki/GtkQuartz

Gtk/Quartzはもうメンテナがいないという。な、何だって…!!

そりゃ#gtk+で質問しても答えが返ってこないわけだ。

仕方ないのでドキュメントとソースに訊いてみることにした。とりあえず一度もやったことのないgtk+のビルドを試す。

glibとgtk+をgit cloneしてautogen.shしたら、glibtoolizeに対応していなくてビルドできない。調べてみると何やらjhbuildとやらを使うらしい。ということで、jhbuildをビルドしてみるも、gcryptoがビルドできなくてエラーになる。どうやらアセンブリ(as/gas?)の命令が64ビット用でないか何かで止まっている。ビルドのドキュメントをよく見てみると、Snow Leopardの64ビットのビルドは未対応とある…(!) どうやら32ビットでビルドすれば良いようだ。

そんなわけで、jhbuildを自前で呼び出すのは止めて、Buildのページからリンクされている gtk-osx-build-setup.sh を落としてきて実行し、SnowLeopardのページにあるように setup_sdk_10_4() などを定義した .jhuildrc-custom を作成して jhbuild bootstrapしてみたが、今度はstdlibの関数定義が見つからないと怒られる。いろいろ調べて、どうやら setup_sdk_10_4() で呼び出しが定義されている XcodeSDK 10.4 がそもそも自分のSL環境に入っていないということに気がついた。

今さら10.4のSDKを入れるのも面倒くさいので、10.5 SDKを呼び出すような関数を setup_sdk_10_5() として、先のshスクリプトで生成された .jhbuildrc に追加したら、無事手順通りにビルドできた:
http://gist.github.com/218836

さらに gimp までビルドして実行することが出来た。ビルドされたものは(デフォルトで) ~/gtk/inst 以下に出来る。

ちなみに、ビルドする時は macports でビルドしたgtk+などが参照されないようにしておかないと、何が起こるか分からない。port deactivate しなくても、/opt/local 以下を削ったPATHを設定すれば十分だろう。*2

…って、よく考えたら昔からgarnomeとか使ってビルドしたりはしていたな。やっぱり全然初めてではなかった。まあ今までハックしようと思ったことは無かった。

*1:強いて言えばcygwin gnomeを四苦八苦してビルドしようとしていたことはあるw

*2:Linuxとは異なりLD_*PATHみたいなものはあまり無いようだ。DYLD_*なども特に変更しなかった。