From: Stefan Monnier Date: Mon, 22 Mar 2010 13:33:21 +0000 (-0400) Subject: Get rid of .elc files after removal of the corresponding .el. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~687 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=64cb11ccee98233ad1c44496f4dd6fed8e64a155;p=emacs.git Get rid of .elc files after removal of the corresponding .el. * Makefile.in (compile-clean): New target. (compile-main): Use it. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2a059b8167b..afce3835ed2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2010-03-22 Stefan Monnier + + Get rid of .elc files after removal of the corresponding .el. + * Makefile.in (compile-clean): New target. + (compile-main): Use it. + 2010-03-22 Jan Djärv * Makefile.in (compile-main): cd to $(lisp) in a sub-shell, so we @@ -19,7 +25,8 @@ (srcdir): Don't append `/..'. (EMACS): Use ${abs_top_builddir}. (all, compile, compile-always, compile-last): Don't set emacswd. - (update-subdirs, update-authors): Use $(top_srcdir) instead of $(srcdir). + (update-subdirs, update-authors): Use $(top_srcdir) instead of + $(srcdir). (lisp): Use $(srcdir) instead of @srcdir@. 2010-03-21 Juri Linkov diff --git a/lisp/Makefile.in b/lisp/Makefile.in index f1219a807c7..21822a82ca4 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -235,7 +235,7 @@ compile-targets: $(TARGETS) # Compile all the Elisp files that need it. Beware: it approximates # `no-byte-compile', so watch out for false-positives! -compile-main: +compile-main: compile-clean @(cd $(lisp); $(setwins); \ els=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.el |g'`; \ for el in $$els; do \ @@ -247,6 +247,18 @@ compile-main: $(MAKE) $(MFLAGS) compile-targets EMACS="$(EMACS)" TARGETS="$$chunk"; \ done +.PHONY: compile-clean +# Erase left-over .elc files that do not have a corresponding .el file. +compile-clean: + @cd $(lisp); $(setwins); \ + elcs=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.elc |g'`; \ + for el in $$(echo $$elcs | sed -e 's/\.elc/\.el/g'); do \ + if test -f "$$el" -o \! -f "$${el}c"; then :; else \ + echo rm "$${el}c"; \ + rm "$${el}c"; \ + fi \ + done + # Compile all Lisp files, but don't recompile those that are up to # date. Some .el files don't get compiled because they set the # local variable no-byte-compile.