* 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).