[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] trunk r117336: Parallelize clean rules using GNU make feat
From: |
Glenn Morris |
Subject: |
[Emacs-diffs] trunk r117336: Parallelize clean rules using GNU make features |
Date: |
Sun, 15 Jun 2014 00:17:37 +0000 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 117336
revision-id: address@hidden
parent: address@hidden
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Sat 2014-06-14 17:17:21 -0700
message:
Parallelize clean rules using GNU make features
* Makefile.in: (submake_template): New definition.
(mostlyclean_dirs, clean_dirs, distclean_dirs, maintainer_clean_dirs):
New variables.
(mostlyclean, clean, distclean, bootstrap-clean, maintainer-clean)
(extraclean): Define using each subdirectory as a prequisite.
* lib/Makefile.am (bootstrap-clean):
* doc/emacs/Makefile.in (bootstrap-clean):
* doc/lispintro/Makefile.in (bootstrap-clean):
* doc/lispref/Makefile.in (bootstrap-clean):
* doc/misc/Makefile.in (bootstrap-clean):
* lib-src/Makefile.in (bootstrap-clean):
* lwlib/Makefile.in (bootstrap-clean):
* nextstep/Makefile.in (bootstrap-clean):
* nt/Makefile.in (bootstrap-clean):
* oldXMenu/Makefile.in (bootstrap-clean):
New rules, for symmetry/simplicity.
* lwlib/Makefile.in (mostlyclean, clean, distclean, maintainer-clean):
* oldXMenu/Makefile.in (mostlyclean, clean, distclean, maintainer-clean,
tags):
Declare as PHONY.
modified:
ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1538
Makefile.in makefile.in-20091113204419-o5vbwnq5f7feedwu-446
doc/emacs/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-6227
doc/emacs/Makefile.in
makefile.in-20091113204419-o5vbwnq5f7feedwu-6228
doc/lispintro/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-6128
doc/lispintro/Makefile.in
makefile.in-20091113204419-o5vbwnq5f7feedwu-6130
doc/lispref/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-6155
doc/lispref/Makefile.in
makefile.in-20091113204419-o5vbwnq5f7feedwu-6156
doc/misc/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-6331
doc/misc/Makefile.in
makefile.in-20091113204419-o5vbwnq5f7feedwu-6287
lib-src/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1608
lib-src/Makefile.in makefile.in-20091113204419-o5vbwnq5f7feedwu-475
lib/Makefile.am makefile.am-20110108202626-yzxuy5sd4sbukk5h-2
lwlib/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1447
lwlib/Makefile.in makefile.in-20091113204419-o5vbwnq5f7feedwu-662
nextstep/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-8711
nextstep/Makefile.in makefile.in-20120916183945-sy6skp4ojfe19n99-1
nt/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1545
nt/Makefile.in makefile.in-20130401120038-v7du7ljz2h0zkbc6-1
oldXMenu/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1572
oldXMenu/Makefile.in
makefile.in-20091113204419-o5vbwnq5f7feedwu-1588
=== modified file 'ChangeLog'
--- a/ChangeLog 2014-06-15 00:06:30 +0000
+++ b/ChangeLog 2014-06-15 00:17:21 +0000
@@ -1,3 +1,13 @@
+2014-06-15 Glenn Morris <address@hidden>
+
+ * Makefile.in: Parallelize clean rules using GNU make features.
+ (submake_template): New definition.
+ (mostlyclean_dirs, clean_dirs, distclean_dirs, maintainer_clean_dirs):
+ New variables.
+ (mostlyclean, clean, distclean, bootstrap-clean, maintainer-clean)
+ (extraclean): Define using each subdirectory as a prequisite.
+ * lib/Makefile.am (bootstrap-clean): New.
+
2014-06-15 Paul Eggert <address@hidden>
Port part of the AIX fix to Solaris (Bug#17598).
=== modified file 'Makefile.in'
--- a/Makefile.in 2014-06-13 23:05:00 +0000
+++ b/Makefile.in 2014-06-15 00:17:21 +0000
@@ -770,22 +770,27 @@
.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean extraclean
+## Eg:
+## src_clean:
+## make -C src clean
+define submake_template
+.PHONY: $(1)_$(2)
+$(1)_$(2):
+ $$(MAKE) -C $(1) $(2)
+endef
+
### `mostlyclean'
### Like `clean', but may refrain from deleting a few files that people
### normally don't want to recompile. For example, the `mostlyclean'
### target for GCC does not delete `libgcc.a', because recompiling it
### is rarely necessary and takes a lot of time.
-mostlyclean:
- cd src && $(MAKE) mostlyclean
- cd oldXMenu && $(MAKE) mostlyclean
- cd lwlib && $(MAKE) mostlyclean
- cd lib && $(MAKE) mostlyclean
- cd lib-src && $(MAKE) mostlyclean
- cd nt && $(MAKE) mostlyclean
- -cd doc/emacs && $(MAKE) mostlyclean
- -cd doc/misc && $(MAKE) mostlyclean
- -cd doc/lispref && $(MAKE) mostlyclean
- -cd doc/lispintro && $(MAKE) mostlyclean
+mostlyclean_dirs = src oldXMenu lwlib lib lib-src nt doc/emacs doc/misc \
+ doc/lispref doc/lispintro
+
+$(foreach dir,$(mostlyclean_dirs),$(eval $(call
submake_template,$(dir),mostlyclean)))
+
+mostlyclean: $(mostlyclean_dirs:=_mostlyclean)
+
### `clean'
### Delete all files from the current directory that are normally
@@ -795,24 +800,18 @@
### with them.
###
### Delete `.dvi' files here if they are not part of the distribution.
-clean:
+clean_dirs = $(mostlyclean_dirs) nextstep
+
+$(foreach dir,$(clean_dirs),$(eval $(call submake_template,$(dir),clean)))
+
+clean: $(clean_dirs:=_clean)
-rm -f etc/emacs.tmpdesktop
- cd src && $(MAKE) clean
- cd oldXMenu && $(MAKE) clean
- cd lwlib && $(MAKE) clean
- cd lib && $(MAKE) clean
- cd lib-src && $(MAKE) clean
- cd nt && $(MAKE) clean
- -cd doc/emacs && $(MAKE) clean
- -cd doc/misc && $(MAKE) clean
- -cd doc/lispref && $(MAKE) clean
- -cd doc/lispintro && $(MAKE) clean
- cd nextstep && $(MAKE) clean
### `bootclean'
### Delete all files that need to be remade for a clean bootstrap.
top_bootclean=\
rm -f config.cache config.log
+
### `distclean'
### Delete all files from the current directory that are created by
### configuring or building the program. If you have unpacked the
@@ -822,44 +821,25 @@
top_distclean=\
${top_bootclean}; \
rm -f config.status config.log~ Makefile stamp-h1 ${SUBDIR_MAKEFILES}
-distclean:
- cd src && $(MAKE) distclean
- cd oldXMenu && $(MAKE) distclean
- cd lwlib && $(MAKE) distclean
- cd lib && $(MAKE) distclean
- cd lib-src && $(MAKE) distclean
- cd nt && $(MAKE) distclean
- cd doc/emacs && $(MAKE) distclean
- cd doc/misc && $(MAKE) distclean
- cd doc/lispref && $(MAKE) distclean
- cd doc/lispintro && $(MAKE) distclean
- cd leim && $(MAKE) distclean
- cd lisp && $(MAKE) distclean
- cd nextstep && $(MAKE) distclean
+
+distclean_dirs = $(clean_dirs) leim lisp
+
+$(foreach dir,$(distclean_dirs),$(eval $(call
submake_template,$(dir),distclean)))
+
+distclean: $(distclean_dirs:=_distclean)
for dir in test/automated admin/grammars admin/unidata; do \
- [ ! -d $$dir ] || (cd $$dir && $(MAKE) distclean); \
+ [ ! -d $$dir ] || $(MAKE) -C $$dir distclean; \
done
${top_distclean}
### `bootstrap-clean'
### Delete everything that can be reconstructed by `make' and that
### needs to be deleted in order to force a bootstrap from a clean state.
-bootstrap-clean:
- cd src && $(MAKE) bootstrap-clean
- cd oldXMenu && $(MAKE) maintainer-clean
- cd lwlib && $(MAKE) maintainer-clean
- cd lib && $(MAKE) maintainer-clean
- cd lib-src && $(MAKE) maintainer-clean
- cd nt && $(MAKE) maintainer-clean
- -cd doc/emacs && $(MAKE) maintainer-clean
- -cd doc/misc && $(MAKE) maintainer-clean
- -cd doc/lispref && $(MAKE) maintainer-clean
- -cd doc/lispintro && $(MAKE) maintainer-clean
- cd leim && $(MAKE) bootstrap-clean
- cd lisp && $(MAKE) bootstrap-clean
- cd nextstep && $(MAKE) maintainer-clean
+$(foreach dir,$(distclean_dirs),$(eval $(call
submake_template,$(dir),bootstrap-clean)))
+
+bootstrap-clean: $(distclean_dirs:=_bootstrap-clean)
for dir in test/automated admin/grammars admin/unidata; do \
- [ ! -d $$dir ] || (cd $$dir && $(MAKE) bootstrap-clean); \
+ [ ! -d $$dir ] || $(MAKE) -C $$dir bootstrap-clean; \
done
[ ! -f config.log ] || mv -f config.log config.log~
rm -rf ${srcdir}/info
@@ -879,12 +859,14 @@
top_maintainer_clean=\
${top_distclean}; \
rm -fr autom4te.cache
-maintainer-clean: bootstrap-clean
- cd src && $(MAKE) maintainer-clean
- cd leim && $(MAKE) maintainer-clean
- cd lisp && $(MAKE) maintainer-clean
+
+maintainer_clean_dirs = src leim lisp
+
+$(foreach dir,$(maintainer_clean_dirs),$(eval $(call
submake_template,$(dir),maintainer-clean)))
+
+maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:=_maintainer-clean)
for dir in test/automated admin/grammars admin/unidata; do \
- [ ! -d $$dir ] || (cd $$dir && $(MAKE) maintainer-clean); \
+ [ ! -d $$dir ] || $(MAKE) -C $$dir maintainer-clean; \
done
${top_maintainer_clean}
@@ -892,8 +874,12 @@
### says GCC supports it, and that's where the configuration part of
### the coding standards seem to come from. It's like distclean, but
### it deletes backup and autosave files too.
-extraclean:
- for i in ${SUBDIR}; do (cd $$i; $(MAKE) extraclean); done
+### Note that we abuse this in some subdirectories (eg leim),
+### to delete some generated files that are slow to rebuild.
+$(foreach dir,$(SUBDIR),$(eval $(call submake_template,$(dir),extraclean)))
+
+## FIXME this is busted because most of these do not have extraclean rules.
+extraclean: $(SUBDIR:=_extraclean)
${top_maintainer_clean}
-rm -f config-tmp-*
-rm -f *~ \#*
=== modified file 'doc/emacs/ChangeLog'
--- a/doc/emacs/ChangeLog 2014-06-10 02:11:38 +0000
+++ b/doc/emacs/ChangeLog 2014-06-15 00:17:21 +0000
@@ -1,3 +1,7 @@
+2014-06-15 Glenn Morris <address@hidden>
+
+ * Makefile.in (bootstrap-clean): New.
+
2014-06-10 Glenn Morris <address@hidden>
* Makefile.in (INFO_EXT): Remove and replace by ".info" throughout.
=== modified file 'doc/emacs/Makefile.in'
--- a/doc/emacs/Makefile.in 2014-06-10 02:11:38 +0000
+++ b/doc/emacs/Makefile.in 2014-06-15 00:17:21 +0000
@@ -181,7 +181,7 @@
emacs-xtra.pdf: $(EMACS_XTRA)
$(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-xtra.texi
-.PHONY: mostlyclean clean distclean maintainer-clean infoclean
+.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean infoclean
## Temp files.
mostlyclean:
@@ -203,7 +203,7 @@
$(buildinfodir)/emacs.info-[1-9] \
$(buildinfodir)/emacs.info-[1-9][0-9]
-maintainer-clean: distclean infoclean
+bootstrap-clean maintainer-clean: distclean infoclean
.PHONY: dist
=== modified file 'doc/lispintro/ChangeLog'
--- a/doc/lispintro/ChangeLog 2014-06-10 02:11:38 +0000
+++ b/doc/lispintro/ChangeLog 2014-06-15 00:17:21 +0000
@@ -1,3 +1,7 @@
+2014-06-15 Glenn Morris <address@hidden>
+
+ * Makefile.in (bootstrap-clean): New.
+
2014-06-10 Glenn Morris <address@hidden>
* Makefile.in (INFO_EXT): Remove and replace by ".info" throughout.
=== modified file 'doc/lispintro/Makefile.in'
--- a/doc/lispintro/Makefile.in 2014-06-10 02:11:38 +0000
+++ b/doc/lispintro/Makefile.in 2014-06-15 00:17:21 +0000
@@ -101,7 +101,7 @@
emacs-lisp-intro.html: ${srcs}
$(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@
${srcdir}/emacs-lisp-intro.texi
-.PHONY: mostlyclean clean distclean maintainer-clean infoclean
+.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean infoclean
mostlyclean:
rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \
@@ -119,7 +119,7 @@
$(buildinfodir)/eintr.info \
$(buildinfodir)/eintr.info-[1-9]
-maintainer-clean: distclean infoclean
+bootstrap-clean maintainer-clean: distclean infoclean
.PHONY: dist
=== modified file 'doc/lispref/ChangeLog'
--- a/doc/lispref/ChangeLog 2014-06-15 00:06:30 +0000
+++ b/doc/lispref/ChangeLog 2014-06-15 00:17:21 +0000
@@ -1,3 +1,7 @@
+2014-06-15 Glenn Morris <address@hidden>
+
+ * Makefile.in (bootstrap-clean): New.
+
2014-06-15 Eli Zaretskii <address@hidden>
* commands.texi (Accessing Mouse): Improve the wording of the
=== modified file 'doc/lispref/Makefile.in'
--- a/doc/lispref/Makefile.in 2014-06-10 02:11:38 +0000
+++ b/doc/lispref/Makefile.in 2014-06-15 00:17:21 +0000
@@ -153,7 +153,7 @@
elisp.pdf: $(srcs)
$(ENVADD) $(TEXI2PDF) $(srcdir)/elisp.texi
-.PHONY: mostlyclean clean distclean maintainer-clean infoclean
+.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean infoclean
## [12] stuff is from two-volume.make.
mostlyclean:
@@ -175,7 +175,7 @@
$(buildinfodir)/elisp.info-[1-9] \
$(buildinfodir)/elisp.info-[1-9][0-9]
-maintainer-clean: distclean infoclean
+bootstrap-clean maintainer-clean: distclean infoclean
.PHONY: dist
=== modified file 'doc/misc/ChangeLog'
--- a/doc/misc/ChangeLog 2014-06-12 06:04:48 +0000
+++ b/doc/misc/ChangeLog 2014-06-15 00:17:21 +0000
@@ -1,3 +1,7 @@
+2014-06-15 Glenn Morris <address@hidden>
+
+ * Makefile.in (bootstrap-clean): New.
+
2014-06-12 Vincent Belaïche <address@hidden>
* ses.texi: Adding documentation for SES local printer functions.
=== modified file 'doc/misc/Makefile.in'
--- a/doc/misc/Makefile.in 2014-06-12 01:00:57 +0000
+++ b/doc/misc/Makefile.in 2014-06-15 00:17:21 +0000
@@ -209,7 +209,7 @@
${buildinfodir}/tramp.info tramp.html: ${srcdir}/trampver.texi
-.PHONY: mostlyclean clean distclean maintainer-clean
+.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
mostlyclean:
rm -f *.aux *.log *.toc *.c[mp] *.c[mp]s *.fn *.fns \
@@ -235,7 +235,7 @@
$(buildinfodir)/$${file}-[1-9][0-9]; \
done
-maintainer-clean: distclean infoclean
+bootstrap-clean maintainer-clean: distclean infoclean
dist:
rm -rf emacs-misc-${version}
=== modified file 'lib-src/ChangeLog'
--- a/lib-src/ChangeLog 2014-06-13 23:05:00 +0000
+++ b/lib-src/ChangeLog 2014-06-15 00:17:21 +0000
@@ -1,3 +1,7 @@
+2014-06-15 Glenn Morris <address@hidden>
+
+ * Makefile.in (bootstrap-clean): New.
+
2014-06-13 Glenn Morris <address@hidden>
* Makefile.in (../lib/libgnu.a):
=== modified file 'lib-src/Makefile.in'
--- a/lib-src/Makefile.in 2014-06-13 23:05:00 +0000
+++ b/lib-src/Makefile.in 2014-06-15 00:17:21 +0000
@@ -255,7 +255,7 @@
fi
.PHONY: install uninstall mostlyclean clean distclean maintainer-clean
-.PHONY: extraclean check tags
+.PHONY: bootstrap-clean extraclean check tags
install: $(DESTDIR)${archlibdir}
@echo
@@ -289,7 +289,7 @@
-rm -f TAGS
-rm -f Makefile blessmail
-maintainer-clean: distclean
+bootstrap-clean maintainer-clean: distclean
true
extraclean: maintainer-clean
=== modified file 'lib/Makefile.am'
--- a/lib/Makefile.am 2013-05-15 16:15:07 +0000
+++ b/lib/Makefile.am 2014-06-15 00:17:21 +0000
@@ -16,3 +16,7 @@
libgnu_a_SOURCES += openat-die.c save-cwd.c
endif
+
+.PHONY: bootstrap-clean
+
+bootstrap-clean: maintainer-clean
=== modified file 'lwlib/ChangeLog'
--- a/lwlib/ChangeLog 2014-06-13 23:05:00 +0000
+++ b/lwlib/ChangeLog 2014-06-15 00:17:21 +0000
@@ -1,3 +1,9 @@
+2014-06-15 Glenn Morris <address@hidden>
+
+ * Makefile.in (mostlyclean, clean, distclean, maintainer-clean):
+ Declare as PHONY.
+ (bootstrap-clean): New.
+
2014-06-13 Glenn Morris <address@hidden>
* Makefile.in ($(globals_h)):
=== modified file 'lwlib/Makefile.in'
--- a/lwlib/Makefile.in 2014-06-13 23:05:00 +0000
+++ b/lwlib/Makefile.in 2014-06-15 00:17:21 +0000
@@ -91,13 +91,16 @@
xlwmenu.o: $(src_h) xlwmenu.c xlwmenu.h lwlib.h xlwmenuP.h \
$(srcdir)/../src/xterm.h
-mostlyclean:
+
+.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
+
+clean mostlyclean:
rm -f *.o liblw.a \#*
-clean: mostlyclean
distclean: clean
rm -f Makefile
-maintainer-clean: distclean
+
+bootstrap-clean maintainer-clean: distclean
rm -f TAGS
=== modified file 'nextstep/ChangeLog'
--- a/nextstep/ChangeLog 2014-03-13 00:43:30 +0000
+++ b/nextstep/ChangeLog 2014-06-15 00:17:21 +0000
@@ -1,3 +1,7 @@
+2014-06-15 Glenn Morris <address@hidden>
+
+ * Makefile.in (bootstrap-clean): New.
+
2014-03-13 Glenn Morris <address@hidden>
* templates/Info.plist.in: Make it strictly valid xml. (Bug#17002)
=== modified file 'nextstep/Makefile.in'
--- a/nextstep/Makefile.in 2014-01-01 07:43:34 +0000
+++ b/nextstep/Makefile.in 2014-06-15 00:17:21 +0000
@@ -52,7 +52,7 @@
all: ${ns_appdir} ${ns_appbindir}/Emacs
-.PHONY: clean distclean maintainer-clean
+.PHONY: clean distclean bootstrap-clean maintainer-clean
clean:
rm -rf ${ns_appdir}
@@ -64,6 +64,6 @@
Cocoa/Emacs.base/Contents/Info.plist \
Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings
-maintainer-clean: distclean
+bootstrap-clean maintainer-clean: distclean
### Makefile.in ends here
=== modified file 'nt/ChangeLog'
--- a/nt/ChangeLog 2014-06-05 06:24:54 +0000
+++ b/nt/ChangeLog 2014-06-15 00:17:21 +0000
@@ -1,3 +1,7 @@
+2014-06-15 Glenn Morris <address@hidden>
+
+ * Makefile.in (bootstrap-clean): New.
+
2014-06-05 Dmitry Antipov <address@hidden>
* inc/ms-w32.h (POLL_FOR_INPUT): Define with HAVE_WINDOW_SYSTEM.
=== modified file 'nt/Makefile.in'
--- a/nt/Makefile.in 2014-05-29 19:16:32 +0000
+++ b/nt/Makefile.in 2014-06-15 00:17:21 +0000
@@ -162,7 +162,7 @@
fi
.PHONY: install uninstall mostlyclean clean distclean maintainer-clean
-.PHONY: extraclean check tags
+.PHONY: bootstrap-clean extraclean check tags
install: $(DESTDIR)${archlibdir}
@echo
@@ -193,7 +193,7 @@
-rm -f TAGS
-rm -f Makefile
-maintainer-clean: distclean
+bootstrap-clean maintainer-clean: distclean
true
extraclean: maintainer-clean
=== modified file 'oldXMenu/ChangeLog'
--- a/oldXMenu/ChangeLog 2014-01-15 03:06:07 +0000
+++ b/oldXMenu/ChangeLog 2014-06-15 00:17:21 +0000
@@ -1,3 +1,9 @@
+2014-06-15 Glenn Morris <address@hidden>
+
+ * Makefile.in (mostlyclean, clean, distclean, maintainer-clean, tags):
+ Declare as PHONY.
+ (boostrap-clean): New.
+
2013-10-24 Glenn Morris <address@hidden>
* Makefile.in (abs_top_srcdir): New, set by configure.
=== modified file 'oldXMenu/Makefile.in'
--- a/oldXMenu/Makefile.in 2014-01-01 07:43:34 +0000
+++ b/oldXMenu/Makefile.in 2014-06-15 00:17:21 +0000
@@ -134,14 +134,17 @@
XMakeAssoc.o: XMakeAssoc.c X10.h
insque.o: insque.c
-FRC.mostlyclean:
-mostlyclean: FRC.mostlyclean
+.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
+
+mostlyclean:
rm -f libXMenu11.a ${OBJS} ${EXTRA}
+
clean: mostlyclean
-distclean: clean
+
+boostrap-clean maintainer-clean distclean: clean
rm -f Makefile
-maintainer-clean: distclean
+.PHONY: tags
tags:
$(TAGS) -t *.[ch]
-.PHONY: tags
+
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] trunk r117336: Parallelize clean rules using GNU make features,
Glenn Morris <=