1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-24 07:20:37 +00:00

Add trampoline AOT compilation target (bug#58318)

* Makefile.in (trampolines): New target.
* lisp/Makefile.in (trampolines): Likewise.
* lisp/emacs-lisp/comp.el (comp-compile-all-trampolines): New
function.
This commit is contained in:
Andrea Corallo 2022-10-11 21:17:55 +02:00
parent 61b6da5ace
commit 3744720904
3 changed files with 22 additions and 0 deletions

View File

@ -530,6 +530,11 @@ lisp: src
lib lib-src lisp nt: Makefile
$(MAKE) -C $@ all
trampolines: src lisp
ifeq ($(HAVE_NATIVE_COMP),yes)
$(MAKE) -C lisp trampolines
endif
# Pass an unexpanded $srcdir to src's Makefile, which then
# expands it using its own value of srcdir (which points to the
# source directory of src/).

View File

@ -430,6 +430,12 @@ compile-always:
find $(lisp) -name '*.elc' $(FIND_DELETE)
$(MAKE) compile
.PHONY: trampolines
trampolines: compile
ifeq ($(HAVE_NATIVE_COMP),yes)
$(emacs) -l comp -f comp-compile-all-trampolines
endif
.PHONY: backup-compiled-files compile-after-backup
# Backup compiled Lisp files in elc.tar.gz. If that file already

View File

@ -4204,6 +4204,17 @@ bytecode definition was not changed in the meantime)."
;;; Compiler entry points.
(defun comp-compile-all-trampolines ()
"Pre-compile AOT all trampolines."
(let ((comp-running-batch-compilation t)
;; We want to target only the 'native-lisp' directory.
(native-compile-target-directory
(car (last native-comp-eln-load-path))))
(mapatoms (lambda (f)
(when (subr-primitive-p (symbol-function f))
(message "Compiling trampoline for: %s" f)
(comp-trampoline-compile f))))))
;;;###autoload
(defun comp-lookup-eln (filename)
"Given a Lisp source FILENAME return the corresponding .eln file if found.