Mercurial > emacs
diff lisp/Makefile @ 26112:a2591ab1ddaf
(dontcompilefiles): Obsoleted.
(DONTCOMPILE): Added emacs-lisp/cl-specs.el.
(EL): Unused.
(temacs): Removed (unused).
(cus-load.el, finder-inf.el, loaddefs.el): New targets to build a dummy
version of the file (necessary for the update to work properly).
(autoloads): Force the use of `pwd`/loaddefs.el.
(updates); Redefined in terms of other targets to reduce redundancy.
(.el.elc): New default rule, just in case you want it.
(compile): Use a single invocation of Emacs.
(bootstrap-compile); Unneeded.
(autoloads-with-other-emacs): Unneeded now that autoloads is fixed.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Wed, 20 Oct 1999 00:37:35 +0000 |
parents | e7205498db63 |
children | 760a5b91fe7f |
line wrap: on
line diff
--- a/lisp/Makefile Tue Oct 19 19:57:29 1999 +0000 +++ b/lisp/Makefile Wed Oct 20 00:37:35 1999 +0000 @@ -5,7 +5,7 @@ # You can specify a different executable on the make command line, # e.g. "make EMACS=../src/emacs ...". -EMACS = emacs +EMACS = emacs # Command line flags for Emacs. This must include --multibyte, # otherwise some files will not compile. @@ -17,18 +17,10 @@ lisptagsfiles2 = [a-zA-Z]*/[a-zA-Z]*.el ETAGS = ../lib-src/etags -# Leave this in. I don't know if some utility depends on it. - -dontcompilefiles: bindings.el blessmail.el bruce.el cus-load.el cus-start.el -dontcompilefiles: forms-d2.el forms-pass.el -dontcompilefiles: latin-1.el latin-2.el latin-3.el latin-4.el latin-5.el -dontcompilefiles: loaddefs.el loadup.el mule-conf.el patcomp.el -dontcompilefiles: paths.el sc.el subdirs.el term-nasty.el version.el -dontcompilefiles: generic-x.el latin-8.el latin-9.el - # Files which should not be compiled. All file names must be relative # to the `lisp' directory. - +# - emacs-lisp/cl-specs.el: only contains `def-edebug-spec's so there's +# no point compiling it, although it doesn't hurt. DONTCOMPILE = bindings.el mail/blessmail.el play/bruce.el cus-load.el \ cus-start.el forms-d2.el forms-pass.el \ international/latin-1.el international/latin-2.el \ @@ -36,20 +28,13 @@ international/latin-5.el \ loaddefs.el loadup.el international/mule-conf.el patcomp.el \ paths.el mail/sc.el subdirs.el term-nasty.el version.el \ - generic-x.el international/latin-8.el international/latin-9.el - -# All Lisp source files in the current directory. - -EL = $(lisptagsfiles1) $(lisptagsfiles2) + generic-x.el international/latin-8.el international/latin-9.el \ + emacs-lisp/cl-specs.el finder-inf.el # The actual Emacs command run in the targets below. emacs = $(EMACS) $(EMACSOPT) -# The Emacs used to compile Lisp files from scratch. - -temacs=../src/temacs -batch -l ./loadup.el - # Common command to find subdirectories setwins=subdirs=`find $$wd -type d -print`; \ @@ -61,36 +46,44 @@ doit: -custom-deps: doit +cus-load.el: + touch $@ +custom-deps: cus-load.el doit wd=.; $(setwins); \ echo Directories: $$wins; \ $(emacs) -l cus-dep -f custom-make-dependencies $$wins -finder-data: doit +finder-inf.el: + echo "(provide 'finder-inf)" >> $@ +finder-data: finder-inf.el doit wd=.; $(setwins); \ echo Directories: $$wins; \ $(emacs) -l finder -f finder-compile-keywords-make-dist $$wins -autoloads: doit +loaddefs.el: + echo ";;; loaddefs.el --- automatically extracted autoloads" >> $@ + echo ";;" >> $@; echo ";;; Code:" >> $@ + echo "" >> $@ + echo ";;; Local Variables:" >> $@ + echo ";;; version-control: never" >> $@ + echo ";;; no-byte-compile: t" >> $@ + echo ";;; no-update-autoloads: t" >> $@ + echo ";;; End:" >> $@ + echo ";;; loaddefs.el ends here" >> $@ +autoloads: loaddefs.el doit wd=.; $(setwins); \ echo Directories: $$wins; \ - $(emacs) -f batch-update-autoloads $$wins + $(emacs) --eval '(setq generated-autoload-file "'`pwd`'/loaddefs.el")' -f batch-update-autoloads $$wins +subdirs.el: + $(MAKE) $(MFLAGS) update-subdirs update-subdirs: doit wd=.; $(setwins); \ for file in $$wins; do \ ../update-subdirs $$file; \ done; -updates: doit - wd=.; $(setwins); \ - for file in $$wins; do \ - ../update-subdirs $$file; \ - done; \ - echo Directories: $$wins; \ - $(emacs) -l cus-dep -f custom-make-dependencies $$wins; \ - $(emacs) -l finder -f finder-compile-keywords-make-dist $$wins; \ - $(emacs) -f batch-update-autoloads $$wins +updates: update-subdirs autoloads finder-data custom-deps TAGS: $(lisptagsfiles1) $(lisptagsfiles2) ${ETAGS} $(lisptagsfiles1) $(lisptagsfiles2) @@ -99,6 +92,12 @@ ${ETAGS} -o TAGS-LISP \ $(lispsource)$(lisptagsfiles1) $(lispsource)$(lisptagsfiles2) +.el.elc: subdirs.el + -EMACSLOADPATH=`pwd` $(emacs) -f batch-byte-compile $< + +$(DONTCOMPILE:.el=.elc): + -rm -f $@ + # Compile all Lisp files, except those from DONTCOMPILE. This # compiles files unconditionally. All .elc files are made writable # before compilation in case we checked out read-only (CVS option -r). @@ -109,62 +108,14 @@ # make sure require's and load's in the files being compiled find # the right files. -compile: doit - wd=`pwd`; \ - find $$wd -name "*.elc" -print | xargs chmod +w; \ - subdirs=`find $$wd -type d -print`; \ - for dir in $$subdirs; do \ - case $$dir in \ - */Old | */RCS | */CVS | */=* ) ;; \ - *) loadpath="$$loadpath \"$$dir\"" ;; \ - esac; \ - done; \ - loadpath="(setq load-path '($$loadpath))"; \ - dont_compile=`echo $(DONTCOMPILE)`; \ - for el in $(EL); do \ - compile_it=y; \ - for dont in $$dont_compile; do \ - if test $$el = $$dont; then \ - compile_it=n; \ - fi; \ - done; \ - if test $$compile_it = y; then \ - $(emacs) --eval "$$loadpath" -f batch-byte-compile $$el; \ - else \ - echo "Don't compile $$el"; \ - fi; \ - done - -# Compile Lisp files when all we have is the temacs in ../src. All -# .elc files under the current directory are deleted first to make -# sure we start from a clean basis. - -bootstrap-compile: doit - wd=`pwd`; \ - find $$wd -name "*.elc" -print | xargs rm -f \ - subdirs=`find $$wd -type d -print`; \ - for dir in $$subdirs; do \ - case $$dir in \ - */Old | */RCS | */CVS | */=* ) ;; \ - *) loadpath="$$loadpath \"$$dir\"" ;; \ - esac; \ - done; \ - loadpath="(setq load-path '($$loadpath))"; \ - dont_compile=`echo $(DONTCOMPILE)`; \ - for el in $(EL); do \ - compile_it=y; \ - for dont in $$dont_compile; do \ - if test $$el = $$dont; then \ - compile_it=n; \ - fi; \ - done; \ - if test $$compile_it = y; then \ - $(temacs) --eval "$$loadpath" -f batch-byte-compile $$el; \ - else \ - echo "Don't compile $$el"; \ - fi; \ - done - +compile: subdirs.el doit + find . -name "*.elc" -print | xargs chmod +w; \ + wd=.; $(setwins); \ + elpat=`echo $$wins | tr '[ ]' '[\012\012]' | \ + sed -e 's|\(.\)$$|\1/|' -e 's|^\./||' -e 's|$$|*.el|'`; \ + els=`echo $$elpat $(DONTCOMPILE) | tr '[ ]' '[\012\012]' | sort | uniq -u`; \ + echo $$els; \ + EMACSLOADPATH=`pwd` $(emacs) -f batch-byte-compile $$els # Recompile all Lisp files which are newer than their .elc files. # Note that this doesn't create .elc files. It only recompiles if an @@ -173,17 +124,4 @@ recompile: doit $(emacs) -f batch-byte-recompile-directory . -# Build loaddefs.el but with an Emacs executable which was not built -# in the current directory tree. The problem in this case is that -# autoload.el reads and writes loaddefs.el in its `source-directory'. -# If that's different from the current directory tree, we can't build -# loaddefs.el. -# Can't this rule be used in place of `autoload'? -sm - -autoloads-with-other-emacs: doit - wd=.; $(setwins); \ - echo Directories: $$wins; \ - $(emacs) --eval '(setq source-directory ".")' \ - -f batch-update-autoloads $$wins - # Makefile ends here.