changeset 107459:51f4b3cf3db9

Get rid of .elc files after removal of the corresponding .el. * Makefile.in (compile-clean): New target. (compile-main): Use it.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 22 Mar 2010 09:33:21 -0400
parents d5b2d5a7cad9
children c3852852bbc0
files lisp/ChangeLog lisp/Makefile.in
diffstat 2 files changed, 21 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Mar 22 08:51:19 2010 +0100
+++ b/lisp/ChangeLog	Mon Mar 22 09:33:21 2010 -0400
@@ -1,3 +1,9 @@
+2010-03-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	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  <jan.h.d@swipnet.se>
 
 	* 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  <juri@jurta.org>
--- a/lisp/Makefile.in	Mon Mar 22 08:51:19 2010 +0100
+++ b/lisp/Makefile.in	Mon Mar 22 09:33:21 2010 -0400
@@ -235,7 +235,7 @@
 
 # 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 @@
 	  $(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.