Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

PATCH: Re: duplicate targets in Makefile rule



Zefram (zefram@xxxxxxxx) wrote:
> Adam Spiers wrote:
> >+ifeq ($(sdir),.)
> 
> This only works for certain makes.  pmake, for example, doesn't have this
> conditional syntax.

Ah, right.

> I repeat the suggestion that we use a non-filename
> (e.g. "texi") instead of "zsh.texi" for the pseudo-target.

OK, here's an attempt at that.  I haven't tested it with srcdir != `.'
yet though.  If someone else could check it through I'd appreciate it.

While looking through this file, other issues occurred to me:

- The rule for zshall.1 contains a case switch on $@.  Surely $@ will
  always be zshall.1?

- If I understand it correctly, the man pages get built inside the
  source tree rather than in $(sdir), but install.man tries to install
  them from $(sdir).  Also, install.html appears to assume that the
  HTML file(s) get built inside the source tree.  What's the correct
  policy?  Are all these docs platform-independent, and even if they
  are, should they get built inside the source tree?  Has anyone
  actually attempted a build outside the source tree recently?

- When the relevant converters are run on a source file in another
  directory, e.g. texi2info foo/bar.texi, where does the output get
  sent?  That's another reason for needing to test with sdir != `.',
  but I'm going to have to leave that to someone else due to time
  restrictions.

Index: Doc/Makefile.in
===================================================================
RCS file: /projects/zsh/zsh/Doc/Makefile.in,v
retrieving revision 1.1.1.60
diff -u -r1.1.1.60 Makefile.in
--- Doc/Makefile.in	2000/02/07 01:59:21	1.1.1.60
+++ Doc/Makefile.in	2000/02/10 15:13:44
@@ -51,7 +51,7 @@
 
 # yodl documentation
 
-YODLDOC = $(MAN) zsh.texi
+YODLDOC = $(MAN) texi
 
 MODDOCSRC = \
 Zsh/mod_cap.yo Zsh/mod_clone.yo \
@@ -73,26 +73,31 @@
 
 # ========== DEPENDENCIES FOR BUILDING ==========
 
-all: $(MAN) zsh.texi ../META-FAQ
+all: man texi ../META-FAQ
 .PHONY: all
 
-everything: all zsh.dvi zsh_us.ps zsh_a4.ps zsh_toc.html
+everything: all dvi ps html
 .PHONY: everything
 
-zsh.dvi: $(sdir)/zsh.texi
-	$(TEXI2DVI) $(sdir)/zsh.texi
+dvi: $(sdir)/zsh.dvi
+.PHONY: dvi
 
-zsh.texi $(sdir)/zsh.texi:
-	case $@ in \
-	  */*) target=$@ ;; \
-	  *) target=$(sdir)/$@ ;; \
-	esac; \
-	$(YODL) -o $$target -I$(sdir) -w ztexi.yo version.yo zsh.yo; \
-	test -f $$target
+$(sdir)/zsh.dvi: $(sdir)/zsh.texi
+	$(TEXI2DVI) $<
+
+texi: $(sdir)/zsh.texi
+.PHONY: texi
+
+$(sdir)/zsh.texi:
+	$(YODL) -o $@ -I$(sdir) -w ztexi.yo version.yo zsh.yo; \
+	test -f $@
 
-zsh.info: $(sdir)/zsh.texi
-	$(MAKEINFO) $(sdir)/zsh.texi
+info: $(sdir)/zsh.info
+.PHONY: info
 
+$(sdir)/zsh.info: $(sdir)/zsh.texi
+	$(MAKEINFO) $<
+
 .yo.1:
 	case $@ in \
 	  */*) target=$@ ;; \
@@ -102,16 +107,28 @@
 	    $(YODL) -I$(sdir) -w zman.yo version.yo $< | sed -e '1s/\\-/-/g' -e '/^\.'\''/d' > $$target \
 	;; esac; \
 	test -f $$target
+
+ps: us_ps a4_ps
+.PHONY: ps
+
+us_ps: $(sdir)/zsh_us.ps
+.PHONY: us_ps
 
-zsh_us.ps: zsh.dvi
-	$(DVIPS) -t letter -o $@ zsh.dvi
+$(sdir)/zsh_us.ps: $(sdir)/zsh.dvi
+	$(DVIPS) -t letter -o $@ $<
 
-zsh_a4.ps: zsh.dvi
-	$(DVIPS) -t a4 -o $@ zsh.dvi
+a4_ps: $(sdir)/zsh_a4.ps
+.PHONY: a4_ps
 
-zsh_toc.html: $(sdir)/zsh.texi
-	$(TEXI2HTML) $(sdir)/zsh.texi
+$(sdir)/zsh_a4.ps: $(sdir)/zsh.dvi
+	$(DVIPS) -t a4 -o $@ $<
 
+html: $(sdir)/zsh_toc.html
+.PHONY: html
+
+$(sdir)/zsh_toc.html: $(sdir)/zsh.texi
+	$(TEXI2HTML) $<
+
 zshall.1: zsh.yo
 	case $@ in \
 	  */*) target=$@ ;; \
@@ -129,8 +146,11 @@
 	test -f $(sdir_top)/META-FAQ
 
 $(YODLDOC): version.yo
+
+$(sdir)/zsh.texi: $(YODLSRC)
 
-zsh.texi: $(YODLSRC)
+man: $(MAN)
+.PHONY: man
 
 $(MAN): zmacros.yo zman.yo
 
@@ -225,7 +245,7 @@
 .PHONY: uninstall
 
 # install man pages, creating install directory if necessary
-install.man: $(MAN)
+install.man: man
 	$(sdir_top)/mkinstalldirs $(DESTDIR)$(mandir)/man1
 	for file in $(MAN); do \
 	    $(INSTALL_DATA) $(sdir)/$$file $(DESTDIR)$(mandir)/man1/`echo $$file | sed 's|zsh|$(tzsh)|'` || exit 1; \
@@ -233,7 +253,7 @@
 .PHONY: install.man
 
 # install info pages, creating install directory if necessary
-install.info: zsh.texi
+install.info: texi
 	$(sdir_top)/mkinstalldirs $(DESTDIR)$(infodir)
 	rm -rf infodir
 	mkdir infodir
@@ -267,7 +287,7 @@
 .PHONY: uninstall.info
 
 # install HTML manual
-install.html: zsh_toc.html
+install.html: html
 	$(sdir_top)/mkinstalldirs $(DESTDIR)$(htmldir)
 	for file in zsh_*.html; do \
 	    $(INSTALL_DATA) $$file $(DESTDIR)$(htmldir) || exit 1; \



Messages sorted by: Reverse Date, Date, Thread, Author