summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorNicolás Bértolo <nicolasbertolo@gmail.com>2020-05-08 14:04:06 -0300
committerAndrea Corallo <akrl@sdf.org>2020-05-23 09:36:52 +0100
commit60b326ef112b6196cccf8bf9508df9e6622285cb (patch)
tree94000122eb6e518dc43c5840e64860fe9ec88eab /lisp/emacs-lisp
parent21aef26a4c0234c3af6e3fdd269292a726aa0f48 (diff)
downloademacs-60b326ef112b6196cccf8bf9508df9e6622285cb.tar.gz
emacs-60b326ef112b6196cccf8bf9508df9e6622285cb.tar.bz2
emacs-60b326ef112b6196cccf8bf9508df9e6622285cb.zip
* 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.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/comp.el7
1 files changed, 6 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index 9fe614f9e94..e5d3be6eed0 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -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