mingw版Groongaのビルド

Groongaをmingwでビルドしてみた。非公式ビルドが32bitだったので、64bit版にチャレンジ。※ Groongaは32bit OSをサポートしていません。
以下手順

MSys/MinGWインストール

  1. MinGWインストーラをダウンロード
    http://sourceforge.net/projects/mingw/files/ から mingw-get-inst-yyyymmdd.exe を取得する。
  2. インストーラを実行。オプションでMSysを追加しておく。
  3. http://sourceforge.net/projects/mingw-w64/files/ から Toolchains targetting Win64 / Personal Builds / sezero_20101003 を選択
  4. zipアーカイブをダウンロードして展開する。
    ホストOSが32bitなら mingw-w64-bin_i686-mingw_20101003_sezero.zip
    ホストOSが64bitなら mingw-w64-bin_x86_64-mingw_20101003_sezero.zip
    ※ 64bit版はネイティブコンパイラ(クロスコンパイラではない)なので、アーカイブ中のmingw64ディレクトリ以下をMinGWのルートディレクトリ(例えばC:\MinGW)に展開してもよい。
  5. MinGWのルートディレクトリに展開しなかった場合、mingw-w64-binを展開したフォルダをMSysのPATHに追加する。(下記参照)

MSysのPATHの追加方法

MSysのホームディレクトリに .profile というファイルを作成し、以下を記述。
アーカイブのmingw64ディレクトリを、MinGWのルートディレクトリに展開した場合

export PATH=/mingw/mingw64/bin:$PATH

Groongaビルド手順

  1. Groonga 1.1.0のpthread依存除去版 http://pub.cozmixng.org/~kou/archives/groonga-1.1.0.tar.gz を取得する。
    ※ 本来は http://groonga.org/download/ からダウンロードできます。次の肉の日(2011/3/29)以降。
  2. 64bitの場合、ltmain.shにパッチを当てる。(下記参照)
  3. MSysのコマンドプロンプトを開く。
  4. tar xf groonga-1.*.*.tar.gz によりGroongaを展開する。
  5. cd groonga-1.*.* で展開したディレクトリに移動する。
  6. 64bit OSの場合、引数なしで ./configure
  7. 32bit OSの場合、./configure --host=x86_64-w64-mingw32
  8. make
  9. make install

ltmain.shのパッチ

libtool 2.2に含まれるltmain.shはx86_64に未対応のため、2.4のものをバックポートする。

--- ltmain.sh.orig	2011-01-29 21:21:29 +0900
+++ ltmain.sh	2011-03-01 22:47:52 +0900
@@ -2560,7 +2560,7 @@
     ;;
   *ar\ archive*) # could be an import, or static
     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
       win32_nmres=`eval $NM -f posix -A $1 |
 	$SED -n -e '
 	    1,100{

動作確認

残念ながら、64bit版は正常動作していないようです。まだ調べられていません。

参考情報