Next: , Up: GNU Emacs Internals   [Contents][Index]


E.1 Emacsのビルド

このセクションではEmacs実行可能形式のビルドに関するステップの説明をします。makefileがこれらすべてを自動的に行うので、Emacsをビルドやインストールをするためにこの題材を知る必要はありません。この情報はEmacs開発者に適しています。

EmacsのビルドにはGNU Makeのバージョン3.81以降が必要です。

srcディレクトリー内のCソースファイルをコンパイルすることにより、temacsと呼ばれる実行可能形式ファイルが生成されます。これはbare impure Emacs(裸で不純なEmacs)とも呼ばれます。これにはEmacs LispインタープリターとI/Oルーチンが含まれますが編集コマンドは含まれません。

コマンドtemacs -l loaduptemacsを実行してloadup.elをロードするように計らいます。loadupライブラリーは通常のEmacs編集環境をセットアップする追加のLispライブラリーをロードします。このステップの後にはEmacs実行可能形式はbare(裸)ではなくなります。

標準的なLispファイルのロードには若干の時間を要するので、ユーザーが直接temacs実行可能形式を実行することは通常はありません。そのかわり、Emacsビルドの最終ステップとしてコマンド‘temacs -batch -l loadup dump’が実行されます。特別な引数‘dump’によりtemacsemacsと呼ばれる実行可能形式のプログラムにダンプされます。これには標準的なLispファイルがすべて事前ロードされています(引数‘-batch’はtemacsがその端末上でデータの初期化を試みることを防げるので端末情報のテーブルはダンプされたEmacsでは空になる)。

ダンプされたemacs実行可能形式(純粋なEmacsとも呼ばれる)がインストールされるEmacsになります。変数preloaded-file-listにはダンプ済みEmacsに事前ロードされるLispファイルのリストが格納されています。新たなオペレーティングシステムにEmacsをポートする際に、そのOSがダンプを実装していなければEmacsは起動時に毎回loadup.elをロードしなければなりません。

site-load.elという名前のライブラリーを記述することにより、事前ロードするファイルを追加指定できます。追加するファイルを保持するために純粋(pure)なスペースnバイトを追加するように、以下の定義

#define SITELOAD_PURESIZE_EXTRA n

でEmacsをリビルドする必要があるでしょう。src/puresize.hを参考にしてください(十分大きくなるまで20000ずつ増加させる)。しかし追加ファイルの事前ロードの優位はマシンの高速化により減少します。現代的なマシンでは通常はお勧めしません。

loadup.elsite-load.elを読み込んだ後にSnarf-documentationを呼び出すことにより、それらが格納された場所のファイルetc/DOC内にあるプリミティブと事前ロードされる関数(と変数)のドキュメント文字列を探します(Accessing Documentationを参照)。

site-init.elという名前のライブラリー名に配置することにより、ダンプ直前に実行する他のLisp式を指定できます。このファイルはドキュメント文字列を見つけた後に実行されます。

関数や変数の定義を事前ロードしたい場合には、それを行うために3つの方法があります。それらにより定義ロードしてその後のEmacs実行時にドキュメント文字列をアクセス可能にします:

通常の未変更のEmacsでユーザーが期待する何らかの機能を変更するような何かをsite-load.elsite-init.el内に配置することはお勧めしません。あなたのサイトで通常の機能をオーバーライドしなければならないと感じた場合には、default.elでそれを行えばユーザーが望む場合にあなたの変更をオーバーライドできます。Startup Summaryを参照してください。site-load.elsite-init.elのいずれかがload-pathを変更する場合には変更はダンプ後に失われます。Library Searchを参照してください。load-pathを永続的に変更するにはconfigure--enable-locallisppathオプションを指定してください。

事前ロード可能なパッケージでは、その後のEmacsスタートアップまで特定の評価の遅延が必要(または便利)なことがあります。そのようなケースの大半はカスタマイズ可能な変数の値に関するものです。たとえばtutorial-directoryは事前ロードされるstartup.el内で定義される変数です。これのデフォルト値はdata-directoryにもとづいてセットされます。この変数はEmacsダンプ時ではなくスタート時にdata-directoryの値を必要とします。なぜならEmacs実行可能形式はダンプされたものなので、恐らく異なる場所にインストールされるからです。

Function: custom-initialize-delay symbol value

この関数は次回のEmacs開始までsymbolの初期化を遅延する。通常はカスタマイズ可能変数の:initializeプロパティとしてこの関数を指定することにより使用する(引数valueはフォームCustom由来の互換性のためだけに提供されており使用しない)。

custom-initialize-delayが提供するより一般的な機能を要する稀なケースではbefore-init-hookを使用できます(Startup Summaryを参照)。

Function: dump-emacs to-file from-file

この関数はEmacsのカレント状態を実行可能ファイルto-fileにダンプする。これはfrom-file (通常はファイルtemacs)からシンボルを取得する。

すでにダンプ済みのEmacs内でこの関数を使用する場合には‘-batch’でEmacsを実行しなければならない。