FreecivのMac版が日本語で動かない

FreecivのMac版が日本語で動かないので、なんでかな?と思って調べたら、Mac用にbuildする時に
--disable-nls
という、言語サポートをdisableにするオプション付きでコンパイルされているから、らしい。
ということで、自力でコンパイルしてみました。

Freecivの英語のwikiサイトの"Build-MacOSX"という記事を参考にします。

で、Freecivは、gettextというGNUなツールを使って多言語に対応していると書いてあるので、gettextが必要なのですが、いろいろやったところ、このgettextのインストールの失敗しているから、--disable-nls というオプションをつけないと動かないらしいと思われる。

準備としてpkg-configをインストールする。
Xcodeをインストールすると、
/usr/X11/lib/pkgconfig
に、*.pcなファイルが入っていて、この*.pcなファイルを管理するツールがpkg-configのはず、なのだけれども、なぜかpkg-config自体はインストールされていないのだ。(?)
GNUのサイトからソースコードをダウンロードして、解凍、make、installで、特に問題ない模様。
pkg-configをインストールしたら、*.pcなファイルが入っているフォルダを環境変数に登録します。

export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/X11/lib/pkgconfig"

で、なぜか boostを入れます。

$tar -xf boost_1_46_1.tar.gz
$cd boost_1_46_1
$./bootstrap.sh

-n Building Boost.Jam with toolset darwin... 
tools/build/v2/engine/src/bin.macosxx86_64/bjam
...

昔、苦労した記憶があるのだが、今回は合っているっぽい。
やっぱ、その機種が売れると、いろんなモノが対応してくれるものだ。

./bjam --help

を読んで、
/boost_1_46_1/tools/build/v2/user-config.jam
というファイルをテキストエディットで開いて、ファイルの最後に

using mpi ;

を追加し、

sudo ./bjam install --libdir=/usr/local/lib --includedir=/usr/local/include

一瞬、かたまったように見えたが、iMac Intel Core i5(コア数2) 3.6 GHzで15分ぐらいでインストール出来たらしい。
やっと次に、gettextをGNUのサイトからダウンロードしてきてインストールしました。

tar -xf gettext-0.18.tar.gz
cd gettext-0.18
./configure

だーっ!とcheck項目が流れて行くので、見過ごすと思いますが、

checking for iconv... no, consider installing GNU libiconv

libiconvが無いと言われています。
いや、libiconvはあるのですが・・・、GNUのlibicovは最新でVer1.13.1なのに、MacOSに入っているlibiconvはVer.2だから、GNUのlibiconvと違うものなのかもしれない。
ここは無視して(ぉぃ

make
make check

すると、

This version was built without iconv().
FAIL: 
...
=======================
43 of 326 tests failed
(16 tests were not run)
=======================

そらそうよ。
でもinstallしてしまいます。(え!
libiconvのページに書かれているように、libiconvを再コンパイルすべきらしい。
他のページでも、libiconvを再コンパイルすることを勧めているので、libiconvを/usr/local/libに別途インストール。

tar -xf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure
make
sudo make install

で、gettextを再ビルド

cd ../gettext-0.18
make clean
export LDFLAGS="-L/usr/local/lib -liconv -L/usr/lib"
./configure --with-libexpat-prefix --with-libxml2-prefix --with-libiconv-prefix=/usr/local/lib --with-libintl-prefix --with-included-libxml

前回よりパラメータが多いけれども、本気出した、からではなく、明示的に/usr/local/libのほうの libiconv.dylibにリンクさせるため。

checking for iconv... yes
checking for working iconv... yes
checking for iconv declaration... 
         extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);

ほら、通った

$make
$make check
 =======================
 1 of 326 tests failed
 (16 tests were not run)
 =======================

驚きの結果に。
再インストールしておきます。

ついでにGDライブラリーを再コンパイルします。(ついでが多すぎる気がする...)
libtiff、libjpegを入れていない人は、この段階までに別途インストールを済ませておいてください。
(MacOSに標準で入っているのはlibTIFF,libJPEGという、アルファベットが大文字の、別のものであることに注意)

cd ../gd-2.0.35
make clean
./configure --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib --with-x --with-libiconv-prefix=/usr/local/lib
make
sudo make install

rep2のGDライブラリを利用した画像キャッシュ機能が動いたので、多分OK

次に、GTK+のサイトから、Glibのソースコードをダウンロードして、buildします。

tar -xf glib-2.28.6.tar.gz
cd glib-2.28.6
export LDFLAGS="-L/usr/local/lib -liconv -L/usr/lib"
./configure --with-libiconv=gnu
make

さらっと書きましたが、このオプションにに至るまでの苦労をつらつらと書きますと

./configure
make

だけだと

gconvert.c:65:2: error: #error GNU libiconv not in use but included iconv.h is from libiconv

GNUのlibiconvがないのに、GNUのiconv.hがあるのはおかしい、と言っています。
ここで、
./configure --help
を読み返して、

./configure --with-libiconv=gnu

とやると、今度は

checking for libiconv_open in -liconv... no
configure: error: *** No iconv() implementation found in C library or libiconv

libiconvの中にiconvという関数が無いと言われる。
やっとここで、
/usr/local/libiconv.dylib
を見に行っていないことに気が付いて、先に/usr/localのlibiconv.dylibを見に行くようにexportでLDFLAGSを設定しておくことにしました。
gettextを再コンパイルしたことで、多分、Glibもエラーなくmake出来たのだと思われます。

次にGTK+のサイトからATKのソースをダウンロードして、

tar -xf atk-1.91.92.tar.gz
cd atk-1.91.92
./configure
make
sudo make install

特に問題無さげ。
なので、次にGdk-Pixbufをインストール。

tar -xf gdk-pixbuf-2.22.1.tar.gz
cd gdk-pixbuf-2.22.1
./configure --with-libiconv-prefix=/usr/local/lib --with-libintl-prefix=/usr/lib
make
sudo make install

libintlはgettextをインストールした時に、知らないうちにインストールされるもの。
問題ないようなので、次はpangoをインストール。
GTK+のサイトからソースコードをダウンロードしてきて、

tar -xf pango-1.28.4.tar.gz
cd pango-1.28.4
./configure --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib --with-x
make
make check

All tests passed.

なので、インストールしてしまいます。

いよいよ本丸、GTK+なのですが、最新版がVer.3.0となっているけれども、安定版のVer.2.24.4にします。
MacOS Xに入っているCairoのバージョンの都合で、これより新しいバージョンのGTK+は入れられない模様。

tar -xf gtk+-2.24.4.tar.gz
cd gtk+-2.24.4
./configure --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib --with-x
make
sudo make install


やっと。これで準備が終わりました。

Freecivをコンパイルします。
sourceforgeのFreecivのプロジェクトのページからソースコードをダウンロードします。

tar -xf freeciv-2.2.5.tar.bz2
cd freeciv-2.2.5
./configure --with-readline=builtin --with-libiconv-prefix=/usr/local --enable-client=gtk2 --with-x --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib --enable-ipv6=no --disable-sdl-mixer
make

コンパイルは通ったようなので、テストのために

./civ

とすると、英語で立ち上がる。
インストールしてみないと、ちゃんと日本語で動くかどうかは確認出来ない模様。

sudo make install
freeciv-gtk2

で、日本語で起動しました。

ということで、Macで日本語でFreecivを動かすことに成功はしましたが、

Magic Trackpad には「中ボタン」がないので、地形を調査出来ない!!

ここまでやってから気が付くとは、アホすぎる。