mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-22 18:35:09 +00:00
Replace ldefs-boot with a much smaller file
* Makefile.in (bootstrap-build,generate-ldefs-boot): New targets. (bootstrap): Depend on bootstrap-build. * admin/ldefs-clean.el: New file. * lisp/Makefile.in (compile-first): Depend on loaddefs.el * lisp/ldefs-boot.el: Remove. * lisp/ldefs-boot-auto.el: New file. * lisp/ldefs-boot-manual.el: New file. * lisp/loadup.el: Load ldefs-boot-manual.el. * src/emacs.c (generating_ldefs_boot): New variable. (main): Check whether we are generating ldefs. * src/eval.c (autoload-do-load): Dump autoload forms to stderr when requested. * src/lisp.h (generating_ldefs_boot): New variable. * admin/gitmerge.el, admin/make-tarball.txt, admin/notes/copyright, lisp/Makefile.in, lisp/cus-dep.el, lisp/emacs-lisp/elint.el, lisp/finder.el, lisp/loadup.el, msdos/mainmake.v2: Update reference to ldefs-boot. * admin/update_autogen: Alter mechanism for ldefs-boot generation.
This commit is contained in:
parent
9e6618beca
commit
c27b645956
19
Makefile.in
19
Makefile.in
@ -1117,7 +1117,9 @@ check-info: info
|
||||
# * Run autogen.sh.
|
||||
# * Rebuild Makefile, to update the build procedure itself.
|
||||
# * Do the actual build.
|
||||
bootstrap: bootstrap-clean
|
||||
bootstrap: | bootstrap-clean bootstrap-build
|
||||
|
||||
bootstrap-build:
|
||||
cd $(srcdir) && ./autogen.sh
|
||||
$(MAKE) MAKEFILE_NAME=force-Makefile force-Makefile
|
||||
$(MAKE) all
|
||||
@ -1180,3 +1182,18 @@ check-declare:
|
||||
exit 1; \
|
||||
fi
|
||||
$(MAKE) -C lisp $@
|
||||
|
||||
## Generating ldefs-boot-auto.el requires a completely clean build so
|
||||
## that we can see which autoloads are actually called. The build has
|
||||
## to complete because we use Emacs to clean the results up! We use
|
||||
## loaddefs.el in place of ldefs-boot-auto, because if we are running
|
||||
## this there is the possibility that ldefs-boot-auto is not
|
||||
## sufficient for bootstrap.
|
||||
generate-ldefs-boot: all
|
||||
echo "Generating Bootstrap ldefs"
|
||||
cp lisp/loaddefs.el lisp/ldefs-boot-auto.el
|
||||
$(MAKE) -j 1 bootstrap \
|
||||
GENERATE_LDEFS_BOOT="generate-ldefs-boot" \
|
||||
2>&1 | tee lisp/ldefs-boot-auto.temp
|
||||
$(EMACS) -batch --load admin/ldefs-clean.el --funcall ldefs-clean
|
||||
rm lisp/ldefs-boot-auto.temp
|
||||
|
@ -292,7 +292,7 @@ Returns non-nil if conflicts remain."
|
||||
))
|
||||
;; Try to resolve the conflicts.
|
||||
(cond
|
||||
((member file '("configure" "lisp/ldefs-boot.el"
|
||||
((member file '("configure" "lisp/ldefs-boot-auto.el"
|
||||
"lisp/emacs-lisp/cl-loaddefs.el"))
|
||||
;; We are in the file's buffer, so names are relative.
|
||||
(call-process "git" nil t nil "checkout" "--"
|
||||
|
63
admin/ldefs-clean.el
Normal file
63
admin/ldefs-clean.el
Normal file
@ -0,0 +1,63 @@
|
||||
;; Copyright (C) 2016 Free Software Foundation, Inc.
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file takes the output from the "generate-ldefs-boot" make
|
||||
;; target, takes the relevant autoload forms, removes everything else
|
||||
;; and adds some comments.
|
||||
|
||||
(defun ldefs-clean-uniquify-region-lines (beg end)
|
||||
"Remove duplicate adjacent lines in region."
|
||||
(save-excursion
|
||||
(goto-char beg)
|
||||
(while (re-search-forward "^\\(.*\n\\)\\1+" end t)
|
||||
(replace-match "\\1"))))
|
||||
|
||||
(defun ldefs-clean-uniquify-buffer-lines ()
|
||||
"Remove duplicate adjacent lines in the current buffer."
|
||||
(interactive)
|
||||
(ldefs-clean-uniquify-region-lines (point-min) (point-max)))
|
||||
|
||||
(defun ldefs-clean-up ()
|
||||
"Clean up output from build and turn it into ldefs-boot-auto.el."
|
||||
(interactive)
|
||||
(goto-char (point-max))
|
||||
;; We only need the autoloads up till loaddefs.el is
|
||||
;; generated. After this, ldefs-boot.el is not needed
|
||||
(search-backward " GEN loaddefs.el")
|
||||
(delete-region (point) (point-max))
|
||||
(keep-lines "(autoload" (point-min) (point-max))
|
||||
(sort-lines nil (point-min) (point-max))
|
||||
(ldefs-clean-uniquify-buffer-lines)
|
||||
(goto-char (point-min))
|
||||
(insert
|
||||
";; This file is autogenerated by admin/ldefs-clean.el
|
||||
;; Do not edit
|
||||
")
|
||||
(goto-char (point-max))
|
||||
(insert
|
||||
";; Local Variables:
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; End:"))
|
||||
|
||||
|
||||
(defun ldefs-clean ()
|
||||
(find-file "lisp/ldefs-boot-auto.temp")
|
||||
(ldefs-clean-up)
|
||||
(write-file "ldefs-boot-auto.el"))
|
@ -84,9 +84,7 @@ General steps (for each step, check for possible errors):
|
||||
make -C etc/refcards
|
||||
make -C etc/refcards clean
|
||||
|
||||
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
|
||||
|
||||
Commit ChangeLog.N, etc/AUTHORS, lisp/ldefs-boot.el, and the
|
||||
5. Commit ChangeLog.N, etc/AUTHORS, lisp/ldefs-boot.el, and the
|
||||
files changed by M-x set-version.
|
||||
|
||||
If someone else made a commit between step 1 and now,
|
||||
|
@ -45,9 +45,9 @@ available.
|
||||
|
||||
The definition of triviality is a little vague, but a rule of thumb is
|
||||
that any file with less than 15 lines of actual content is trivial. If
|
||||
a file is auto-generated (eg ldefs-boot.el) from another one in the
|
||||
repository, then it does not really matter about adding a copyright
|
||||
statement to the generated file.
|
||||
a file is auto-generated from another one in the repository, then it
|
||||
does not really matter about adding a copyright statement to the
|
||||
generated file.
|
||||
|
||||
Legal advice says that we could, if we wished, put a license notice
|
||||
even in trivial files, because copyright law in general looks at the
|
||||
|
@ -92,7 +92,7 @@ changelog_flag=
|
||||
|
||||
## Parameters.
|
||||
ldefs_in=lisp/loaddefs.el
|
||||
ldefs_out=lisp/ldefs-boot.el
|
||||
ldefs_boot=lisp/ldefs-boot.el
|
||||
changelog_n=$(sed -n 's/CHANGELOG_HISTORY_INDEX_MAX *= *//p' Makefile.in)
|
||||
changelog_files="ChangeLog.$changelog_n"
|
||||
sources="configure.ac lib/Makefile.am"
|
||||
@ -370,19 +370,12 @@ echo "Running lisp/ make..."
|
||||
|
||||
make -C lisp "$@" autoloads EMACS=../src/bootstrap-emacs || die "make src error"
|
||||
|
||||
|
||||
## Ignore comment differences.
|
||||
[ ! "$lboot_flag" ] || \
|
||||
diff -q -I '^;' $ldefs_in $ldefs_out || \
|
||||
cp $ldefs_in $ldefs_out || die "cp ldefs_boot error"
|
||||
|
||||
|
||||
echo "Checking status of loaddef files..."
|
||||
|
||||
## It probably would be fine to just check+commit lisp/, since
|
||||
## making autoloads should not effect any other files. But better
|
||||
## safe than sorry.
|
||||
modified=$(status $genfiles $ldefs_out) || die
|
||||
modified=$(status $genfiles) || die
|
||||
|
||||
|
||||
commit "loaddefs" $modified || die "commit error"
|
||||
@ -396,6 +389,14 @@ commit "loaddefs" $modified || die "commit error"
|
||||
}
|
||||
|
||||
|
||||
|
||||
## Regenerate ldefs-boot if we are told to
|
||||
[ ! "$lboot_flag" ] || {
|
||||
make generate-ldefs-boot || die
|
||||
modified=$(status $ldefs_boot) || die
|
||||
commit $ldefs_boot $modified || die "commit error"
|
||||
}
|
||||
|
||||
exit 0
|
||||
|
||||
### update_autogen ends here
|
||||
|
@ -230,7 +230,7 @@ FORCE:
|
||||
|
||||
tagsfiles = $(shell find ${srcdir} -name '*.el')
|
||||
tagsfiles := $(filter-out ${srcdir}/%loaddefs.el,${tagsfiles})
|
||||
tagsfiles := $(filter-out ${srcdir}/ldefs-boot.el,${tagsfiles})
|
||||
tagsfiles := $(filter-out ${srcdir}/ldefs-boot%.el,${tagsfiles})
|
||||
tagsfiles := $(filter-out ${srcdir}/eshell/esh-groups.el,${tagsfiles})
|
||||
|
||||
ETAGS = ../lib-src/etags${EXEEXT}
|
||||
@ -283,7 +283,7 @@ $(THEFILE)c:
|
||||
|
||||
.PHONY: compile-first compile-main compile compile-always
|
||||
|
||||
compile-first: $(COMPILE_FIRST)
|
||||
compile-first: loaddefs.el $(COMPILE_FIRST)
|
||||
|
||||
# In 'compile-main' we could directly do
|
||||
# ... | xargs $(MAKE)
|
||||
@ -450,7 +450,7 @@ check-declare:
|
||||
check-defun-dups:
|
||||
sed -n -e '/^(defun /s/\(.\)(.*/\1/p' \
|
||||
$$(find . -name '*.el' -print | \
|
||||
grep -Ev '(loaddefs|ldefs-boot)\.el') | sort | uniq -d
|
||||
grep -Ev '(loaddefs|ldefs-boot*)\.el') | sort | uniq -d
|
||||
|
||||
# Dependencies
|
||||
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
;; See finder-no-scan-regexp in finder.el.
|
||||
(defvar custom-dependencies-no-scan-regexp "\\(^\\.#\\|\\(loaddefs\\|\
|
||||
ldefs-boot\\|cus-load\\|finder-inf\\|esh-groups\\|subdirs\\)\\.el$\\)"
|
||||
ldefs-boot.*\\|cus-load\\|finder-inf\\|esh-groups\\|subdirs\\)\\.el$\\)"
|
||||
"Regexp matching file names not to scan for `custom-make-dependencies'.")
|
||||
|
||||
(require 'autoload)
|
||||
|
@ -105,7 +105,7 @@ are as follows, and suppress messages about the indicated features:
|
||||
:version "23.2"
|
||||
:group 'elint)
|
||||
|
||||
(defcustom elint-directory-skip-re "\\(ldefs-boot\\|loaddefs\\)\\.el\\'"
|
||||
(defcustom elint-directory-skip-re "\\(ldefs-boot.*\\|loaddefs\\)\\.el\\'"
|
||||
"If nil, a regexp matching files to skip when linting a directory."
|
||||
:type '(choice (const :tag "Lint all files" nil)
|
||||
(regexp :tag "Regexp to skip"))
|
||||
|
@ -130,8 +130,8 @@ Keywords and package names both should be symbols.")
|
||||
;; useful, and because in parallel builds of Emacs they may get
|
||||
;; modified while we are trying to read them.
|
||||
;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-01/msg00469.html
|
||||
;; ldefs-boot is not auto-generated, but has nothing useful.
|
||||
(defvar finder-no-scan-regexp "\\(^\\.#\\|\\(loaddefs\\|ldefs-boot\\|\
|
||||
;; ldefs-boot-* are not auto-generated during build, but has nothing useful.
|
||||
(defvar finder-no-scan-regexp "\\(^\\.#\\|\\(loaddefs\\|ldefs-boot-.*\\|\
|
||||
cus-load\\|finder-inf\\|esh-groups\\|subdirs\\|leim-list\\)\\.el$\\)"
|
||||
"Regexp matching file names not to scan for keywords.")
|
||||
|
||||
|
125
lisp/ldefs-boot-auto.el
Normal file
125
lisp/ldefs-boot-auto.el
Normal file
@ -0,0 +1,125 @@
|
||||
;; This file is autogenerated by admin/ldefs-clean.el
|
||||
;; Do not edit
|
||||
(autoload 'Info-directory "info" nil nil nil)
|
||||
(autoload 'Info-index "info" nil nil nil)
|
||||
(autoload 'View-exit-and-edit "view" nil nil nil)
|
||||
(autoload 'add-change-log-entry "add-log" nil nil nil)
|
||||
(autoload 'add-log-current-defun "add-log" nil nil nil)
|
||||
(autoload 'batch-byte-compile "bytecomp" nil nil nil)
|
||||
(autoload 'browse-url "browse-url" nil nil nil)
|
||||
(autoload 'buffer-face-mode "face-remap" nil nil nil)
|
||||
(autoload 'byte-compile "bytecomp" nil nil nil)
|
||||
(autoload 'byte-compile-disable-warning "bytecomp" nil nil nil)
|
||||
(autoload 'byte-compile-enable-warning "bytecomp" nil nil nil)
|
||||
(autoload 'byte-compile-file "bytecomp" nil nil nil)
|
||||
(autoload 'byte-compile-inline-expand "byte-opt" nil nil nil)
|
||||
(autoload 'byte-compile-unfold-lambda "byte-opt" nil nil nil)
|
||||
(autoload 'byte-optimize-form "byte-opt" nil nil nil)
|
||||
(autoload 'byte-optimize-lapcode "byte-opt" nil nil nil)
|
||||
(autoload 'byte-recompile-directory "bytecomp" nil nil nil)
|
||||
(autoload 'char-displayable-p "mule-util" nil nil nil)
|
||||
(autoload 'color-name-to-rgb "color" nil nil nil)
|
||||
(autoload 'comint-redirect-results-list-from-process "comint" nil nil nil)
|
||||
(autoload 'comint-redirect-send-command-to-process "comint" nil nil nil)
|
||||
(autoload 'compilation-mode "compile" nil nil nil)
|
||||
(autoload 'compilation-shell-minor-mode "compile" nil nil nil)
|
||||
(autoload 'compilation-start "compile" nil nil nil)
|
||||
(autoload 'create-image "image" nil nil nil)
|
||||
(autoload 'custom-save-all "cus-edit" nil nil nil)
|
||||
(autoload 'customize-face "cus-edit" nil nil nil)
|
||||
(autoload 'customize-group "cus-edit" nil nil nil)
|
||||
(autoload 'customize-option "cus-edit" nil nil nil)
|
||||
(autoload 'customize-set-variable "cus-edit" nil nil nil)
|
||||
(autoload 'debug "debug" nil nil nil)
|
||||
(autoload 'define-ccl-program "ccl" nil nil t)
|
||||
(autoload 'define-derived-mode "derived" nil nil t)
|
||||
(autoload 'define-minor-mode "easy-mmode" nil nil t)
|
||||
(autoload 'delete-extract-rectangle "rect" nil nil nil)
|
||||
(autoload 'describe-char "descr-text" nil nil nil)
|
||||
(autoload 'describe-function "help-fns" nil nil nil)
|
||||
(autoload 'describe-function-1 "help-fns" nil nil nil)
|
||||
(autoload 'describe-package "package" nil nil nil)
|
||||
(autoload 'describe-variable "help-fns" nil nil nil)
|
||||
(autoload 'desktop-save "desktop" nil nil nil)
|
||||
(autoload 'diff-mode "diff-mode" nil nil nil)
|
||||
(autoload 'dired "dired" nil nil nil)
|
||||
(autoload 'dired-mode "dired" nil nil nil)
|
||||
(autoload 'dired-noselect "dired" nil nil nil)
|
||||
(autoload 'display-call-tree "bytecomp" nil nil nil)
|
||||
(autoload 'display-warning "warnings" nil nil nil)
|
||||
(autoload 'easy-menu-create-menu "easymenu" nil nil nil)
|
||||
(autoload 'ediff-patch-file "ediff" nil nil nil)
|
||||
(autoload 'edit-kbd-macro "edmacro" nil nil nil)
|
||||
(autoload 'extract-rectangle "rect" nil nil nil)
|
||||
(autoload 'find-definition-noselect "find-func" nil nil nil)
|
||||
(autoload 'find-function-search-for-symbol "find-func" nil nil nil)
|
||||
(autoload 'find-lisp-object-file-name "help-fns" nil nil nil)
|
||||
(autoload 'find-variable-noselect "find-func" nil nil nil)
|
||||
(autoload 'format-kbd-macro "edmacro" nil nil nil)
|
||||
(autoload 'goto-address-mode "goto-addr" nil nil nil)
|
||||
(autoload 'grep-compute-defaults "grep" nil nil nil)
|
||||
(autoload 'help-C-file-name "help-fns" nil nil nil)
|
||||
(autoload 'help-buffer "help-mode" nil nil nil)
|
||||
(autoload 'help-insert-xref-button "help-mode" nil nil nil)
|
||||
(autoload 'help-make-xrefs "help-mode" nil nil nil)
|
||||
(autoload 'help-mode "help-mode" nil nil nil)
|
||||
(autoload 'help-setup-xref "help-mode" nil nil nil)
|
||||
(autoload 'help-with-tutorial "tutorial" nil nil nil)
|
||||
(autoload 'help-xref-button "help-mode" nil nil nil)
|
||||
(autoload 'hi-lock-face-buffer "hi-lock" nil nil nil)
|
||||
(autoload 'image-type-available-p "image" nil nil nil)
|
||||
(autoload 'info "info" nil nil nil)
|
||||
(autoload 'info-emacs-manual "info" nil nil nil)
|
||||
(autoload 'insert-image "image" nil nil nil)
|
||||
(autoload 'insert-rectangle "rect" nil nil nil)
|
||||
(autoload 'isearch-process-search-multibyte-characters "isearch-x" nil nil nil)
|
||||
(autoload 'jka-compr-uninstall "jka-compr" nil nil nil)
|
||||
(autoload 'log-edit "log-edit" nil nil nil)
|
||||
(autoload 'log-view-mode "log-view" nil nil nil)
|
||||
(autoload 'lookup-nested-alist "mule-util" nil nil nil)
|
||||
(autoload 'make-display-table "disp-table" nil nil nil)
|
||||
(autoload 'make-glyph-code "disp-table" nil nil nil)
|
||||
(autoload 'multi-isearch-buffers "misearch" nil nil nil)
|
||||
(autoload 'multi-isearch-buffers-regexp "misearch" nil nil nil)
|
||||
(autoload 'multi-isearch-files "misearch" nil nil nil)
|
||||
(autoload 'multi-isearch-files-regexp "misearch" nil nil nil)
|
||||
(autoload 'open-network-stream "network-stream" nil nil nil)
|
||||
(autoload 'package-initialize "package" nil nil nil)
|
||||
(autoload 'parse-time-string "parse-time" nil nil nil)
|
||||
(autoload 'pp "pp" nil nil nil)
|
||||
(autoload 'pp-buffer "pp" nil nil nil)
|
||||
(autoload 'read-kbd-macro "edmacro" nil nil nil)
|
||||
(autoload 'regexp-opt "regexp-opt" nil nil nil)
|
||||
(autoload 'rx "rx" nil nil t)
|
||||
(autoload 'seconds-to-string "time-date" nil nil nil)
|
||||
(autoload 'seconds-to-time "time-date" nil nil nil)
|
||||
(autoload 'server-start "server" nil nil nil)
|
||||
(autoload 'set-nested-alist "mule-util" nil nil nil)
|
||||
(autoload 'smerge-mode "smerge-mode" nil nil nil)
|
||||
(autoload 'smerge-start-session "smerge-mode" nil nil nil)
|
||||
(autoload 'standard-display-8bit "disp-table" nil nil nil)
|
||||
(autoload 'tags-query-replace "etags" nil nil nil)
|
||||
(autoload 'tags-search "etags" nil nil nil)
|
||||
(autoload 'text-scale-increase "face-remap" nil nil nil)
|
||||
(autoload 'thing-at-point "thingatpt" nil nil nil)
|
||||
(autoload 'time-to-days "time-date" nil nil nil)
|
||||
(autoload 'timezone-make-date-arpa-standard "timezone" nil nil nil)
|
||||
(autoload 'tmm-menubar "tmm" nil nil nil)
|
||||
(autoload 'truncate-string-to-width "mule-util" nil nil nil)
|
||||
(autoload 'url-handler-mode "url-handlers" nil nil nil)
|
||||
(autoload 'variable-at-point "help-fns" nil nil nil)
|
||||
(autoload 'vc-register "vc" nil nil nil)
|
||||
(autoload 'vc-responsible-backend "vc" nil nil nil)
|
||||
(autoload 'vc-transfer-file "vc" nil nil nil)
|
||||
(autoload 'view-buffer "view" nil nil nil)
|
||||
(autoload 'view-buffer-other-window "view" nil nil nil)
|
||||
(autoload 'view-file "view" nil nil nil)
|
||||
(autoload 'view-mode-enter "view" nil nil nil)
|
||||
(autoload 'visit-tags-table "etags" nil nil nil)
|
||||
(autoload 'warn "warnings" nil nil nil)
|
||||
(autoload 'wdired-change-to-wdired-mode "wdired" nil nil nil)
|
||||
(autoload 'widget-value "wid-edit" nil nil nil)
|
||||
;; Local Variables:
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; End:
|
19
lisp/ldefs-boot-manual.el
Normal file
19
lisp/ldefs-boot-manual.el
Normal file
@ -0,0 +1,19 @@
|
||||
;; These appear to be necessary as they are used elsewhere in macro definitions.
|
||||
(load "emacs-lisp/gv.el")
|
||||
(load "emacs-lisp/nadvice.el")
|
||||
(load "emacs-lisp/inline.el")
|
||||
|
||||
;; This variable is used by bytecomp.el
|
||||
(defvar warning-series nil)
|
||||
|
||||
;; This variable is used by emacs-lisp-mode which is used heavily
|
||||
;; during the byte-compile phase
|
||||
(defvar electric-pair-text-pairs '((34 . 34)))
|
||||
|
||||
|
||||
(load "ldefs-boot-auto.el")
|
||||
|
||||
;; Local Variables:
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; End:
|
@ -143,19 +143,21 @@
|
||||
(load "button")
|
||||
|
||||
;; We don't want to store loaddefs.el in the repository because it is
|
||||
;; a generated file; but it is required in order to compile the lisp files.
|
||||
;; When bootstrapping, we cannot generate loaddefs.el until an
|
||||
;; emacs binary has been built. We therefore compromise and keep
|
||||
;; ldefs-boot.el in the repository. This does not need to be updated
|
||||
;; as often as the real loaddefs.el would. Bootstrap should always
|
||||
;; work with ldefs-boot.el. Therefore, Whenever a new autoload cookie
|
||||
;; gets added that is necessary during bootstrapping, ldefs-boot.el
|
||||
;; should be updated by overwriting it with an up-to-date copy of
|
||||
;; loaddefs.el that is uncorrupted by local changes.
|
||||
;; autogen/update_autogen can be used to periodically update ldefs-boot.
|
||||
;; a generated file; but it is required in order to compile the lisp
|
||||
;; files. When bootstrapping, we cannot generate loaddefs.el until an
|
||||
;; emacs binary has been built. We therefore support the build with
|
||||
;; two files, ldefs-boot-manual.el and ldefs-boot-auto.el, which
|
||||
;; contain the autoloads that are actually called during bootstrap.
|
||||
;; These do not need to be updated as often as the real loaddefs.el
|
||||
;; would. Bootstrap should always work with ldefs-boot-manual.el.
|
||||
;; Therefore, Whenever a new autoload cookie gets added that is
|
||||
;; necessary during bootstrapping, ldefs-boot-auto.el should be
|
||||
;; updated using the "generate-ldefs-boot" make target.
|
||||
;; autogen/update_autogen can be used to periodically update
|
||||
;; ldefs-boot.
|
||||
(condition-case nil (load "loaddefs.el")
|
||||
;; In case loaddefs hasn't been generated yet.
|
||||
(file-error (load "ldefs-boot.el")))
|
||||
(file-error (load "ldefs-boot-manual.el")))
|
||||
|
||||
(let ((new (make-hash-table :test 'equal)))
|
||||
;; Now that loaddefs has populated definition-prefixes, purify its contents.
|
||||
|
@ -156,7 +156,7 @@ TAGS tags: lib-src FRC
|
||||
cd lib-src
|
||||
if exist etags.exe mv -f etags.exe ../bin
|
||||
cd ..
|
||||
- find $(CURDIR)/lisp -iname "*.el" -a -! -( -iname "*loaddefs.el" -o -iname "ldefs-boot.el" -) | ./bin/etags -o lisp/TAGS -
|
||||
- find $(CURDIR)/lisp -iname "*.el" -a -! -( -iname "*loaddefs.el" -o -iname "ldefs-boot-auto.el" -) | ./bin/etags -o lisp/TAGS -
|
||||
cd $(CURDIR)
|
||||
cd src
|
||||
../bin/etags --include=../lisp/TAGS \
|
||||
|
@ -764,6 +764,10 @@ endif
|
||||
@: Compile some files earlier to speed up further compilation.
|
||||
$(MAKE) -C ../lisp compile-first EMACS="$(bootstrap_exe)"
|
||||
|
||||
|
||||
generate-ldefs-boot: bootstrap-emacs$(EXEEXT)
|
||||
$(RUN_TEMACS) --batch $(BUILD_DETAILS) --load loadup bootstrap
|
||||
|
||||
ifeq ($(AUTO_DEPEND),yes)
|
||||
-include $(ALLOBJS:%.o=${DEPDIR}/%.d)
|
||||
else
|
||||
|
@ -130,6 +130,8 @@ Lisp_Object Vlibrary_cache;
|
||||
on subsequent starts. */
|
||||
bool initialized;
|
||||
|
||||
bool generating_ldefs_boot;
|
||||
|
||||
#ifndef CANNOT_DUMP
|
||||
/* Set to true if this instance of Emacs might dump. */
|
||||
# ifndef DOUG_LEA_MALLOC
|
||||
@ -685,7 +687,10 @@ main (int argc, char **argv)
|
||||
stack_bottom = &stack_bottom_variable;
|
||||
|
||||
dumping = !initialized && (strcmp (argv[argc - 1], "dump") == 0
|
||||
|| strcmp (argv[argc - 1], "bootstrap") == 0);
|
||||
|| strcmp (argv[argc - 1], "bootstrap") == 0 );
|
||||
|
||||
generating_ldefs_boot = getenv ("GENERATE_LDEFS_BOOT");
|
||||
|
||||
|
||||
/* True if address randomization interferes with memory allocation. */
|
||||
# ifdef __PPC64__
|
||||
|
22
src/eval.c
22
src/eval.c
@ -1968,6 +1968,28 @@ it defines a macro. */)
|
||||
if (!CONSP (fundef) || !EQ (Qautoload, XCAR (fundef)))
|
||||
return fundef;
|
||||
|
||||
/* In the special case that we are generating ldefs-boot-auto.el,
|
||||
then be noisy about the autoload. */
|
||||
if( generating_ldefs_boot )
|
||||
{
|
||||
fprintf(stderr, "(autoload '");
|
||||
Fprin1(funname,Qexternal_debugging_output);
|
||||
fprintf(stderr, " ");
|
||||
Fprin1(Fcar (Fcdr (fundef)),Qexternal_debugging_output);
|
||||
fprintf(stderr, " nil nil ");
|
||||
|
||||
Lisp_Object kind = Fnth (make_number (4), fundef);
|
||||
if (! (EQ (kind, Qt) || EQ (kind, Qmacro)))
|
||||
{
|
||||
fprintf(stderr, "nil");
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "t");
|
||||
}
|
||||
fprintf(stderr, ")\n");
|
||||
}
|
||||
|
||||
if (EQ (macro_only, Qmacro))
|
||||
{
|
||||
Lisp_Object kind = Fnth (make_number (4), fundef);
|
||||
|
@ -619,6 +619,8 @@ extern bool might_dump;
|
||||
Used during startup to detect startup of dumped Emacs. */
|
||||
extern bool initialized;
|
||||
|
||||
extern bool generating_ldefs_boot;
|
||||
|
||||
/* Defined in floatfns.c. */
|
||||
extern double extract_float (Lisp_Object);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user