zsh-workers
 help / color / mirror / code / Atom feed
* duplicate targets in Makefile rule
@ 2000-02-09 23:58 Adam Spiers
  2000-02-10  9:57 ` Zefram
  0 siblings, 1 reply; 13+ messages in thread
From: Adam Spiers @ 2000-02-09 23:58 UTC (permalink / raw)
  To: zsh workers mailing list

I'm puzzled by the following on line 85 of Doc/Makefile.in:

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

When is sdir not `.'?  And when it is, make barfs with things like:

make[1]: Entering directory `/mnt/hda7/usr_src/redhat/BUILD/zsh-3.1.6/Doc'
Makefile:217: target `zsh.texi' given more than once in the same rule.
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory
`/mnt/hda7/usr_src/redhat/BUILD/zsh-3.1.6/Doc'


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

* Re: duplicate targets in Makefile rule
  2000-02-09 23:58 duplicate targets in Makefile rule Adam Spiers
@ 2000-02-10  9:57 ` Zefram
  2000-02-10 13:37   ` Adam Spiers
  0 siblings, 1 reply; 13+ messages in thread
From: Zefram @ 2000-02-10  9:57 UTC (permalink / raw)
  To: Adam Spiers; +Cc: zsh workers mailing list

Adam Spiers wrote:
>When is sdir not `.'?

When you're compiling in a build tree separate from the source tree.

-zefram


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

* Re: duplicate targets in Makefile rule
  2000-02-10  9:57 ` Zefram
@ 2000-02-10 13:37   ` Adam Spiers
  2000-02-10 13:54     ` Andrej Borsenkow
  0 siblings, 1 reply; 13+ messages in thread
From: Adam Spiers @ 2000-02-10 13:37 UTC (permalink / raw)
  To: zsh workers mailing list

Zefram (zefram@fysh.org) wrote:
> Adam Spiers wrote:
> >When is sdir not `.'?
> 
> When you're compiling in a build tree separate from the source tree.

I see ... so how can we stop make from complaining when sdir is `.' ?
If we're compiling in a separate build tree then presumably we don't
need a rule for the source tree version of zsh.texi, so can we just
get rid of the zsh.texi target and leave the $(dir)/zsh.texi one?  If
we can, the patch is below.  However noone else seems to have
encountered a problem with this (and neither did I before Christmas),
so it's more likely I've done something wrong.  Any ideas what?

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 13:33:29
@@ -82,7 +82,7 @@
 zsh.dvi: $(sdir)/zsh.texi
 	$(TEXI2DVI) $(sdir)/zsh.texi
 
-zsh.texi $(sdir)/zsh.texi:
+$(sdir)/zsh.texi:
 	case $@ in \
 	  */*) target=$@ ;; \
 	  *) target=$(sdir)/$@ ;; \


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

* RE: duplicate targets in Makefile rule
  2000-02-10 13:37   ` Adam Spiers
@ 2000-02-10 13:54     ` Andrej Borsenkow
  2000-02-10 14:23       ` Adam Spiers
  0 siblings, 1 reply; 13+ messages in thread
From: Andrej Borsenkow @ 2000-02-10 13:54 UTC (permalink / raw)
  To: Adam Spiers, zsh workers mailing list

>
> Zefram (zefram@fysh.org) wrote:
> > Adam Spiers wrote:
> > >When is sdir not `.'?
> >
> > When you're compiling in a build tree separate from the source tree.
>
> I see ... so how can we stop make from complaining when sdir is `.' ?
> If we're compiling in a separate build tree then presumably we don't
> need a rule for the source tree version of zsh.texi, so can we just
> get rid of the zsh.texi target and leave the $(dir)/zsh.texi one?  If
> we can, the patch is below.  However noone else seems to have
> encountered a problem with this (and neither did I before Christmas),
> so it's more likely I've done something wrong.  Any ideas what?
>

Sorry? Pls, see 9543, 9687, 9593 and more in this thread.

The current problem is, zsh.texi should be in source dir (as it is supposed
to exists even if user does not have yodl) - so, it belongs to src dir. The
change you proposed make zsh.texi target name dependent on source dir
location. So, it you want to rebuild just the texi, you'll have to know
exact src location and type "make /path/to/source/dir/zsh.texi"

For this reason I suggested having standard targets man, texi, info etc and
make them depend on actual files. Like

texi: $(sdir)/zsh.texi

$(sdir)/zsh.texi: ... (as currently)

Then you can just say "make texi" or "make man". Looks better to me :-)

So far there was no reply.

/andrej


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

* Re: duplicate targets in Makefile rule
  2000-02-10 13:54     ` Andrej Borsenkow
@ 2000-02-10 14:23       ` Adam Spiers
  2000-02-10 14:31         ` Zefram
  0 siblings, 1 reply; 13+ messages in thread
From: Adam Spiers @ 2000-02-10 14:23 UTC (permalink / raw)
  To: zsh workers mailing list

Andrej Borsenkow (Andrej.Borsenkow@mow.siemens.ru) wrote:
> Sorry? Pls, see 9543, 9687, 9593 and more in this thread.

Hmm.  I did do a search on zsh-workers before I e-mailed the list
about this, but the engine came up with no matches, and for some
reason, I still can't get any query similar to
`zsh.texi;given;once;rule' to produce the relevant articles, even with
`partial match' switched on.  Anyway, thanks for the pointers, and
sorry for the extra noise.  Just for reference, I think you meant 9587
rather than 9687.

> The current problem is, zsh.texi should be in source dir (as it is supposed
> to exists even if user does not have yodl) - so, it belongs to src dir. The
> change you proposed make zsh.texi target name dependent on source dir
> location. So, it you want to rebuild just the texi, you'll have to know
> exact src location and type "make /path/to/source/dir/zsh.texi"
> 
> For this reason I suggested having standard targets man, texi, info etc and
> make them depend on actual files. Like
> 
> texi: $(sdir)/zsh.texi
> 
> $(sdir)/zsh.texi: ... (as currently)
> 
> Then you can just say "make texi" or "make man". Looks better to me :-)
> 
> So far there was no reply.

Maybe that's because you followed your suggestion with `That's what
bash does.' ;-)

Anyway, this needs to be resolved fairly swiftly, as presumably anyone
using gmake is currently unable to build the docs.  I don't know
enough about the Makefile structure in general to comment on your
suggestion, but here's another suggestion which feel free to shoot
down in flames :-)  It works for when sdir is `.', but is untested
otherwise.

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 14:16:11
@@ -82,7 +82,13 @@
 zsh.dvi: $(sdir)/zsh.texi
 	$(TEXI2DVI) $(sdir)/zsh.texi
 
-zsh.texi $(sdir)/zsh.texi:
+ifeq ($(sdir),.)
+	ZSHTEXIS=zsh.texi
+else
+	ZSHTEXIS=zsh.texi $(sdir)/zsh.texi
+endif
+
+$(ZSHTEXIS):
 	case $@ in \
 	  */*) target=$@ ;; \
 	  *) target=$(sdir)/$@ ;; \


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

* Re: duplicate targets in Makefile rule
  2000-02-10 14:23       ` Adam Spiers
@ 2000-02-10 14:31         ` Zefram
  2000-02-10 15:36           ` PATCH: " Adam Spiers
  0 siblings, 1 reply; 13+ messages in thread
From: Zefram @ 2000-02-10 14:31 UTC (permalink / raw)
  To: Adam Spiers; +Cc: zsh workers mailing list

Adam Spiers wrote:
>-zsh.texi $(sdir)/zsh.texi:
>+ifeq ($(sdir),.)
>+	ZSHTEXIS=zsh.texi
>+else
>+	ZSHTEXIS=zsh.texi $(sdir)/zsh.texi
>+endif
>+
>+$(ZSHTEXIS):

This only works for certain makes.  pmake, for example, doesn't have this
conditional syntax.  I repeat the suggestion that we use a non-filename
(e.g. "texi") instead of "zsh.texi" for the pseudo-target.

-zefram


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

* PATCH: Re: duplicate targets in Makefile rule
  2000-02-10 14:31         ` Zefram
@ 2000-02-10 15:36           ` Adam Spiers
  2000-02-10 15:43             ` Zefram
  0 siblings, 1 reply; 13+ messages in thread
From: Adam Spiers @ 2000-02-10 15:36 UTC (permalink / raw)
  To: zsh workers mailing list

Zefram (zefram@fysh.org) 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; \


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

* Re: PATCH: Re: duplicate targets in Makefile rule
  2000-02-10 15:36           ` PATCH: " Adam Spiers
@ 2000-02-10 15:43             ` Zefram
  2000-02-10 17:03               ` Adam Spiers
  0 siblings, 1 reply; 13+ messages in thread
From: Zefram @ 2000-02-10 15:43 UTC (permalink / raw)
  To: Adam Spiers; +Cc: zsh workers mailing list

Adam Spiers wrote:
>- 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).

$(sdir) is the source tree.  man pages and TeXinfo get built in the
source tree, everything else should be in the build tree.

-zefram


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

* PATCH: Re: duplicate targets in Makefile rule
  2000-02-10 15:43             ` Zefram
@ 2000-02-10 17:03               ` Adam Spiers
  2000-02-10 17:11                 ` Zefram
  0 siblings, 1 reply; 13+ messages in thread
From: Adam Spiers @ 2000-02-10 17:03 UTC (permalink / raw)
  To: zsh workers mailing list

Zefram (zefram@fysh.org) wrote:
> $(sdir) is the source tree.  man pages and TeXinfo get built in the
> source tree, everything else should be in the build tree.

Doh, of course.  In that case, apply this instead of 9665.

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 16:30:32
@@ -51,7 +51,7 @@
 
 # yodl documentation
 
-YODLDOC = $(MAN) zsh.texi
+YODLDOC = $(MAN) texi
 
 MODDOCSRC = \
 Zsh/mod_cap.yo Zsh/mod_clone.yo \
@@ -73,25 +73,30 @@
 
 # ========== 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
 
+dvi: zsh.dvi
+.PHONY: dvi
+
 zsh.dvi: $(sdir)/zsh.texi
-	$(TEXI2DVI) $(sdir)/zsh.texi
+	$(TEXI2DVI) $<
 
-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
+texi: $(sdir)/zsh.texi
+.PHONY: texi
+
+$(sdir)/zsh.texi:
+	$(YODL) -o $@ -I$(sdir) -w ztexi.yo version.yo zsh.yo; \
+	test -f $@
 
+info: zsh.info
+.PHONY: info
+
 zsh.info: $(sdir)/zsh.texi
-	$(MAKEINFO) $(sdir)/zsh.texi
+	$(MAKEINFO) $<
 
 .yo.1:
 	case $@ in \
@@ -103,14 +108,26 @@
 	;; esac; \
 	test -f $$target
 
+ps: us_ps a4_ps
+.PHONY: ps
+
+us_ps: zsh_us.ps
+.PHONY: us_ps
+
 zsh_us.ps: zsh.dvi
-	$(DVIPS) -t letter -o $@ zsh.dvi
+	$(DVIPS) -t letter -o $@ $<
 
+a4_ps: zsh_a4.ps
+.PHONY: a4_ps
+
 zsh_a4.ps: zsh.dvi
-	$(DVIPS) -t a4 -o $@ zsh.dvi
+	$(DVIPS) -t a4 -o $@ $<
+
+html: zsh_toc.html
+.PHONY: html
 
 zsh_toc.html: $(sdir)/zsh.texi
-	$(TEXI2HTML) $(sdir)/zsh.texi
+	$(TEXI2HTML) $<
 
 zshall.1: zsh.yo
 	case $@ in \
@@ -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; \


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

* Re: PATCH: Re: duplicate targets in Makefile rule
  2000-02-10 17:03               ` Adam Spiers
@ 2000-02-10 17:11                 ` Zefram
  2000-02-21  2:12                   ` Adam Spiers
  0 siblings, 1 reply; 13+ messages in thread
From: Zefram @ 2000-02-10 17:11 UTC (permalink / raw)
  To: Adam Spiers; +Cc: zsh workers mailing list

Adam Spiers wrote:
> zsh.dvi: $(sdir)/zsh.texi
>-	$(TEXI2DVI) $(sdir)/zsh.texi
>+	$(TEXI2DVI) $<

Not portable: $< does not portably exist (and is not at all meaningful) in
an explicit rule.  The original code here is the only safe way to do it.

The only magic make variables that can be portably relied on are $@
(the target, available in all rules) and $< (the source, in implicit
rules only).

-zefram


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

* PATCH: Re: duplicate targets in Makefile rule
  2000-02-10 17:11                 ` Zefram
@ 2000-02-21  2:12                   ` Adam Spiers
  2000-02-21 10:07                     ` Zefram
  0 siblings, 1 reply; 13+ messages in thread
From: Adam Spiers @ 2000-02-21  2:12 UTC (permalink / raw)
  To: zsh workers mailing list

Zefram (zefram@fysh.org) wrote:
> Adam Spiers wrote:
> > zsh.dvi: $(sdir)/zsh.texi
> >-	$(TEXI2DVI) $(sdir)/zsh.texi
> >+	$(TEXI2DVI) $<
> 
> Not portable: $< does not portably exist

*sigh* You learn something every day.  Why is it not meaningful
though, out of curiosity?

This patch is instead of 9669.  It's been sitting in my postponed
folder for weeks (forgot to send it when I wrote it), so I hope it's
still good.  Last time I sent patches in I probably broke the record
for the most incorrect patches submitted to zsh-workers in one
day... apologies in advance if there's STILL something wrong with
this.


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 17:13:36
@@ -51,7 +51,7 @@
 
 # yodl documentation
 
-YODLDOC = $(MAN) zsh.texi
+YODLDOC = $(MAN) texi
 
 MODDOCSRC = \
 Zsh/mod_cap.yo Zsh/mod_clone.yo \
@@ -73,23 +73,28 @@
 
 # ========== 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
 
+dvi: zsh.dvi
+.PHONY: dvi
+
 zsh.dvi: $(sdir)/zsh.texi
 	$(TEXI2DVI) $(sdir)/zsh.texi
 
-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
+texi: $(sdir)/zsh.texi
+.PHONY: texi
+
+$(sdir)/zsh.texi:
+	$(YODL) -o $@ -I$(sdir) -w ztexi.yo version.yo zsh.yo; \
+	test -f $@
 
+info: zsh.info
+.PHONY: info
+
 zsh.info: $(sdir)/zsh.texi
 	$(MAKEINFO) $(sdir)/zsh.texi
 
@@ -103,12 +108,24 @@
 	;; esac; \
 	test -f $$target
 
+ps: us_ps a4_ps
+.PHONY: ps
+
+us_ps: zsh_us.ps
+.PHONY: us_ps
+
 zsh_us.ps: zsh.dvi
 	$(DVIPS) -t letter -o $@ zsh.dvi
 
+a4_ps: zsh_a4.ps
+.PHONY: a4_ps
+
 zsh_a4.ps: zsh.dvi
 	$(DVIPS) -t a4 -o $@ zsh.dvi
 
+html: zsh_toc.html
+.PHONY: html
+
 zsh_toc.html: $(sdir)/zsh.texi
 	$(TEXI2HTML) $(sdir)/zsh.texi
 
@@ -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; \


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

* Re: PATCH: Re: duplicate targets in Makefile rule
  2000-02-21  2:12                   ` Adam Spiers
@ 2000-02-21 10:07                     ` Zefram
  2000-02-21 10:39                       ` Adam Spiers
  0 siblings, 1 reply; 13+ messages in thread
From: Zefram @ 2000-02-21 10:07 UTC (permalink / raw)
  To: Adam Spiers; +Cc: zsh workers mailing list

Adam Spiers wrote:
>> Not portable: $< does not portably exist
>
>*sigh* You learn something every day.  Why is it not meaningful
>though, out of curiosity?

There may be many (or no) dependencies in an explicit rule, whereas $<
is defined (for an implicit rule) to expand to the exactly one dependency.

-zefram


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

* Re: PATCH: Re: duplicate targets in Makefile rule
  2000-02-21 10:07                     ` Zefram
@ 2000-02-21 10:39                       ` Adam Spiers
  0 siblings, 0 replies; 13+ messages in thread
From: Adam Spiers @ 2000-02-21 10:39 UTC (permalink / raw)
  To: zsh workers mailing list

Zefram (zefram@fysh.org) wrote:
> Adam Spiers wrote:
> >> Not portable: $< does not portably exist
> >
> >*sigh* You learn something every day.  Why is it not meaningful
> >though, out of curiosity?
> 
> There may be many (or no) dependencies in an explicit rule, whereas $<
> is defined (for an implicit rule) to expand to the exactly one dependency.

I see.  I've only ever used GNU make, so I'd unconsciously assumed
that what the info pages say would be true for most makes:

  `$<'
       The name of the first dependency.  If the target got its commands
       from an implicit rule, this will be the first dependency added by
       the implicit rule (*note Implicit Rules::.).


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

end of thread, other threads:[~2000-02-21 10:39 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-02-09 23:58 duplicate targets in Makefile rule Adam Spiers
2000-02-10  9:57 ` Zefram
2000-02-10 13:37   ` Adam Spiers
2000-02-10 13:54     ` Andrej Borsenkow
2000-02-10 14:23       ` Adam Spiers
2000-02-10 14:31         ` Zefram
2000-02-10 15:36           ` PATCH: " Adam Spiers
2000-02-10 15:43             ` Zefram
2000-02-10 17:03               ` Adam Spiers
2000-02-10 17:11                 ` Zefram
2000-02-21  2:12                   ` Adam Spiers
2000-02-21 10:07                     ` Zefram
2000-02-21 10:39                       ` Adam Spiers

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