Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Feb 2001 12:54:09 +0100 (MET)
From:      Jason Brazile <jason@netcetera.ch>
To:        freebsd-hackers@freebsd.org
Subject:   make bug? (dependency names with '$')
Message-ID:  <200102201154.MAA00515@disco.netcetera.ch>

next in thread | raw e-mail | index | archive | help
Background:

  I want to construct a portable Makefile to build a java application.
  When a java source file contains an inner class, it creates class
  file names with an embedded '$'.

	$ cat foo.java
	public class foo {
		private class bar {
		}
	}
	$ javac foo.java
	$ ls 
	foo$bar.class   foo.class       foo.java

Problem:

  - BSD make seems to have trouble with dependencies whose names contain $.
  - I can construct a case where GNU make is happy enough, but BSD make isn't.

Test Case:

	$ cat Makefile
	   X=foo$bar.class
	  XX=foo$$bar.class
	 XXX=foo\$$bar.class

	.PHONY: x xx xxx yy

	x: $(X)
		echo $(X)

	xx: $(XX)
		echo $(XX)

	xxx: $(XXX)
		echo $(XXX)

	yy: $(XX)
		echo $(XXX)

	# LATEST BSD make (e.g. main.c at revision 1.46 2001/02/19 03:59:04)
	$ make x
	make: don't know how to make fooar.class. Stop
	$ make xx
	make: don't know how to make fooar.class. Stop
	$ make xxx
	make: don't know how to make foo\ar.class. Stop
	$ make yy 
	make: don't know how to make fooar.class. Stop

	# package: gmake-3.79.1 GNU version of 'make' utility
	$ gmake x
	gmake: *** No rule to make target `fooar.class', needed by `x'.  Stop.
	$ gmake xx
	echo foo$bar.class
	foo.class
	$ gmake xxx
	gmake: *** No rule to make target `foo\$bar.class', needed by `xxx'.  Stop.
	$ gmake yy
	echo foo\$bar.class
	foo$bar.class

Conclusion:

  I could live with having to use something like the "yy" target if it
  worked with BSD make, because it works with GNU make.

  If people agree that this seems like a bug, I will try to see if I
  can find where the problem is, but there are probably others who would 
  be more efficient at this.

Jason

------------------------------------------------------------------------
Jason Brazile                                 jason.brazile@netcetera.ch
Netcetera AG, 8040 Zuerich    phone +41 1 247 70 70  fax +41 1 247 70 75


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200102201154.MAA00515>