スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

NTEmacs 23.2.1のビルド手順

既にgnupack Users Guide - ビルド手順で記載していますが,手順の説明を補足したものを再掲します.


ビルド環境の準備

ビルド環境を用意します.コンパイラには MinGW(TDM's GCC/mingw32 Builds),coreutilsや patchなどの UNIX系コマンドには Cygwin/を利用します.今回,環境の構築には,gnupackを使います.gnupackのインストール手順は以下のとおりです.

  1. Sourceforge.jpから最新の gnupack develを取得.(ここでは gnupack_devel-4.05a.exeと仮定)
  2. 取得した gnupack_devel-4.05a.exeを実行し,C:\に展開.
  3. C:\gnupack_devel-4.05a\bash.exeを実行.
  4. Bash上で gcc --versionを実行し,以下のように表示されることを確認.
    [/]# gcc --version
    gcc.exe (tdm-1) 4.5.1
    Copyright (C) 2010 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    

ビルド前の準備

作業ディレクトリに移動します.今回は C:\tmpを作成し,そこで作業します.

[/]# # 作業ディレクトリの移動
[/]# mkdir "C:\tmp"
[/]# cd "C:\tmp"
[/c/tmp]#

ソースファイルを取得します.取得には wgetを使わずに,ブラウザからダウンロードしても問題はありません.

[/]# # ソースファイルの取得
[/c/tmp]# wget http://ftp.gnu.org/pub/gnu/emacs/emacs-23.2.tar.gz
[/c/tmp]# cksum emacs-23.2.tar.gz
4109369907 46831697 emacs-23.2.tar.gz
[/c/tmp]# tar zxf emacs-23.2.tar.gz

パッチファイルを取得します.取得には wgetを使わずに,ブラウザからダウンロードしても問題はありません.なお,wgetで取得する場合,引数で指定するURLを「'(シングルクォート)」で囲んでください.「'(シングルクォート)」がないと,bashが「&」などを構文解析してしまい,正しくファイルがダウンロードできません.

[/c/tmp]# # Emacs-23.1.92-IME+a.patchの取得
[/c/tmp]# wget 'http://sourceforge.jp/frs/redir.php?m=iij&f=%2Fgnupack%2F46325%2FEmacs-23.1.92-IME%2Ba.patch.gz'
[/c/tmp]# cksum Emacs-23.1.92-IME+a.patch.gz
3263424522 22264 Emacs-23.1.92-IME+a.patch.gz
[/c/tmp]# gzip -d Emacs-23.1.92-IME+a.patch.gz

[/c/tmp]# # Emacs-23.1.92-IME_ReConversion.patchの取得
[/c/tmp]# wget 'http://sourceforge.jp/frs/redir.php?m=iij&f=%2Fgnupack%2F46325%2FEmacs-23.1.92-IME_ReConversion.patch.gz'
[/c/tmp]# cksum Emacs-23.1.92-IME_ReConversion.patch.gz
24490718 481 Emacs-23.1.92-IME_ReConversion.patch.gz
[/c/tmp]# gzip -d Emacs-23.1.92-IME_ReConversion.patch.gz

パッチファイルを適用します.パッチ適用の成功は,echo $?の実行結果0で確認できます.

[/c/tmp]# cd emacs-23.2
[/c/tmp/emacs-23.2]# # Emacs-23.1.92-IME+a.patchの適用
[/c/tmp/emacs-23.2]# patch -b -p1 < ../Emacs-23.1.92-IME+a.patch
patching file lib-src/makefile.w32-in
patching file lisp/international/w32-ime.el
patching file lisp/loadup.el
patching file nt/configure.bat
patching file src/keyboard.c
patching file src/w32.c
patching file src/w32fns.c
Hunk #10 succeeded at 6401 (offset 4 lines).
Hunk #11 succeeded at 8190 (offset 4 lines).
Hunk #12 succeeded at 8238 (offset 4 lines).
Hunk #13 succeeded at 8297 (offset 4 lines).
Hunk #14 succeeded at 8309 (offset 4 lines).
Hunk #15 succeeded at 8329 (offset 4 lines).
patching file src/w32term.c
patching file src/w32term.h
patching file src/window.c
[/c/tmp/emacs-23.2]# echo $?
0

[/c/tmp]# # Emacs-23.1.92-IME_ReConversion.patchの適用 [/c/tmp/emacs-23.2]# patch -b -p1 < ../Emacs-23.1.92-IME_ReConversion.patch patching file src/w32fns.c Hunk #1 succeeded at 3228 (offset 57 lines). [/c/tmp/emacs-23.2]# echo $? 0

バイナリファイルのアイコンは,emacs-23.2/nt/icons/emacs.icoを置換することで変更することができます.gnupackで配布しているバイナリはhttp://sourceforge.jp/projects/gnupack/downloads/46325/emacs_icon48.gz/で置換しています.


外部DLLの準備

画像フォーマットに対応させる場合,GnuWin32から以下のファイルを入手します。

なお,gnupack develを利用している場合,必要なファイルを以下に格納済みのため,個別にダウンロードする必要はありません.

[/c/tmp/emacs-23.2]# # DLLファイルの格納場所
[/c/tmp/emacs-23.2]# ls -R "C:/gnupack_devel-4.05a/app/gnuwin32/dll"
C:/gnupack_devel-4.05a/app/gnuwin32/dll:
jpeg62.dll*     libtiff3.dll*   xpm4.dll*
libpng12.dll*   libungif4.dll*  zlib1.dll*

[/c/tmp/emacs-23.2]# # ヘッダの格納場所
[/c/tmp/emacs-23.2]# ls -R "C:/gnupack_devel-4.05a/app/gnuwin32/include"
C:/gnupack_devel-4.05a/app/gnuwin32/include:
gif_lib.h       jpeglib.h       simx.h          tiffvers.h
jconfig.h       libpng12/       tiff.h          X11/
jerror.h        png.h           tiffconf.h      zconf.h
jmorecfg.h      pngconf.h       tiffio.h        zlib.h

C:/gnupack_devel-4.05a/app/gnuwin32/include/libpng12:
png.h  pngconf.h

[/c/tmp/emacs-23.2]# # ライブラリの格納場所
[/c/tmp/emacs-23.2]# ls -R "C:/gnupack_devel-4.05a/app/gnuwin32/lib"
C:/gnupack_devel-4.05a/app/gnuwin32/lib:
jpeg.def                libpng-bcc.lib          libXpm.dll.a
jpeg.lib                libtiff.def             libXpm.lib
jpeg-bcc.lib            libtiff.dll.a           libXpm-bcc.lib
libjpeg.dll.a           libtiff.lib             libz.a
libpng.dll.a            libtiff-bcc.lib         libz.dll.a
libpng.la               libungif.def            pkgconfig/
libpng.lib              libungif.dll.a          xpm.def
libpng12.def            libungif.lib            zlib.def
libpng12.dll.a          libungif-bcc.lib        zlib.lib
libpng12.la             libXpm.a                zlib-bcc.lib

C:/gnupack_devel-4.05a/app/gnuwin32/lib/pkgconfig:
libpng.pc  libpng12.pc  xpm.pc

ビルドの実行

まず configure.batを実行し,makefileを生成します.ここでは便宜上,GnuWin32の格納パスと NTEmacsのインストールパスを環境変数に設定しています.このとき,パスの区切り文字に「\(バックスラッシュ)」を指定すると make install時にパスの構文解析が失敗し,インストールが失敗するのでご注意ください.

[/c/tmp/emacs-23.2]# # GnuWin32格納パスの設定
[/c/tmp/emacs-23.2]# gnuwin32="C:/gnupack_devel-4.05a/app/gnuwin32"
[/c/tmp/emacs-23.2]# echo $gnuwin32
C:/gnupack_devel-4.05a/app/gnuwin32

[/c/tmp/emacs-23.2]# # NTEmacsインストールパスの設定
[/c/tmp/emacs-23.2]# prefix="C:/emacs"
[/c/tmp/emacs-23.2]# echo $prefix
C:/emacs

[/c/tmp/emacs-23.2]# cd nt
[/c/tmp/emacs-23.2/nt]# ./configure.bat --prefix $prefix --no-debug --with-gcc --no-cygwin --enable-w32-ime --cflags -O3 --cflags -fno-tree-vectorize --cflags -funsigned-char --cflags -mthreads --cflags -pipe --cflags -DRECONVERSION --cflags -D_UNICODE --cflags -I"$gnuwin32/include" --ldflags -L"$gnuwin32/lib"
Checking for 'cp'...
Checking for 'rm'...
Checking for Windows Version ...
Checking whether W32 API headers are too old...

C:\tmp\emacs-23.2\nt>gcc -O3 -fno-tree-vectorize -funsigned-char -mthreads -pipe -DRECONVERSION -D_UNICODE -IC:\gnupack_devel-4.05a\app\gnuwin32\include -DWINVER=0x0501 -mno-cygwin -c junk.c
Using 'gcc'
Checking for libpng...
...PNG header available, building with PNG support.
Checking for jpeg-6b...
...JPEG header available, building with JPEG support.
Checking for libgif...
...GIF header available, building with GIF support.
Checking for tiff...
...TIFF header available, building with TIFF support.
Checking for libXpm...
...XPM header available, building with XPM support.

<snip>

Emacs successfully configured.
Run `make' to build, then run `make install' to install.

なお,configure.batの結果,「XXX header available, building with XXX support.」にならずに「xxx.h not found, building without XXX support.」と表示された場合,画像関連のライブラリが正しく設定できていないため,画像フォーマット対応のバイナリは作成できませんのでご注意ください.特に simx.hは見逃しがちのようなのでご注意ください(xpm-3.5.1-1-src.zipsrc/xpm/3.5.1/libXpm-3.5.1-src/lib/simx.hにあります)

画像フォーマットのサポートが不要な場合,configure.batを以下のように実行してください.

[/c/tmp/emacs-23.2/nt]# ./configure.bat --prefix $prefix --no-debug --with-gcc --no-cygwin --enable-w32-ime --cflags -O3 --cflags -fno-tree-vectorize --cflags -funsigned-char --cflags -mthreads --cflags -pipe --cflags -DRECONVERSION --cflags -D_UNICODE --without-png --without-jpeg --without-gif --without-tiff --without-xpm

makefaileが作成できたら,makeを実行します.今回,コンパイラに MinGW(TDM's GCC/mingw32 Builds)を使用するので,makeコマンドは mingw32-makeを使います.

なお,makeの際,コンパイルオプションを指定することでビルド環境に最適なバイナリを生成することも可能です.ちなみに,私の環境(Intel Core2Duo 6600/Memory 2GB)で mingw32-make bootstrapは約30分かかりました.

[/c/tmp/emacs-23.2/nt]# mingw32-make ARCH_CFLAGS="-c -march=pentium-m -msse4.1 -mfpmath=sse -pipe" bootstrap

makeが成功したら,make installを実行し,画像関連のDLLを emacs.exeと同じディレクトリにコピーしてビルド終了です.

[/c/tmp/emacs-23.2/nt]# mingw32-make install
[/c/tmp/emacs-23.2/nt]# cp $gnuwin32/dll/* $prefix/bin

ビルドした NTEmacsは C:\emacs\bin\runemacs.exeの実行で起動できます.NTEmacsの起動後に M-: (eval 'image-types)と実行して,「(png gif tiff jpeg xpm xbm pbm)」が表示されれば画像フォーマットのサポートができていることが確認できます.

スポンサーサイト

コメントの投稿

非公開コメント

リンク
最新コメント
カテゴリー
最近の記事
月別アーカイブ
ブログ内検索
最新トラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。