* Workaround the 32768 chars command line limit in Windows.

* lisp/emacs-lisp/comp.el (comp-run-async-workers): Pass the
compilation commands through a temporary file that is loaded by the
child process. This is also done all other operating systems, even
those that support long command lines. It should not be a problem
since libgccjit uses temporary files too.
This commit is contained in:
Nicolás Bértolo 2020-05-08 14:04:06 -03:00 committed by Andrea Corallo
parent 21aef26a4c
commit 60b326ef11

View file

@ -2337,6 +2337,10 @@ display a message."
(_ (progn
(comp-log "\n")
(comp-log (prin1-to-string expr))))
(temp-file (make-temp-file
(concat "emacs-async-comp-"
(file-name-base source-file) "-")
nil ".el" (prin1-to-string expr)))
(load1 load)
(process (make-process
:name (concat "Compiling: " source-file)
@ -2344,13 +2348,14 @@ display a message."
:command (list
(expand-file-name invocation-name
invocation-directory)
"--batch" "--eval" (prin1-to-string expr))
"--batch" "-l" temp-file)
:sentinel
(lambda (process _event)
(run-hook-with-args
'comp-async-cu-done-hook
source-file)
(accept-process-output process)
(ignore-errors (delete-file temp-file))
(when (and load1
(zerop (process-exit-status process)))
(native-elisp-load