IME patchを適用したemacs 23.1(NTEmacs)のビルド

emacs 23.1がリリースされてから結構たつのに、NTEmacs JP Projectさんから、なかなかバイナリがリリースされない。(IME用patchは2009/08/04にリリースされている)

しびれを切らして、自分でビルドしてみることにした。JOhn DOeさんの、Windows用Emacs22.1(NTEmacs)をMinGW+MSYSでビルドという日記を参考にさせてもらった。

環境は、Windows XP Professional SP3にMinGW+MSYS+グラフィック関係ライブラリで行った。

おおざっぱだが、手順だけ記録しておく。

ちなみに、できたバイナリは、ここに置いている。

Windows上に、ビルド環境を準備

開発環境をインストール
  • MinGWサイトから、MinGWをダウンロードする。メインページの左メニューのNavigationの中に、Downloadsというのがあるので、そこから。今回はMinGW-5.1.6.exeをダウンロードした。実行すると、デフォルトでC:\MinGWにインストールされる。
  • MSYSをダウンロードする。上記MinGWのダウンロードページの下〜の方に、MSYS-1.0.11.exeというのがあったので、今回はこれをダウンロードした。実行すると、デフォルトでC:\msys\1.0にインストールされる。
画像関係のライブラリをインストール

GnuWin32 Packagesから、NTEmacsのビルドに必要なライブラリをダウンロードしてきている。

必要なのは、Jpeg、LibPng、LibUnGif、Tiff、Xpm、Zlib。各パッケージ右側のSetupリンクをクリックして、ダウンロードする。全てインストールする。これらは、C:\Program Files\GnuWin32にインストールされる。

  • C:\Program Files\GnuWin32\include内のヘッダファイルを、まるごとC:\MinGW\includeにコピーする。また、C:\Program Files\GnuWin32\lib内の、拡張子が.aのファイルを、まるごとC:\MinGW\libにコピーする。これはMSYSコマンドプロンプトで以下を実行すると良い。

galaxy@BLACKHOLE
$ cd /c/Program\ Files/GnuWin32
galaxy@BLACKHOLE
$ cp -a include /mingw
galaxy@BLACKHOLE
$ cd lib
galaxy@BLACKHOLE
$ cp -a *.a /mingw/lib

上述GnuWin32 Packageから、Xpm(一番左側のリンク)をクリック。・SourcesのSetupをクリックしてダウンロードする。

C:\Program Files\GnuWin32\src\xpm\3.5.1\libXpm-3.5.1-src\libにある(3.5.1はりリースによって異なると思われる)、simx.hをC:\MinGW\includeにコピー。

galaxy@BLACKHOLE
$ cd /c/Program\ Files/GnuWin32/src/xpm/3.5.1/libXpm-3.5.1-src/lib
galaxy@BLACKHOLE
$ cp -a simx.h /mingw/include

ソースの準備、パッチ適用

emacs-23.1のソースをGNUのダウンロードミラーからダウンロードしてくる。lhacaなどを使用すると展開できる。

NTEmacs JP Projectから、Emacs-23.1-IME.patch.gzをダウンロードしてくる。これも圧縮されているので展開しておく。以下のコマンドプロンプトのように配置しておく。MSYSを起動し、ファイルをC:\usr\local\srcに配置した例。

galaxy@BLACKHOLE
$ mkdir -p /c/usr/local/src
galaxy@BLACKHOLE
$ cd /c/usr/local/src
galaxy@BLACKHOLE
$ ls
Emacs-23.1-IME.patch.gz
emacs-23.1.tar.bz2
galaxy@BLACKHOLE
$ gunzip Emacs-23.1-IME.patch.gz
galaxy@BLACKHOLE
$ tar xjf emacs-23.1.tar.bz2
galaxy@BLACKHOLE
$ ls
Emacs-23.1-IME.patch emacs-23.1
galaxy@BLACKHOLE
$ cd emacs-23.1
galaxy@BLACKHOLE
$ patch -p3 < ..\Emacs-23.1-IME.patch

ビルド

私は、以下のようにしてビルドした。上記ディレクトリから、

galaxy@BLACKHOLE
$ cd nt
galaxy@BLACKHOLE
$ cmd
Microsoft Windows CP [Version 5.x.xxx]
Copyright 1995-2001 Microsoft Corp.
C:\usr\local\src\emacs-23.1\nt>configure.bat --enable-w32-ime --cflags -DIME_CONTROL --cflags -DRECONVERSION --cflags -D_UNICODE
  :
C:\usr\local\src\emacs-23.1\nt>make bootstrap
  :
C:\usr\local\src\emacs-23.1\nt>make install INSTALL_DIR=C:/usr/local
C:\usr\local\src\emacs-23.1\nt>exit
galaxy@BLACKHOLE
$ exit

これで、NTEmacs 23.1 IMEパッチ適用済みバイナリが、C:\usr\local配下にできる。

最後に、C:\Program Files\GnuWin32\binにあるdllファイルをC:\usr\local\binにコピーしておく。MSYSだと、

galaxy@BLACKHOLE
$ cp -a /c/Program\ Files/GnuWin32/bin/*.dll /c/usr/local/bin