summaryrefslogtreecommitdiff
path: root/lisp/loadup.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/loadup.el')
-rw-r--r--lisp/loadup.el15
1 files changed, 15 insertions, 0 deletions
diff --git a/lisp/loadup.el b/lisp/loadup.el
index 3b2d4e34938..acc5feab9a5 100644
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -252,6 +252,21 @@
;For other systems, you must edit ../src/Makefile.in.
(load "site-load" t)
+;; ¡¡¡ Big Ugly Hack !!!
+;; src/boostrap-emacs is mostly used to compile .el files, so it needs
+;; macroexp, bytecomp, cconv, and byte-opt to be fast. Generally this is done
+;; by compiling those files first, but this only makes a difference if those
+;; files are not preloaded. As it so happens, macroexp.el tends to be
+;; accidentally preloaded in src/boostrap-emacs because cl.el and cl-macs.el
+;; require it. So lets unload it here, if needed, to make sure the
+;; byte-compiled version is used.
+(if (or (not (fboundp 'macroexpand-all))
+ (byte-code-function-p (symbol-function 'macroexpand-all)))
+ nil
+ (fmakunbound 'macroexpand-all)
+ (setq features (delq 'macroexp features))
+ (autoload 'macroexpand-all "macroexp"))
+
;; Determine which last version number to use
;; based on the executables that now exist.
(if (and (or (equal (nth 3 command-line-args) "dump")