galaxy’s blog このページをアンテナに追加 RSSフィード

2009-12-06

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

通りすがり通りすがり 2009/12/31 18:52 http://gnuwin32.sourceforge.net/packages/xpm.htm
からソースをとってきてsimx.hをC:\MinGW\includeにコピーしましょう。これを行わないとconfigureを実行したときに、XPM support is missing.と言われているはずです。

galaxy9estgalaxy9est 2009/12/31 19:11 通りすがりさん、
ご指摘ありがとうございます。ただ、この日記にも書いているのですが、Xpmのソースを拾ってきてC:\MinGW\includeにコピーは行っているんですよ。今確認したのですが、やはりsimx.hビルドしたときの環境に、simx.hは配置されています。
もう少し調べてみますね。

通りすがり通りすがり 2009/12/31 20:13 simx.hはコピーされていましたね。それでしたら、
http://gnuwin32.sourceforge.net/packages.html
からはBinariesをとってきて*dllをコピーしましょう。
>>Setupリンクをクリックして、ダウンロードする。
には入っていません…

通りすがり通りすがり 2009/12/31 20:27 何回もすみません。Complete Packageですと
GnuWin32\bin
以下のdllをコピーしたら良かったです。

galaxy9estgalaxy9est 2009/12/31 22:10 通りすがりさん、

ありがとうございます。
おっしゃるとおり、C:\Program Files\GnuWin32\binにあるdllファイルをC:\MinGw\binにコピーして、再度ビルドしたところ、ツールバーがきれい(白黒ではない)ntemacs 23.1ができました。
度々のためになるご指摘、ありがとうございました。

日記の方も修正しておきますね。

通りすがり通りすがり 2009/12/31 22:30 うまくいってよかったです。
実はコピーするだけでよく、再コンパイルは不要です。

galaxy9estgalaxy9est 2009/12/31 22:38 通りすがりさん、

なるほど、Windowsなのできちんとわかっているわけではないですが、dll(ダイナミックリンクライブラリ)だから、PATHの通っているところに置いておけばいいということですね、恐らく。

いずれにせよ、ありがとうございました。

galaxy9estgalaxy9est 2010/01/06 06:06 GnuWin32のdllライブラリをC:\MinGW\binにコピーするよりemacsのbinディレクトリにコピーした方が、そのまま配布できるので、そちらにコピーしました。

日記はそのように記述を変更し、またemacsアーカイブもdllを同梱したものに変更しました。

これは、最初に参考にさせていただいたサイトJOhn DOeさんの日記に記載されていました。私が見落としていただけだったということです。。。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/galaxy9est/20091206/1260073096