SDL_ttf の Universal Binary 化

作ってるゲームで SDL_ttf を使うことにしたのですが, http://www.libsdl.org/projects/SDL_ttf/ に置いてある Mac OS X 用のバイナリーが x86_64 に対応していなかったので, これも自分でビルドしようと思ったら大変だったのでメモ. 環境は SnowLeopard + gcc4.0 or gcc4.2.

まず, ソースコードを落とします. svn から落とすと 2.0.10 で, 開発も落ち着いているようですが, とりあえず今回はサイトから直接落とせる 2.0.9 をビルドします. XCode のプロジェクトが圧縮されているので展開. SDL_ttf.xcodeproj を開きます. そのままだと i386/ppc 用の universal binary を生成するので, メニューのプロジェクト->プロジェクト設定を編集, からアーキテクチャーを 32/64bit universal とし, 有効なアーキテクチャーを i386 x86_64 に変更します.

とりあえず見た目これでよさそうですがビルドが通りませんでした. なんでかなあと思ったら, インストールされてる freetype が universal になってないようです. これが面倒でした. freetype の安定版ソースを http://ftp.twaren.net/Unix/NonGNU/freetype/ から落とします. 普通に configure / make すると使ってる環境用のバイナリーしか作れないので, 設定をいじる必要があります.

僕はまだ auto*** 周りに慣れてないので標準的な対処法がわかりませんでしたが, とりあえず configure 後に builds/unix/unix_cc.mk 内で CFLAGS と LDFLAGS の行にそれぞれ -arch i386 -arch x86_64 を付け足して, あとは普通に make, make install すれば 32/64bit universal な libfreetype がインストールできました. これを使えば SDL_ttf もビルドが通ります.