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.
This commit is contained in:
Glenn Morris 2014-06-14 17:17:21 -07:00
parent 90de50e270
commit 0e6929ecab
21 changed files with 131 additions and 85 deletions

View file

@ -1,3 +1,13 @@
2014-06-15 Glenn Morris <rgm@gnu.org>
* 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 <eggert@cs.ucla.edu>
Port part of the AIX fix to Solaris (Bug#17598).

View file

@ -770,22 +770,27 @@ uninstall-nt:
.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 @@ mostlyclean:
### 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_bootclean=\
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 @@ bootstrap-clean:
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 @@ maintainer-clean: bootstrap-clean
### 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 *~ \#*

View file

@ -1,3 +1,7 @@
2014-06-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (bootstrap-clean): New.
2014-06-10 Glenn Morris <rgm@gnu.org>
* Makefile.in (INFO_EXT): Remove and replace by ".info" throughout.

View file

@ -181,7 +181,7 @@ emacs-xtra.dvi: $(EMACS_XTRA)
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 @@ infoclean:
$(buildinfodir)/emacs.info-[1-9] \
$(buildinfodir)/emacs.info-[1-9][0-9]
maintainer-clean: distclean infoclean
bootstrap-clean maintainer-clean: distclean infoclean
.PHONY: dist

View file

@ -1,3 +1,7 @@
2014-06-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (bootstrap-clean): New.
2014-06-10 Glenn Morris <rgm@gnu.org>
* Makefile.in (INFO_EXT): Remove and replace by ".info" throughout.

View file

@ -101,7 +101,7 @@ emacs-lisp-intro.pdf: ${srcs}
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 @@ infoclean:
$(buildinfodir)/eintr.info \
$(buildinfodir)/eintr.info-[1-9]
maintainer-clean: distclean infoclean
bootstrap-clean maintainer-clean: distclean infoclean
.PHONY: dist

View file

@ -1,3 +1,7 @@
2014-06-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (bootstrap-clean): New.
2014-06-15 Eli Zaretskii <eliz@gnu.org>
* commands.texi (Accessing Mouse): Improve the wording of the

View file

@ -153,7 +153,7 @@ elisp.html: $(srcs)
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 @@ infoclean:
$(buildinfodir)/elisp.info-[1-9] \
$(buildinfodir)/elisp.info-[1-9][0-9]
maintainer-clean: distclean infoclean
bootstrap-clean maintainer-clean: distclean infoclean
.PHONY: dist

View file

@ -1,3 +1,7 @@
2014-06-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (bootstrap-clean): New.
2014-06-12 Vincent Belaïche <vincentb1@users.sourceforge.net>
* ses.texi: Adding documentation for SES local printer functions.

View file

@ -209,7 +209,7 @@ ${buildinfodir}/tramp.info tramp.html: EXTRA_OPTS = -D emacs
${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 @@ infoclean:
$(buildinfodir)/$${file}-[1-9][0-9]; \
done
maintainer-clean: distclean infoclean
bootstrap-clean maintainer-clean: distclean infoclean
dist:
rm -rf emacs-misc-${version}

View file

@ -1,3 +1,7 @@
2014-06-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (bootstrap-clean): New.
2014-06-13 Glenn Morris <rgm@gnu.org>
* Makefile.in (../lib/libgnu.a):

View file

@ -255,7 +255,7 @@ $(DESTDIR)${archlibdir}: all
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 @@ distclean: clean
-rm -f TAGS
-rm -f Makefile blessmail
maintainer-clean: distclean
bootstrap-clean maintainer-clean: distclean
true
extraclean: maintainer-clean

View file

@ -16,3 +16,7 @@ include gnulib.mk
libgnu_a_SOURCES += openat-die.c save-cwd.c
endif
.PHONY: bootstrap-clean
bootstrap-clean: maintainer-clean

View file

@ -1,3 +1,9 @@
2014-06-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (mostlyclean, clean, distclean, maintainer-clean):
Declare as PHONY.
(bootstrap-clean): New.
2014-06-13 Glenn Morris <rgm@gnu.org>
* Makefile.in ($(globals_h)):

View file

@ -91,13 +91,16 @@ lwlib-Xm.o: $(src_h) lwlib-Xm.c lwlib-Xm.h lwlib.h lwlib-int.h lwlib-utils.h
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

View file

@ -1,3 +1,7 @@
2014-06-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (bootstrap-clean): New.
2014-03-13 Glenn Morris <rgm@gnu.org>
* templates/Info.plist.in: Make it strictly valid xml. (Bug#17002)

View file

@ -52,7 +52,7 @@ ${ns_appbindir}/Emacs: ${ns_appdir} ${ns_check_file} ../src/emacs${EXEEXT}
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 @@ distclean: clean
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

View file

@ -1,3 +1,7 @@
2014-06-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (bootstrap-clean): New.
2014-06-05 Dmitry Antipov <dmantipov@yandex.ru>
* inc/ms-w32.h (POLL_FOR_INPUT): Define with HAVE_WINDOW_SYSTEM.

View file

@ -162,7 +162,7 @@ $(DESTDIR)${archlibdir}: all
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 @@ distclean: clean
-rm -f TAGS
-rm -f Makefile
maintainer-clean: distclean
bootstrap-clean maintainer-clean: distclean
true
extraclean: maintainer-clean

View file

@ -1,3 +1,9 @@
2014-06-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (mostlyclean, clean, distclean, maintainer-clean, tags):
Declare as PHONY.
(boostrap-clean): New.
2013-10-24 Glenn Morris <rgm@gnu.org>
* Makefile.in (abs_top_srcdir): New, set by configure.

View file

@ -134,14 +134,17 @@ XDestAssoc.o: XDestAssoc.c X10.h
XMakeAssoc.o: XMakeAssoc.c X10.h
insque.o: insque.c
FRC.mostlyclean:
mostlyclean: FRC.mostlyclean
rm -f libXMenu11.a ${OBJS} ${EXTRA}
clean: mostlyclean
distclean: clean
rm -f Makefile
maintainer-clean: distclean
.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
mostlyclean:
rm -f libXMenu11.a ${OBJS} ${EXTRA}
clean: mostlyclean
boostrap-clean maintainer-clean distclean: clean
rm -f Makefile
.PHONY: tags
tags:
$(TAGS) -t *.[ch]
.PHONY: tags