Carbon版 Emacs 22.1 を Build する

Carbon版 Emacs 22.1 をビルドして使っています。その方法を紹介しておきます。

  1. まえがき
  2. 環境の整備
  3. インストール

関連ページは

1. まえがき

最近は、銭谷さん版CarbonEmacsや、AquaMacs 等々パッケージになった物も、多く配布されていますが、私は、昔ながらに、自家ビルドしています。

又、最近、ビルドの方法を紹介したページも、散見しますが、ちょっと勘違いかな?見たいな所も見受けられるので、私の理解している所を紹介しておきます。


2. 環境の整備

MacOSX 用の開発ツール、Xcode が必要です。


3. インストール

3.1. References

3.1.1. 本体

Homepage
http://savannah.gnu.org/projects/emacs/
Source
http://savannah.gnu.org/files/?group=emacs
ここから emacs-22.1.tar.gz を頂きます。

3.1.2. 半透明化パッチ

Homepage
http://homepage.mac.com/matsuan_tamachan/emacs/TransparencyPatch.html
Source
http://sourceforge.jp/projects/macemacsjp/files/
ここから、Transparency3 パッチを持ってきます。

3.1.3. メニューバーは要らないよパッチ

Homepage
http://homepage.mac.com/matsuan_tamachan/emacs/HideMenubar.html
Source
http://sourceforge.jp/projects/macemacsjp/files/
ここから、hide_menubar パッチを持ってきます。

speedbar 等と相性悪いので、銭谷さん版CarbonEmacs には収録されていません。

でも、私的には、Emacs には、メニューバー、ツールバー、スクロールバーは要らないので、パッチを当てます。


3.1.4. MacUIM 対応パッチ

Homepage
http://lists.gnu.org/archive/html/emacs-devel/2007-06/msg01905.html
Source
--- macterm.c.orig	2007-02-13 17:28:39.000000000 +0900
+++ macterm.c	2007-03-09 17:21:29.000000000 +0900
@@ -10198,6 +10198,8 @@
 	  {
 	    /* Active input area is displayed in the echo area.  */
 	    w = XWINDOW (echo_area_window);
+	    if (!w)
+	      return eventNotHandledErr;
 	    f = WINDOW_XFRAME (w);
 	  }
 	else
これを、MacUIM.patch として、保存しておきます。

MacUIM がアクティブだと、Carbon Emacs の起動に失敗します。で、このパッチを当てます。

尚、2007-07 以降の CVS では、違った方法で回避されています。


3.1.5. Leopard 対応パッチ

Homepage
http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-10/msg00196.html

Leopard になってから、その侭では Build 出来なくなったので、Yamamoto さんが、bug-gnu-emacs に投稿されたパッチを当てます。でも、22-BASE 用なの、ちょっと手直しして、22.1 用にしたものを、こちらに置いておきます。


3.2. make & install

以下に紹介する方法では、"make bootstrap" をしていません。実は、リリース版 lisp file は、既に、バイトコンパイルしてあるので、bootstrap は必要無いのです。

その分、一度、素の状態でビルドしてから、パッチを当てて、再度必要なファイルだけコンパイルし直すことになるので、手数は増えますが、時間は大幅に節約できます。

一度目のビルド
$ tar zxvf emacs-22.1.tar.gz
$ tar zxvf transparency-3.1.0.tar.gz
$ tar zxvf hide_menubar.tar.gz
$ mkdir carbon
$ cd carbon
$ patch -p1 <../unexmacosx.c.patch  ## for Leopard
$ ../emacs-22.1/configure CFLAGS="-O3 -pipe" --prefix=/Applications/Emacs.app/Contents/Resources --enable-carbon-app=/Applications --without-x
$ make
パッチを当てる
$ cd ../emacs-22.1
$ patch -p0 <../transparensy3/transparency3.patch
$ patch -p1 <../hide_menubar.patch
$ cd src
$ patch -p0 <../../MacUIM.patch
$ cd ../../carbon
二度目のビルド
$ ../emacs-22.1/configure CFLAGS="-O3 -pipe" --prefix=/Applications/Emacs.app/Contents/Resources --enable-carbon-app=/Applications --without-x
$ make
$ cd lisp
$ make recompile
$ cd ..
$ make all
$ sudo make install

4回 make してますが、各々、

  1. 素の状態の Emacs をビルドする
  2. パッチを当てた、c のソースファイルをコンパイルし直す
  3. パッチを当てた、lisp ファイルをコンパイルし直す
  4. DOC ファイルを再構築

な、意味が有ります。

又、ソースは、emacs-22.1 フォルダに有るのに、ビルドは、carbon フォルダで実施しています。分けることにより、同一のソースから、コンパイルオプションを変えたバイナリを作ったり、複数のターゲットマシン用のバイナリをクロスビルドすることが容易になります。