diff options
author | Andrea Corallo <akrl@sdf.org> | 2021-10-04 21:15:02 +0200 |
---|---|---|
committer | Andrea Corallo <akrl@sdf.org> | 2021-10-04 21:55:57 +0200 |
commit | e606cc6f4023a3b20179ed51e339941be7c36bd2 (patch) | |
tree | 7a9af0f51c4165b5544de045624bdb71058026a9 /lisp/emacs-lisp | |
parent | 894dfe70da2dbeb218e8a0a58ee5e860f0fe9e4e (diff) | |
download | emacs-e606cc6f4023a3b20179ed51e339941be7c36bd2.tar.gz emacs-e606cc6f4023a3b20179ed51e339941be7c36bd2.tar.bz2 emacs-e606cc6f4023a3b20179ed51e339941be7c36bd2.zip |
* Fix `batch-native-compile' not to spawn a subprocess
* lisp/emacs-lisp/comp.el (comp-running-batch-compilation): New var.
(comp-final): Use it.
(batch-native-compile): Bind `comp-running-batch-compilation' it.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/comp.el | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 94753ec3d9b..63d4a74b546 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -3653,6 +3653,9 @@ Prepare every function for final compilation and drive the C back-end." (defvar comp-async-compilation nil "Non-nil while executing an asynchronous native compilation.") +(defvar comp-running-batch-compilation nil + "Non-nil when compilation is driven by any `batch-*-compile' function.") + (defun comp-final (_) "Final pass driving the C back-end for code emission." (maphash #'comp-compute-function-type (comp-ctxt-funcs-h comp-ctxt)) @@ -3661,7 +3664,7 @@ Prepare every function for final compilation and drive the C back-end." ;; unless during bootstrap or async compilation (bug#45056). GCC ;; leaks memory but also interfere with the ability of Emacs to ;; detect when a sub-process completes (TODO understand why). - (if (or byte+native-compile comp-async-compilation) + (if (or comp-running-batch-compilation comp-async-compilation) (comp-final1) ;; Call comp-final1 in a child process. (let* ((output (comp-ctxt-output comp-ctxt)) @@ -4202,9 +4205,10 @@ as part of building the source tarball, in which case the .eln file will be placed under the native-lisp/ directory (actually, in the last directory in `native-comp-eln-load-path')." (comp-ensure-native-compiler) - (let ((native-compile-target-directory - (if for-tarball - (car (last native-comp-eln-load-path))))) + (let ((comp-running-batch-compilation t) + (native-compile-target-directory + (if for-tarball + (car (last native-comp-eln-load-path))))) (cl-loop for file in command-line-args-left if (or (null byte+native-compile) (cl-notany (lambda (re) (string-match re file)) |