* src/lisp.mk: Remove from repository and generate at build-time.
* src/Makefile.in (lisp.mk): New rule to generate from loadup.el. (shortlisp_filter): New variable. (emacs$(EXEEXT), $(etc)/DOC): Depend on lisp.mk. (distclean): Remove lisp.mk. * Makefile.in ($(MAKEFILE_NAME)): No longer depend on src/lisp.mk. * lisp/loadup.el: Tweak layout to make it easier to parse. * make-dist: Do not distribute src/lisp.mk.
This commit is contained in:
parent
576fba5f58
commit
46ea93792d
6 changed files with 54 additions and 191 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -76,6 +76,7 @@ lib/unistd.h
|
|||
lib/warn-on-use.h
|
||||
src/buildobj.h
|
||||
src/globals.h
|
||||
src/lisp.mk
|
||||
|
||||
# Lisp-level sources built by 'make'.
|
||||
*cus-load.el
|
||||
|
|
|
@ -413,7 +413,7 @@ blessmail: Makefile src
|
|||
# etc. to be built without running into similar recursion problems.
|
||||
MAKEFILE_NAME = Makefile
|
||||
$(MAKEFILE_NAME): config.status $(srcdir)/src/config.in \
|
||||
$(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN) $(srcdir)/src/lisp.mk
|
||||
$(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN)
|
||||
MAKE='$(MAKE)' ./config.status
|
||||
|
||||
# Don't erase these files if make is interrupted while refreshing them.
|
||||
|
|
|
@ -26,20 +26,24 @@
|
|||
|
||||
;; This is loaded into a bare Emacs to make a dumpable one.
|
||||
|
||||
;; If you add/remove Lisp files to be loaded here, consider the
|
||||
;; following issues:
|
||||
;; If you add a file to be loaded here, keep the following points in mind:
|
||||
|
||||
;; i) Any file loaded on any platform should appear in src/lisp.mk.
|
||||
;; Use the .el or .elc version as appropriate.
|
||||
;; i) If the file is no-byte-compile, explicitly load the .el version.
|
||||
;; Such files should (where possible) obey the doc-string conventions
|
||||
;; expected by make-docfile. They should also be added to the
|
||||
;; uncompiled[] list in make-docfile.c.
|
||||
|
||||
;; ii) If the file is dumped with Emacs (on any platform), put the
|
||||
;; load statement at the start of a line (leading whitespace is ok).
|
||||
|
||||
;; iii) If the file is _not_ dumped with Emacs, make sure the load
|
||||
;; statement is _not_ at the start of a line. See pcase for an example.
|
||||
|
||||
;; These rules are so that src/Makefile can construct lisp.mk automatically.
|
||||
;; This ensures both that the Lisp files are compiled (if necessary)
|
||||
;; before the emacs executable is dumped, and that they are passed to
|
||||
;; make-docfile. (Any that are not processed for DOC will not have
|
||||
;; doc strings in the dumped Emacs.) Because of this:
|
||||
|
||||
;; ii) If the file is loaded uncompiled, it should (where possible)
|
||||
;; obey the doc-string conventions expected by make-docfile. It
|
||||
;; should also be added to the uncompiled[] list in make-docfile.c.
|
||||
;; doc strings in the dumped Emacs.)
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
@ -117,8 +121,7 @@
|
|||
;; Since loaddefs is not yet loaded, macroexp's uses of pcase will simply
|
||||
;; fail until pcase is explicitly loaded. This also means that we have to
|
||||
;; disable eager macro-expansion while loading pcase.
|
||||
(let ((macroexp--pending-eager-loads '(skip)))
|
||||
(load "emacs-lisp/pcase"))
|
||||
(let ((macroexp--pending-eager-loads '(skip))) (load "emacs-lisp/pcase"))
|
||||
;; Re-load macroexp so as to eagerly macro-expand its uses of pcase.
|
||||
(let ((max-lisp-eval-depth (* 2 max-lisp-eval-depth)))
|
||||
(load "emacs-lisp/macroexp")))
|
||||
|
@ -139,9 +142,7 @@
|
|||
;; 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.
|
||||
(condition-case nil
|
||||
;; Don't get confused if someone compiled this by mistake.
|
||||
(load "loaddefs.el")
|
||||
(condition-case nil (load "loaddefs.el")
|
||||
;; In case loaddefs hasn't been generated yet.
|
||||
(file-error (load "ldefs-boot.el")))
|
||||
|
||||
|
@ -178,8 +179,8 @@
|
|||
(load "language/romanian")
|
||||
(load "language/greek")
|
||||
(load "language/hebrew")
|
||||
(load "international/cp51932")
|
||||
(load "international/eucjp-ms")
|
||||
(load "international/cp51932.el")
|
||||
(load "international/eucjp-ms.el")
|
||||
(load "language/japanese")
|
||||
(load "language/korean")
|
||||
(load "language/lao")
|
||||
|
@ -289,7 +290,8 @@
|
|||
(load "electric")
|
||||
(load "emacs-lisp/eldoc")
|
||||
(load "cus-start") ;Late to reduce customize-rogue (needs loaddefs.el anyway)
|
||||
(if (not (eq system-type 'ms-dos)) (load "tooltip"))
|
||||
(if (not (eq system-type 'ms-dos))
|
||||
(load "tooltip"))
|
||||
|
||||
;; This file doesn't exist when building a development version of Emacs
|
||||
;; from the repository. It is generated just after temacs is built.
|
||||
|
|
|
@ -375,7 +375,7 @@ echo "Making links to 'src'"
|
|||
echo " (It is ok if ln fails in some cases.)"
|
||||
ln [a-zA-Z]*.[chm] ../${tempdir}/src
|
||||
ln [a-zA-Z]*.in ../${tempdir}/src
|
||||
ln [a-zA-Z]*.mk ../${tempdir}/src
|
||||
ln deps.mk ../${tempdir}/src
|
||||
ln README ChangeLog.*[0-9] ../${tempdir}/src
|
||||
ln makefile.w32-in ../${tempdir}/src
|
||||
ln .gdbinit .dbxinit ../${tempdir}/src
|
||||
|
|
|
@ -418,8 +418,36 @@ otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \
|
|||
FIRSTFILE_OBJ=@FIRSTFILE_OBJ@
|
||||
ALLOBJS = $(FIRSTFILE_OBJ) $(VMLIMIT_OBJ) $(obj) $(otherobj)
|
||||
|
||||
include $(srcdir)/lisp.mk
|
||||
## This is the list of all Lisp files that might be loaded into the
|
||||
## dumped Emacs. Some of them are not loaded on all platforms, but
|
||||
## the DOC file on every platform uses them (because the DOC file is
|
||||
## supposed to be platform-independent).
|
||||
## Note that this list should not include lisp files which might not
|
||||
## be present, like site-load.el and site-init.el; this makefile
|
||||
## expects them all to be either present or buildable.
|
||||
##
|
||||
## To generate this list from loadup.el, we can either:
|
||||
## 1) Extract everything matching (load "..."), in which case
|
||||
## we need to add charprop.el by hand; or
|
||||
## 2) Extract everything matching (load "...", in which case
|
||||
## we need to remove leim-list, site-init, and site-load by hand.
|
||||
## There's not much to choose between these two approaches,
|
||||
## but the second one seems like it could be more future-proof.
|
||||
shortlisp =
|
||||
lisp.mk: $(lispsource)/loadup.el
|
||||
@rm -f $@
|
||||
${AM_V_GEN}( echo "shortlisp = \\"; \
|
||||
sed -n 's/^[ \t]*(load "\([^"]*\)".*/\1/p' $< | \
|
||||
sed -e 's/$$/.elc \\/' -e 's/\.el\.elc/.el/'; \
|
||||
echo "" ) > $@
|
||||
|
||||
-include lisp.mk
|
||||
shortlisp_filter = leim/leim-list.el site-load.elc site-init.elc
|
||||
shortlisp := $(filter-out ${shortlisp_filter},${shortlisp})
|
||||
## Place loaddefs.el first, so it gets generated first, since it is on
|
||||
## the critical path (relevant in parallel compilations).
|
||||
## We don't really need to sort, but may as well use it to remove duplicates.
|
||||
shortlisp := loaddefs.el loadup.el $(sort ${shortlisp})
|
||||
lisp = $(addprefix ${lispsource}/,${shortlisp})
|
||||
|
||||
## Construct full set of libraries to be linked.
|
||||
|
@ -454,7 +482,7 @@ $(srcdir)/macuvs.h $(lispsource)/international/charprop.el: \
|
|||
## since not all pieces are used on all platforms. But DOC depends
|
||||
## on all of $lisp, and emacs depends on DOC, so it is ok to use $lisp here.
|
||||
emacs$(EXEEXT): temacs$(EXEEXT) \
|
||||
$(etc)/DOC $(lisp) $(leimdir)/leim-list.el \
|
||||
lisp.mk $(etc)/DOC $(lisp) $(leimdir)/leim-list.el \
|
||||
$(lispsource)/international/charprop.el
|
||||
ifeq ($(CANNOT_DUMP),yes)
|
||||
ln -f temacs$(EXEEXT) $@
|
||||
|
@ -475,7 +503,7 @@ endif
|
|||
## for the first time, this prevents any variation between configurations
|
||||
## in the contents of the DOC file.
|
||||
##
|
||||
$(etc)/DOC: $(libsrc)/make-docfile$(EXEEXT) $(obj) $(lisp)
|
||||
$(etc)/DOC: lisp.mk $(libsrc)/make-docfile$(EXEEXT) $(obj) $(lisp)
|
||||
$(AM_V_GEN)$(MKDIR_P) $(etc)
|
||||
-$(AM_V_at)rm -f $(etc)/DOC
|
||||
$(AM_V_at)$(libsrc)/make-docfile -d $(srcdir) \
|
||||
|
@ -581,7 +609,7 @@ bootstrap-clean: clean
|
|||
fi
|
||||
|
||||
distclean: bootstrap-clean
|
||||
rm -f Makefile
|
||||
rm -f Makefile lisp.mk
|
||||
|
||||
maintainer-clean: distclean
|
||||
rm -f TAGS
|
||||
|
|
168
src/lisp.mk
168
src/lisp.mk
|
@ -1,168 +0,0 @@
|
|||
### lisp.mk --- src/Makefile fragment for GNU Emacs
|
||||
|
||||
## Copyright (C) 1985, 1987-1988, 1993-1995, 1999-2015 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 is the list of all Lisp files that might be loaded into the
|
||||
## dumped Emacs. Some of them are not loaded on all platforms, but
|
||||
## the DOC file on every platform uses them (because the DOC file is
|
||||
## supposed to be platform-independent).
|
||||
## It is arranged like this because it is easier to generate it
|
||||
## semi-mechanically from loadup.el this way.
|
||||
## Eg something like:
|
||||
## sed -e 's/"[ )].*//' -n -e '/(load "/ s/.*load "//p' loadup.el | \
|
||||
## grep -vE 'site-|ldefs-boot'
|
||||
## minus any duplicates.
|
||||
## Note that you can generally just add a ".elc" extension to every file
|
||||
## that does not have an explicit .el extension, but beware of any
|
||||
## no-byte-compile ones.
|
||||
|
||||
## Note that this list should not include lisp files which might not
|
||||
## be present, like site-load.el and site-init.el; this makefile
|
||||
## expects them all to be either present or buildable.
|
||||
|
||||
## Place loaddefs.el first, so it gets generated first, since it is on
|
||||
## the critical path (relevant in parallel compilations).
|
||||
|
||||
### Code:
|
||||
|
||||
shortlisp = \
|
||||
loaddefs.el \
|
||||
loadup.el \
|
||||
emacs-lisp/byte-run.elc \
|
||||
emacs-lisp/backquote.elc \
|
||||
subr.elc \
|
||||
version.elc \
|
||||
widget.elc \
|
||||
custom.elc \
|
||||
emacs-lisp/map-ynp.elc \
|
||||
cus-start.elc \
|
||||
international/mule.elc \
|
||||
international/mule-conf.elc \
|
||||
env.elc \
|
||||
format.elc \
|
||||
bindings.elc \
|
||||
files.elc \
|
||||
emacs-lisp/macroexp.elc \
|
||||
cus-face.elc \
|
||||
faces.elc \
|
||||
button.elc \
|
||||
startup.elc \
|
||||
emacs-lisp/cl-preloaded.elc \
|
||||
emacs-lisp/nadvice.elc \
|
||||
minibuffer.elc \
|
||||
abbrev.elc \
|
||||
simple.elc \
|
||||
help.elc \
|
||||
jka-cmpr-hook.elc \
|
||||
epa-hook.elc \
|
||||
international/mule-cmds.elc \
|
||||
case-table.elc \
|
||||
international/characters.elc \
|
||||
composite.elc \
|
||||
international/charprop.el \
|
||||
language/chinese.elc \
|
||||
language/cyrillic.elc \
|
||||
language/indian.elc \
|
||||
language/sinhala.elc \
|
||||
language/english.elc \
|
||||
language/ethiopic.elc \
|
||||
language/european.elc \
|
||||
language/czech.elc \
|
||||
language/slovak.elc \
|
||||
language/romanian.elc \
|
||||
language/greek.elc \
|
||||
language/hebrew.elc \
|
||||
international/cp51932.el \
|
||||
international/eucjp-ms.el \
|
||||
language/japanese.elc \
|
||||
language/korean.elc \
|
||||
language/lao.elc \
|
||||
language/tai-viet.elc \
|
||||
language/thai.elc \
|
||||
language/tibetan.elc \
|
||||
language/vietnamese.elc \
|
||||
language/misc-lang.elc \
|
||||
language/utf-8-lang.elc \
|
||||
language/georgian.elc \
|
||||
language/khmer.elc \
|
||||
language/burmese.elc \
|
||||
language/cham.elc \
|
||||
indent.elc \
|
||||
window.elc \
|
||||
emacs-lisp/cl-generic.elc \
|
||||
frame.elc \
|
||||
term/tty-colors.elc \
|
||||
font-core.elc \
|
||||
facemenu.elc \
|
||||
emacs-lisp/syntax.elc \
|
||||
font-lock.elc \
|
||||
jit-lock.elc \
|
||||
mouse.elc \
|
||||
scroll-bar.elc \
|
||||
select.elc \
|
||||
emacs-lisp/timer.elc \
|
||||
isearch.elc \
|
||||
rfn-eshadow.elc \
|
||||
menu-bar.elc \
|
||||
emacs-lisp/lisp.elc \
|
||||
textmodes/page.elc \
|
||||
register.elc \
|
||||
textmodes/paragraphs.elc \
|
||||
progmodes/prog-mode.elc \
|
||||
emacs-lisp/lisp-mode.elc \
|
||||
progmodes/elisp-mode.elc \
|
||||
textmodes/text-mode.elc \
|
||||
textmodes/fill.elc \
|
||||
newcomment.elc \
|
||||
replace.elc \
|
||||
emacs-lisp/tabulated-list.elc \
|
||||
buff-menu.elc \
|
||||
fringe.elc \
|
||||
emacs-lisp/regexp-opt.elc \
|
||||
image.elc \
|
||||
international/fontset.elc \
|
||||
dnd.elc \
|
||||
tool-bar.elc \
|
||||
dynamic-setting.elc \
|
||||
x-dnd.elc \
|
||||
term/common-win.elc \
|
||||
term/x-win.elc \
|
||||
w32-vars.elc \
|
||||
term/w32-win.elc \
|
||||
ls-lisp.elc \
|
||||
disp-table.elc \
|
||||
dos-w32.elc \
|
||||
w32-fns.elc \
|
||||
dos-fns.elc \
|
||||
dos-vars.elc \
|
||||
term/pc-win.elc \
|
||||
term/internal.elc \
|
||||
term/ns-win.elc \
|
||||
mwheel.elc \
|
||||
emacs-lisp/float-sup.elc \
|
||||
vc/vc-hooks.elc \
|
||||
vc/ediff-hook.elc \
|
||||
electric.elc \
|
||||
emacs-lisp/eldoc.elc \
|
||||
uniquify.elc \
|
||||
tooltip.elc
|
||||
|
||||
### lisp.mk ends here
|
Loading…
Add table
Reference in a new issue