2009年12月22日火曜日

NTEmacs23.1 + IME.patch をビルドする

いろんなところに同じような記事があるが、自分用覚え書き。

注意点はmake-3.80を使わなければならないところ。
Cygwinでは3.81しか準備されていないので、自分でmakeをインストールする必要がある。

1. 必要なパッケージの準備

以下のようなパッケージ群をsetup.exeを使ってインストールしておく
$ cygcheck -s | egrep '^(gcc|mingw|make)'
gcc 3.4.4-999
gcc-core 3.4.4-999
gcc-g++ 3.4.4-999
gcc-mingw 20040810-1
gcc-mingw-core 20050522-1
gcc-mingw-g++ 20050522-1
make 3.81-2
mingw-bzip2 1.0.5-3
mingw-libbz2-devel 1.0.5-3
mingw-libbz2_1 1.0.5-3
mingw-runtime 3.17-1
mingw-zlib 1.2.3-3
mingw-zlib-devel 1.2.3-3
mingw-zlib0 1.2.3-3

2. make-3.80のインストール

make-3.80を自前インストールする
$ mkdir ~/src
$ cd ~/src
$ wget ftp://ftp.gnu.org/gnu/make/make-3.80.tar.bz2
$ tar jxvf make-3.80.tar.bz2
$ cd make-3.80
$ ./configure --prefix=/usr --program-suffix=-3.80
$ make
$ make install
$ ls /usr/bin/make-3.80
/usr/bin/make-3.80

3. 画像サポートのための準備

まず、画像サポートを有効にするための準備。

GnuWin32から以下のようなDLLとヘッダーファイルを用意する。
以下のようなzipファイルをダウンロードして展開し、中から.dllや.hファイルだけを抜き出す。
\ls -Rgo
.:
合計 3528
drwx------+ 3 0 Nov 29 22:10 DLL
-rwx------+ 1 1793 Nov 29 22:06 get.sh
-rw-r--r-- 1 189242 May 15 2005 jpeg-6b-4-bin.zip
-rw-r--r-- 1 38186 May 15 2005 jpeg-6b-4-lib.zip
-rw-r--r-- 1 401037 Jun 5 05:53 libpng-1.2.37-bin.zip
-rw-r--r-- 1 134939 Jun 5 05:55 libpng-1.2.37-lib.zip
-rw-r--r-- 1 285963 Mar 2 2007 libungif-4.1.4-1-bin.zip
-rw-r--r-- 1 12272 Mar 2 2007 libungif-4.1.4-1-lib.zip
-rw-r--r-- 1 928480 Mar 2 2007 libungif-4.1.4-1-src.zip
-rw-r--r-- 1 687244 Mar 31 2006 tiff-3.8.2-1-bin.zip
-rw-r--r-- 1 38372 Mar 31 2006 tiff-3.8.2-1-lib.zip
-rw-r--r-- 1 35884 Feb 15 2005 xpm-3.5.1-1-bin.zip
-rw-r--r-- 1 42484 Feb 15 2005 xpm-3.5.1-1-lib.zip
-rw-r--r-- 1 622191 Feb 15 2005 xpm-3.5.1-1-src.zip
-rw-r--r-- 1 99777 Jul 26 2005 zlib-1.2.3-bin.zip
-rw-r--r-- 1 71569 Jul 26 2005 zlib-1.2.3-lib.zip

./DLL:
合計 1613
drwx------+ 2 0 Nov 29 22:09 X11
-rwx------+ 1 16189 Oct 25 2005 gif_lib.h
-rwx------+ 1 1800 May 15 2005 jconfig.h
-rwx------+ 1 14488 May 15 2005 jerror.h
-rwx------+ 1 14567 May 15 2005 jmorecfg.h
-rwx------+ 1 127488 May 15 2005 jpeg62.dll
-rwx------+ 1 46359 May 15 2005 jpeglib.h
-rwx------+ 1 260096 Jun 5 05:48 libpng12.dll
-rwx------+ 1 260096 Jun 5 05:48 libpng3.dll
-rwx------+ 1 376832 Mar 28 2006 libtiff3.dll
-rwx------+ 1 31232 Mar 2 2007 libungif4.dll
-rwx------+ 1 153839 Jun 5 05:40 png.h
-rwx------+ 1 45382 Jun 5 05:40 pngconf.h
-rwx------+ 1 33725 Dec 27 2005 tiff.h
-rwx------+ 1 2968 Mar 24 2006 tiffconf.h
-rwx------+ 1 23216 Mar 28 2006 tiffio.h
-rwx------+ 1 410 Mar 23 2006 tiffvers.h
-rwx------+ 1 52224 Feb 14 2005 xpm4.dll
-rwx------+ 1 9544 Jul 21 2005 zconf.h
-rwx------+ 1 66188 Jul 18 2005 zlib.h
-rwx------+ 1 75264 Jul 21 2005 zlib1.dll

./DLL/X11:
合計 16
-rwx------+ 1 16286 Jan 25 2004 xpm.h

4. NTEmacs-23.1のインストール

まずemacs-23.1のソースコードを公式ページからダウンロードします。
$ mkdir ~/usr
$ cd ~/usr
$ wget http://ftp.gnu.org/pub/gnu/emacs/emacs-23.1.tar.bz2

つぎに、TaijiからIMEパッチをダウンロードし展開、パッチを当て、コンパイルする。

$ wget
$ tar jxvf emacs-23.1.tar.bz2
$ cd emacs-23.1
$ patch -p1 < ../Emacs-23.1-IME.patch




Gygwinの/usr/bin/gccがシンボリックリンクなのでコマンドが見つからない問題を回避するため、
configure.batファイルでgccを参照しているところをgcc-3に書き換える。
以下のパッチを当ててもOK.(参考サイト
--- ../emacs-23.1.org/nt/configure.bat 2009-08-06 13:29:05.061912900 +0900
+++ nt/configure.bat 2009-08-06 13:30:23.116085200 +0900
@@ -141,7 +141,7 @@
goto again
rem ----------------------------------------------------------------------
:withgcc
-set COMPILER=gcc
+set COMPILER=gcc-3
shift
goto again
rem ----------------------------------------------------------------------
@@ -293,11 +293,11 @@
rem Auto-detect compiler if not specified, and validate GCC if chosen.
:checkcompiler
if (%COMPILER%)==(cl) goto compilercheckdone
-if (%COMPILER%)==(gcc) goto checkgcc
+if (%COMPILER%)==(gcc-3) goto checkgcc

echo Checking whether 'gcc' is available...
echo main(){} >junk.c
-gcc -c junk.c
+gcc-3 -c junk.c
if exist junk.o goto checkgcc

echo Checking whether 'cl' is available...
@@ -316,10 +316,10 @@
echo #include "cygwin/version.h" >junk.c
echo main(){} >>junk.c
echo gcc -c junk.c >>config.log
-gcc -c junk.c >>config.log 2>&1
+gcc-3 -c junk.c >>config.log 2>&1
if not exist junk.o goto chkapi
echo gcc -mno-cygwin -c junk.c >>config.log
-gcc -mno-cygwin -c junk.c >>config.log 2>&1
+gcc-3 -mno-cygwin -c junk.c >>config.log 2>&1
if exist junk.o set nocygwin=Y

:chkapi
@@ -348,10 +348,10 @@
set cf=%usercflags% -mno-cygwin
:chkapi2
echo on
-gcc %cf% -c junk.c
+gcc-3 %cf% -c junk.c
@echo off
@echo gcc %cf% -c junk.c >>config.log
-gcc %cf% -c junk.c >>config.log 2>&1
+gcc-3 %cf% -c junk.c >>config.log 2>&1
set cf=
if exist junk.o goto gccOk
echo The failed program was: >>config.log
@@ -367,14 +367,14 @@
goto end

:gccOk
-set COMPILER=gcc
+set COMPILER=gcc-3
echo Using 'gcc'
rm -f junk.c junk.o
Rem It is not clear what GCC version began supporting -mtune
Rem and pentium4 on x86, so check this explicitly.
echo main(){} >junk.c
echo gcc -c -O2 -mtune=pentium4 junk.c >>config.log
-gcc -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1
+gcc-3 -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1
if not errorlevel 1 goto gccMtuneOk
echo The failed program was: >>config.log
type junk.c >>config.log
@@ -389,7 +389,7 @@
rem Check for DWARF-2 debug info support, else default to stabs
echo main(){} >junk.c
echo gcc -c -gdwarf-2 -g3 junk.c >>config.log
-gcc -c -gdwarf-2 -g3 junk.c >>config.log 2>&1
+gcc-3 -c -gdwarf-2 -g3 junk.c >>config.log 2>&1
if not errorlevel 1 goto gccdwarf
echo The failed program was: >>config.log
type junk.c >>config.log
@@ -588,7 +588,7 @@
rem ----------------------------------------------------------------------
:genmakefiles
echo Generating makefiles
-if %COMPILER% == gcc set MAKECMD=gmake
+if %COMPILER% == gcc-3 set MAKECMD=gmake
if %COMPILER% == cl set MAKECMD=nmake

rem Pass on chosen settings to makefiles.

上のパッチを当てる
$ patch -p1 < ../emacs-23.1-gcc3.patch




ビルド、インストールを行う。
cygwinのターミナルから
$ LANG=C ./configure.bat --enable-w32-ime --with-gcc --no-cygwin --no-debug --cflags -D_UNICODE --cflags -DRECONVERSION --cflags=-I/usr/local/include --cflags=-I~/src/dlls --prefix=c:/path/to/install
$ make bootstrap
$ make install
$ cp =/src/dlls/*.dll c:/path/to/install/bin

参考サイト
プログラム番長のヲボエガキ
u-ch

0 件のコメント:

コメントを投稿

フォロワー