Windows Xp上のMinGWでJUnNetHack 3.5をコンパイルする。

下記のURLから次のファイルをダウンロードする。

http://sourceforge.net/projects/mingw/files/

  • [Automated MinGW Installer]-[MinGW 5.1.4]
    • MinGW-5.1.4.exe
  • [MSYS Base System]-[Current Release_ MSYS-1.0.11]
    • MSYS-1.0.11.exe
  • [MSYS regex]-[regex-1.20090805-1]
    • libregex-1.20090805-1-msys-1.0.11-dll-1.tar.lzma
  • [MSYS flex]-[flex-2.5.35-1]
    • flex-2.5.35-1-msys-1.0.11-bin.tar.lzma
  • [MSYS bison]-[bison-2.4.1-1]
    • bison-2.4.1-1-msys-1.0.11-bin.tar.lzma
  • [MinGW libiconv]-[libiconv-1.13.1-1]
    • libcharset-1.13.1-1-mingw32-dll-1.tar.lzma
    • libiconv-1.13.1-1-mingw32-dll-2.tar.lzma
なお、MSYS regexはMSYS flexが要求するため必要です。

MinGWをインストールする。

  1. MinGW-5.1.4.exeを実行する。
  2. [Next]ボタンを押下する。
  3. [Download and install]を選んで[Next]ボタンを押下する。
  4. [I Agree]ボタンを押下する。
  5. [Previous]を選んで[Next]ボタンを押下する。
    [Current]を選んだ場合、gcc-core-3.4.5-20060117-3.tar.gzがインストールされるが、このアーカイブのgccはiconvに対応していないのでShift_JISのソースをコンパイルできない。
  6. [MinGW base tools]、[g++ compiler]を選んで[Next]ボタンを押下する。
    makeはMSYSのものを使用するのでインストールしない。
  7. [Download Folder]にc:\MinGWが入力されているのを確認して[Next]ボタンを押下する。
  8. [Install]ボタンを押下する。
    以下のファイルがダウンロードされてインストールされる。
    mingw-runtime-3.14.tar.gz
    w32api-3.11.tar.gz
    binutils-2.17.50-20060824-1.tar.gz
    gcc-core-3.4.2-20040916-1.tar.gz
    gcc-g++-3.4.2-20040916-1.tar.gz
    
  9. [Next]ボタンを押下する。
  10. [Finish]ボタンを押下する。

MSYSをインストールする。

  1. MSYS-1.0.11.exeを実行する。((古いバージョンでは lzmaが入ってない場合があるので注意。))
  2. [はい(Y)]ボタンを押下する。
  3. [Next]ボタンを押下する。
  4. [Yes]ボタンを押下する。
  5. [Next]ボタンを押下する。
  6. インストールフォルダにC:\msys\1.0が入力されているのを確認して[Next]ボタンを押下する。
  7. Star Menu FolderにMinGWが入力されているのを確認して[Next]ボタンを押下する。
  8. [Install]ボタンを押下する。
  9. プロンプトが表示される。
        "Do you wish to continue with the post install? [yn ]"
    
    と表示されるのでyを入力してEnterを押下する。
        "Do you have MinGW installed? [yn ]"
    
    と表示されるのでyを入力してEnterを押下する。
        "Where is your MinGW installation?"
    
    と表示されるので2.6で指定したフォルダを入力してEnterを押下する。 ここではc:\MinGWとする。 環境構築とチェックが行われ、makeがc:\MinGW\bin\にコピーされる。
  10. 何かキーを押下してプロンプトを閉じる。
  11. [Finish]ボタンを押下する。

flex、bison、iconvのインストール

デスクトップのMSYSショートカットをダブルクリックするとMSYSのプロンプトが表示される。 現在のユーザをhogeとすると c:\msys\1.0\home\hogeをカレントフォルダとしているはず。 以下ではこのフォルダを基点に説明する。
  1. 作業用フォルダをinstworkを作る。
        $ mkdir instwork
    
  2. lzmaファイルのコピー
        c:\msys\1.0\home\hoge\instwork
    
    に1でダウンロードしたlzmaのファイルをコピーする。
  3. カレントフォルダの移動
    $ cd instwork
    
    $ ls
    bison-2.4.1-1-msys-1.0.11-bin.tar.lzma
    flex-2.5.35-1-msys-1.0.11-bin.tar.lzma
    libcharset-1.13.1-1-mingw32-dll-1.tar.lzma
    libiconv-1.13.1-1-mingw32-dll-2.tar.lzma
    libregex-1.20090805-1-msys-1.0.11-dll-1.tar.lzma
    
  4. ファイルの解凍
    $ lzma -d *.lzma
    $ tar xvf bison-2.4.1-1-msys-1.0.11-bin.tar
    $ tar xvf flex-2.5.35-1-msys-1.0.11-bin.tar
    $ tar xvf libcharset-1.13.1-1-mingw32-dll-1.tar
    $ tar xvf libiconv-1.13.1-1-mingw32-dll-2.tar
    $ tar xvf libregex-1.20090805-1-msys-1.0.11-dll-1.tar
    
  5. ファイルの移動 c:\msys\1.0\home\hoge\instwork\bin配下の
       bison.exe
       flex.exe
       msys-regex-1.dll
       yacc
    
    c:\msys\1.0\binに移動する。
       c:\msys\1.0\home\hoge\instwork\share
    
    c:\msys\1.0\に上書き移動する。
    残った
       c:\msys\1.0\home\hoge\instwork\bin
       c:\msys\1.0\home\hoge\instwork\include
       c:\msys\1.0\home\hoge\instwork\lib
    
    c:\MinGWに上書き移動する。
  6. プロンプトを閉じる。
       $ exit
    

なお、instworkはフォルダごと削除してしまってかまいません。

UnNetHackのダウンロード

http://unnethack.sourceforge.net/
の[Download UnNetHack files]をクリックしてunnethack-3.5.1.tar.gzをダウンロード

JUnNetHackパッチのダウンロード

http://sourceforge.jp/projects/junnethack/
からjunnnethack-3.5.1-J0.1.0.diff.gzをダウンロード

JUnNetHackソースの構築

  1. 任意の作業フォルダ(パスに空白や2バイトコードを含まない)を作成する。
  2. unnethack-3.5.1.tar.gzを作業フォルダに解凍する。
  3. できたunnethack-3.5.1フォルダを複製して複製したフォルダ名をjunnethack-3.5.1とする。
  4. junnethack-3.5.1フォルダ内にjunnnethack-3.5.1-J0.1.0.diff.gzを解凍する。
  5. 作成されたjunnnethack-3.5.1-J0.1.0.diffの文字コードを確認する。 文字コードはShift_JIS、改行コードはLFにしておくこと。
  6. パッチの実行
    patch -p1 < junnnethack-3.5.1-J0.0.1.diff
    
    なお、msysのpatchではパッチを当てる対象の改行コードがLFとCRLF混在だとrejectすることがあるようです。cygwinのpatchでは差分ファイルの改行コードがLFである限りはパッチを当てる対象に改行コードが混在していても問題ないようです。
  7. パッチの削除
    パッチは削除しておきましょう。

JUnNetHackのコンパイル

構築したJUnNetHackソースとは別に、コンパイル用のフォルダを作成しましょう。

  1. junnethack-3.5.1フォルダを複製して複製したフォルダ名をjunnethack-3.5.1-mingwとする。
  2. 複製したフォルダ内に以下のような内容のファイルを#prompt.cmdの名で作成する。
    @echo off
    PATH=%SystemRoot%\system32;%SystemRoot%
    PATH=%PATH%;c:\MinGW\bin
    PATH=%PATH%;c:\msys\1.0\bin
    
    set C_INCLUDE_PATH=/c/MinGW/include
    set LD_LIBRARY_PATH=c:/MinGW/lib
    set LIBRARY_PATH=%LD_LIBRARY_PATH%
    
    SET LANG=ja_JP
    
    @echo on
    
    cmd
    
  3. #prompt.cmdを実行する。 なお、デスクトップのmsysショートカットはcmdの替わりにshでプロンプトを 実行するが、この上でconfigureの実行を行うとgamesユーザや bin権限グループが存在しないとエラーになる。 これらを解消しても実行時にmsysやmingw環境を必要としてしまうので避ける。
  4. configureの実行
    bzip2やgzipがないと動作しないバイナリを作る気はないので
    sh ./configure --with-compression=no
    
    で実行する。
  5. makeの実行
    make
    
    で実行する。
  6. make installの実行
    make install
    
    で実行する。 c:\msys\1.0\local\junnethackdir 配下にインストールされる。