Delivered-To: listarch-cygwin AT sourceware DOT cygnus DOT com
Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
Sender: cygwin-owner AT sourceware DOT cygnus DOT com
Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com
From: Graham Dumpleton <Graham DOT Dumpleton AT ra DOT pad DOT otc DOT com DOT au>
Message-Id: <199902150959.UAA16467@baldric.pad.otc.com.au>
Subject: B20: make confused with //a style drive specifiers
To: cygwin AT sourceware DOT cygnus DOT com
Date: Mon, 15 Feb 1999 20:59:23 +1100 (EST)
Cc: Graham DOT Dumpleton AT otcgpo DOT isg DOT otc DOT com DOT au
X-Mailer: ELM [version 2.4 PL24]
Content-Type: text

Came across the following problem in B20 which I believe should work. With
a makefile of:

  need1 := g:/a g:/b g:/c g:/d g:/e g:/f

  all1 : $(need1)

  $(need1) : % :
	  @echo $@

  need2 := //g/a //g/b //g/c //g/d //g/e //g/f

  all2 : $(need2)

  $(need2) : % :
	  @echo $@

When I run "make all1" I get.

  g:/a
  g:/b
  g:/c
  g:/d
  g:/e
  g:/f

When I run "make all2" I get.

  make: *** No rule to make target `//g/a', needed by `all2'.  Stop.

If you use -p option to look at what is going on you will find that make
seems to be incorrectly concatenating adjacent targets together when "//g"
is used instead of "g:".

  all2: //g/a //g/b //g/c //g/d //g/e //g/f
  #  Command-line target.
  #  Implicit rule search has been done.
  #  File does not exist.
  #  File has not been updated.

  //g/a //g/b:
  #  Implicit rule search has not been done.
  #  Implicit/static pattern stem: `//g/a //g/b'
  #  Modification time never checked.
  #  File has not been updated.
  #  commands to execute (from `foo.mk', line 13):
	  @echo $@

Since the rule which is set up seems to have a target of "//g/a //g/b",
there is no separate targets for either "//g/a" or "//g/b" and thus make
doesn't know how to build them, or something like that.

-- 
Graham Dumpleton (grahamd AT nms DOT otc DOT com DOT au)