NATIVE_FULL_AOT=1
を付けると lisp
以下の全部のファイルがネイティブコンパイルされる。
$ ./configure --with-native-compilation
$ make bootstrap NATIVE_FULL_AOT=1
$ sudo make install
http://ftpmirror.gnu.org/emacs/ からダウンロードした場合 make
ではなく make bootstrap
にしないと eln
が一部のファイルにしか作られない。理由は tar 玉の中に elc が入ってるから。そのせいで以下のサフィックスルールで batch-byte+native-compile
が動かない。
.el.elc:
$(AM_V_ELC)$(emacs) $(BYTE_COMPILE_FLAGS) \
-l comp -f batch-byte+native-compile $<
make bootstrap
すると elc
が削除されてこのサフィックスルールが動くようになる。
ArchLinux の emacs-nativecomp 28.1-3 にも同様の問題があって、一部の elnしか含まれてない。この問題は https://bugs.archlinux.org/task/74433 で解決するはず。
ただ、ビルド結果に eln
が含まれてなくても JIT で eln
が作られるからネイティブコンパイルの恩恵はうけられる。自分でビルドする場合なら使わないファイルをコンパイルする時間が無駄だから NATIVE_FULL_AOT=1
じゃなくてもいいし make bootstrap
しなくてもいいかもね。とは思う。パッケージされたファイルには入ってて欲しい。