ソースコードの準備
まずはソースコードを取得する。ftp://ftp.ring.gr.jp/pub/GNU/emacs/
現時点でのリリースバージョンである24.3のソースコードemacs-24.3.tar.gzをダウンロードした。
IMEを使用するためにはパッチが必要になる。
http://sourceforge.jp/projects/gnupack/releases/
上記サイトからEmacsのバージョンに対応する最新の emacs-24.3-ime-2013-05-03.patch.tar.gz を取得した。パッチの適用方法は以下の通り。
$ tar zxvf emacs-24.3.tar.gz $ tar zxvf emacs-24.3-ime-2013-05-03.patch.tar.gz $ cd emacs-24.3 $ patch -b -p1 < ../emacs-24.3-ime-2013-05-03.patch
ライブラリの準備
GnuWinのPackagesから以下のライブラリをダウンロードする。それぞれ、dll が入っている "Binaries" の他に "Developer files" である *-lib.zip も必要になる。libxpm に関してはソースコードも必要になる。- jpeg-6b-4-bin.zip
- libpng-1.2.37-bin.zip
- libungif-4.1.4-1-bin.zip
- tiff-3.8.2-1-bin.zip
- xpm-3.5.1-1-bin.zip (xpmはSourcesも必要)
- zlib-1.2.3-bin.zip
最後に GnuTLS を準備する。Download にある GnuTLS for Windows から以下をダウンロードした。
- gnutls-3.2.6-w32.zip
- C:\lib\gnutls
- C:\lib\gnuwin32
- C:\lib\libxml
Configure & make
ビルドオプションを設定するために以下のようなスクリプトファイル ~/configure を用意した。#!/bin/sh
cmd /c ".\configure.bat \
--with-gcc \
--no-debug \
--enable-w32-ime \
--cflags -O3 \
--cflags -fno-tree-vectorize \
--cflags -mthreads \
--cflags -DRECONVERSION \
--cflags -DDOCUMENTFEED \
--cflags \"-DIMR_DOCUMENTFEED=7\" \
--cflags -Ic:/lib/gnutls/include \
--cflags -Ic:/lib/gnuwin32/include \
--cflags -Ic:/lib/libxml/include"
dos2unix ../src/config.h
--no-debug はデバッグ情報をバイナリに含めないために指定した。-O3 で最適化する場合、gccが誤ったコードを生成するらしいので、-fno-tree-vectorize も一緒に指定している。--enable-w32-ime は IME を有効にするためであるが、IME 関連と思われる -DRECONVERSION, -DDOCUMENTFEED, -DIMR_DOCUMENTFEED=7 に関しては他のサイトを参考にした。また、適宜 -I オプションでライブラリのヘッダファイルに対するサーチパスを設定する。最後の dos2unix は configure.bat 後に生成される config.h の改行文字が LF と CR+LF が混在してしまいコンパイルに失敗するので、LF に統一するために必要になる。
$ cd nt $ ~/configure $ make bootstrap $ make install INSTALL_DIR=~/bin/emacs-24.3-20131117