zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: phony make targets
@ 2000-01-02 19:39 Peter Stephenson
  2000-01-03  3:06 ` Zefram
  0 siblings, 1 reply; 3+ messages in thread
From: Peter Stephenson @ 2000-01-02 19:39 UTC (permalink / raw)
  To: Zsh hackers list

GNU make sometimes creates empty files with the names of phony targets such
as `FORCE' and `all'.  This should help in this case, I hope other forms of
make will just ignore it.  It's not a complete set but it includes the
targets I most frequently find created unnecessarily.

Index: Src/Makefile.in
===================================================================
RCS file: /home/pws/CVSROOT/projects/zsh/Src/Makefile.in,v
retrieving revision 1.9
diff -u -r1.9 Makefile.in
--- Src/Makefile.in	1999/12/22 23:17:29	1.9
+++ Src/Makefile.in	2000/01/02 17:47:49
@@ -39,6 +39,12 @@
 
 @DEFS_MK@
 
+.PHONY: all bin headers modules modobjs modules prep rm-modobjs-tmp \
+	FORCE mostlyclean-here clean-here distclean-here mostlyclean \
+	clean distclean realclean mostlyclean-modules clean-modules \
+	distclean-modules realclean-modules install.modules \
+	uninstall.modules proto
+
 sdir_src      = $(sdir)
 dir_src       = .
 
Index: Src/Makemod.in.in
===================================================================
RCS file: /home/pws/CVSROOT/projects/zsh/Src/Makemod.in.in,v
retrieving revision 1.4
diff -u -r1.4 Makemod.in.in
--- Src/Makemod.in.in	1999/12/21 15:18:27	1.4
+++ Src/Makemod.in.in	2000/01/02 17:50:53
@@ -40,6 +40,12 @@
 
 @DEFS_MK@
 
+.PHONY: all modobjs modules headers proto prep FORCE install uninstall \
+	install.bin uninstall.bin install.modules uninstall.modules \
+	install.bin-here uninstall.bin-here install.modules-here \
+	uninstall.modules-here mostlyclean-here clean-here distclean-here \
+	
+
 sdir_src      = $(sdir_top)/Src
 dir_src       = $(dir_top)/Src
 
Index: Doc/Makefile.in
===================================================================
RCS file: /home/pws/CVSROOT/projects/zsh/Doc/Makefile.in,v
retrieving revision 1.17
diff -u -r1.17 Makefile.in
--- Doc/Makefile.in	1999/12/21 15:18:27	1.17
+++ Doc/Makefile.in	2000/01/02 17:55:28
@@ -37,6 +37,10 @@
 
 @DEFS_MK@
 
+.PHONY: all everything install uninstall install.man uninstall.man \
+	install.info uninstall.info install.html uninstall.html \
+	clean-here distclean-here realclean-here
+
 MAKEINFO = makeinfo
 TEXI2DVI = texi2dvi
 DVIPS = dvips -D 300

-- 
Peter Stephenson <pws@pwstephenson.fsnet.co.uk>


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: PATCH: phony make targets
  2000-01-02 19:39 PATCH: phony make targets Peter Stephenson
@ 2000-01-03  3:06 ` Zefram
  2000-01-04 22:20   ` Peter Stephenson
  0 siblings, 1 reply; 3+ messages in thread
From: Zefram @ 2000-01-03  3:06 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh hackers list

Peter Stephenson wrote:
>GNU make sometimes creates empty files with the names of phony targets such
>as `FORCE' and `all'.  This should help in this case, I hope other forms of
>make will just ignore it.

makes that don't recognise it will ignore it, except that it will become
the default target if it is the first rule in the Makefile.  It should
go at the end of the Makefile.  Or for greater maintainability, put a
.PHONY pseudo-rule after the rule for each phony target.

But I'd like to know when make will actually create a file for a phony
target.  It shouldn't be possible for it to do that; there's something
seriously wrong if that's happening.

-zefram


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: PATCH: phony make targets
  2000-01-03  3:06 ` Zefram
@ 2000-01-04 22:20   ` Peter Stephenson
  0 siblings, 0 replies; 3+ messages in thread
From: Peter Stephenson @ 2000-01-04 22:20 UTC (permalink / raw)
  To: Zsh hackers list

Zefram wrote:
> Peter Stephenson wrote:
> >GNU make sometimes creates empty files with the names of phony targets such
> >as `FORCE' and `all'.  This should help in this case, I hope other forms of
> >make will just ignore it.
> 
> makes that don't recognise it will ignore it, except that it will become
> the default target if it is the first rule in the Makefile.  It should
> go at the end of the Makefile.  Or for greater maintainability, put a
> .PHONY pseudo-rule after the rule for each phony target.

Yes, I should have thought of that.

> But I'd like to know when make will actually create a file for a phony
> target.  It shouldn't be possible for it to do that; there's something
> seriously wrong if that's happening.

I've never found out when it's happening, since I only find them lying
round every now and then.  But make is the only thing that even knows about
these files, so it must be there.  I've seen on it various different
systems.  Could be `make -t'.

Index: Src/Makefile.in
===================================================================
RCS file: /home/pws/CVSROOT/projects/zsh/Src/Makefile.in,v
retrieving revision 1.10
diff -u -r1.10 Makefile.in
--- Src/Makefile.in	2000/01/02 17:59:10	1.10
+++ Src/Makefile.in	2000/01/04 20:33:33
@@ -39,12 +39,6 @@
 
 @DEFS_MK@
 
-.PHONY: all bin headers modules modobjs modules prep rm-modobjs-tmp \
-	FORCE mostlyclean-here clean-here distclean-here mostlyclean \
-	clean distclean realclean mostlyclean-modules clean-modules \
-	distclean-modules realclean-modules install.modules \
-	uninstall.modules proto
-
 sdir_src      = $(sdir)
 dir_src       = .
 
@@ -54,10 +48,13 @@
 DLLINK      = $(DLLD) $(LDFLAGS) $(LIBLDFLAGS) $(DLLDFLAGS) -o $@
 
 all: bin modules
+.PHONY: all
 
 bin: zsh
+.PHONY: bin
 
 modules: headers
+.PHONY: modules
 
 MAIN_OBJS = main.o
 
@@ -95,9 +92,11 @@
 	fi
 
 modobjs: headers rm-modobjs-tmp
+.PHONY: modobjs
 
 rm-modobjs-tmp:
 	rm -f stamp-modobjs.tmp
+.PHONY: rm-modobjs-tmp
 
 @CONFIG_MK@
 
@@ -121,8 +120,10 @@
 	cd $(dir_top) && \
 	    $(SHELL) $$top_srcdir/$(subdir)/mkmakemod.sh $(subdir) Makemod
 	@$(MAKE) -f Makemod $(MAKEDEFS) prep || rm -f Makemod
+.PHONY: prep
 
 FORCE:
+.PHONY: FORCE
 
 # ========== LINKING IN MODULES ==========
 
@@ -158,9 +159,11 @@
 
 install: install.bin install.modules
 uninstall: uninstall.bin uninstall.modules
+.PHONY: install uninstall
 
 install.bin: install.bin-here
 uninstall.bin: uninstall.bin-here
+.PHONY: install.bin uninstall.bin
 
 # install binary, creating install directory if necessary
 install.bin-here: zsh install.bin-@L@
@@ -173,19 +176,23 @@
 	rm -f $(DESTDIR)$(bindir)/$(tzsh).new
 	$(LN) $(DESTDIR)$(bindir)/$(tzsh)-$(VERSION) $(DESTDIR)$(bindir)/$(tzsh).new
 	mv $(DESTDIR)$(bindir)/$(tzsh).new $(DESTDIR)$(bindir)/$(tzsh)
+.PHONY: install.bin-here
 
 install.bin-N:
 install.bin-L: $(LIBZSH)
 	$(sdir_top)/mkinstalldirs $(DESTDIR)$(libdir)/$(tzsh)
 	$(INSTALL_PROGRAM) $(LIBZSH) $(DESTDIR)$(libdir)/$(tzsh)/$(LIBZSH)
+.PHONY: install.bin-N install.bin-L
 
 # uninstall binary
 uninstall.bin-here: uninstall.bin-@L@
 	rm -f $(DESTDIR)$(bindir)/$(tzsh)-$(VERSION) $(DESTDIR)$(bindir)/$(tzsh)
+.PHONY: uninstall.bin-here uninstall.bin-@L@
 
 uninstall.bin-N:
 uninstall.bin-L:
 	rm -f $(DESTDIR)$(libdir)/$(tzsh)/$(LIBZSH)
+.PHONY: uninstall.bin-N uninstall.bin-L
 
 # ========== DEPENDENCIES FOR CLEANUP ==========
 
@@ -195,20 +202,24 @@
 
 mostlyclean-here:
 	rm -f stamp-modobjs stamp-modobjs.tmp
+.PHONY: mostlyclean-here
 
 clean-here:
 	rm -f modules.index.tmp modules.stamp zsh ansi2knr.o ansi2knr
 	rm -f modules.index modules-bltin
 	rm -f libzsh-*.$(DL_EXT)
+.PHONY: clean-here
 
 distclean-here:
 	rm -f TAGS tags
 	rm -f Makefile mymods.conf
+.PHONY: distclean-here
 
 mostlyclean: mostlyclean-modules
 clean: clean-modules
 distclean: distclean-modules
 realclean: realclean-modules
+.PHONY: mostlyclean clean distclean realclean
 
 # Don't remake Makemod just to delete things, even if it doesn't exist.
 mostlyclean-modules clean-modules distclean-modules realclean-modules: modules.index
@@ -216,6 +227,8 @@
 	  $(MAKE) -f Makemod $(MAKEDEFS) `echo $@ | sed 's/-modules//'`; \
 	fi; \
 	exit 0
+.PHONY: mostlyclean-modules clean-modules distclean-modules \
+	realclean-modules
 
 @CLEAN_MK@
 
@@ -224,5 +237,6 @@
 install.modules uninstall.modules \
 modobjs modules headers proto $(MAIN_OBJS) zsh.export: Makemod
 	@$(MAKE) -f Makemod $(MAKEDEFS) $@
+.PHONY: install.modules uninstall.modules
 
 $(MAIN_OBJS): $(sdir)/zsh.h
Index: Src/Makemod.in.in
===================================================================
RCS file: /home/pws/CVSROOT/projects/zsh/Src/Makemod.in.in,v
retrieving revision 1.5
diff -u -r1.5 Makemod.in.in
--- Src/Makemod.in.in	2000/01/02 17:59:10	1.5
+++ Src/Makemod.in.in	2000/01/04 20:36:40
@@ -39,13 +39,7 @@
 INSTALL         = @INSTALL@
 
 @DEFS_MK@
-
-.PHONY: all modobjs modules headers proto prep FORCE install uninstall \
-	install.bin uninstall.bin install.modules uninstall.modules \
-	install.bin-here uninstall.bin-here install.modules-here \
-	uninstall.modules-here mostlyclean-here clean-here distclean-here \
 	
-
 sdir_src      = $(sdir_top)/Src
 dir_src       = $(dir_top)/Src
 
@@ -96,11 +90,13 @@
 # ========== DEPENDENCIES FOR BUILDING ==========
 
 all: modobjs modules
+.PHONY: all
 
 modobjs: $(MODOBJS)
 modules: $(MODULES)
 headers: $(MDHS)
 proto: $(PROTOS)
+.PHONY: modobjs modules headers proto
 
 prep:
 	@case $(sdir_top) in \
@@ -116,25 +112,31 @@
 	    $(SHELL) $$top_srcdir/Src/mkmakemod.sh $$dir Makefile || exit 1; \
 	    ( cd $$dir && $(MAKE) $(MAKEDEFS) $@ ) || exit 1; \
 	done
+.PHONY: prep
 
 headers prep: $(dir_src)/modules.stamp
 $(dir_src)/modules.stamp: $(MDDS)
 	echo 'timestamp for *.mdd files' > $@
+.PHONY: headers
 
 FORCE:
+.PHONY: FORCE
 
 # ========== DEPENDENCIES FOR INSTALLING ==========
 
 install: install.bin install.modules
 uninstall: uninstall.bin uninstall.modules
+.PHONY: install uninstall
 
 install.bin: install.bin-here
 uninstall.bin: uninstall.bin-here
 install.modules: install.modules-here
 uninstall.modules: uninstall.modules-here
+.PHONY: install.bin uninstall.bin install.modules uninstall.modules
 
 install.bin-here uninstall.bin-here:
 install.modules-here uninstall.modules-here:
+.PHONY: install.bin-here install.modules-here
 
 # ========== DEPENDENCIES FOR CLEANUP ==========
 
@@ -142,12 +144,15 @@
 
 mostlyclean-here:
 	rm -f *.o *.export *.$(DL_EXT)
+.PHONY: mostlyclean-here
 
 clean-here:
 	rm -f *.o.c *.syms *.pro *.epro *.mdh *.mdhi *.mdhs *.mdh.tmp
+.PHONY: clean-here
 
 distclean-here:
 	rm -f $(makefile) $(makefile).in
+.PHONY: distclean-here
 
 # ========== RECURSIVE MAKES ==========
 
Index: Doc/Makefile.in
===================================================================
RCS file: /home/pws/CVSROOT/projects/zsh/Doc/Makefile.in,v
retrieving revision 1.18
diff -u -r1.18 Makefile.in
--- Doc/Makefile.in	2000/01/02 17:59:10	1.18
+++ Doc/Makefile.in	2000/01/04 20:38:45
@@ -37,10 +37,6 @@
 
 @DEFS_MK@
 
-.PHONY: all everything install uninstall install.man uninstall.man \
-	install.info uninstall.info install.html uninstall.html \
-	clean-here distclean-here realclean-here
-
 MAKEINFO = makeinfo
 TEXI2DVI = texi2dvi
 DVIPS = dvips -D 300
@@ -78,8 +74,10 @@
 # ========== DEPENDENCIES FOR BUILDING ==========
 
 all: $(MAN) zsh.texi ../META-FAQ
+.PHONY: all
 
 everything: all zsh.dvi zsh_us.ps zsh_a4.ps zsh_toc.html
+.PHONY: everything
 
 zsh.dvi: zsh.texi
 	$(TEXI2DVI) $(sdir)/zsh.texi
@@ -212,9 +210,11 @@
 
 # install just installs the manual pages
 install: install.man
+.PHONY: install
 
 # uninstall just unistalls the manual pages
 uninstall: uninstall.man
+.PHONY: uninstall
 
 # install man pages, creating install directory if necessary
 install.man: $(MAN)
@@ -222,6 +222,7 @@
 	for file in $(MAN); do \
 	    $(INSTALL_DATA) $(sdir)/$$file $(DESTDIR)$(mandir)/man1/`echo $$file | sed 's|zsh|$(tzsh)|'` || exit 1; \
 	done
+.PHONY: install.man
 
 # install info pages, creating install directory if necessary
 install.info: zsh.texi
@@ -242,17 +243,20 @@
 	    rm -rf infodir; \
 	    exit 1; \
 	fi
+.PHONY: install.info
 
 # uninstall man pages
 uninstall.man:
 	for file in $(MAN); do \
 	    rm -f $(DESTDIR)$(mandir)/man1/`echo $$file | sed 's|zsh|$(tzsh)|'`; \
 	done
+.PHONY: uninstall.man
 
 # uninstall info pages
 uninstall.info:
 	rm -f $(DESTDIR)$(infodir)/$(tzsh).info
 	rm -f $(DESTDIR)$(infodir)/$(tzsh).info-[1-9]*
+.PHONY: uninstall.info
 
 # install HTML manual
 install.html: zsh_toc.html
@@ -260,10 +264,12 @@
 	for file in zsh_*.html; do \
 	    $(INSTALL_DATA) $$file $(DESTDIR)$(htmldir) || exit 1; \
 	done
+.PHONY: install.html
 
 # uninstall HTML manual
 uninstall.html:
 	rm -f $(DESTDIR)$(htmldir)/zsh_*.html
+.PHONY: uninstall.html
 
 # ========== DEPENDENCIES FOR CLEANUP ==========
 
@@ -272,13 +278,16 @@
 	rm -f *.aux *.cp *.cps *.fn *.fns *.ky *.log
 	rm -f *.pg *.pgs *.toc *.tp *.tps *.vr *.vrs
 	rm -rf infodir
+.PHONY: clean-here
 
 distclean-here: clean-here
 	rm -f Makefile
+.PHONY: distclean-here
 
 realclean-here: distclean-here
 	cd $(sdir) && rm -f Zsh/modlist.yo Zsh/modmenu.yo
 	cd $(sdir) && rm -f version.yo ../META-FAQ zsh.texi $(MAN)
+.PHONY: realclean-here
 
 @CLEAN_MK@
 
-- 
Peter Stephenson <pws@pwstephenson.fsnet.co.uk>


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2000-01-04 22:18 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-01-02 19:39 PATCH: phony make targets Peter Stephenson
2000-01-03  3:06 ` Zefram
2000-01-04 22:20   ` Peter Stephenson

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).