From: luke AT research DOT canon DOT com DOT au (Luke Kendall) Subject: Re: B19.1 make.exe - mishandling set -e, excessive target activity 16 Oct 1998 13:46:27 -0700 Message-ID: <199810160242.MAA15318.cygnus.gnu-win32@tosh.research.canon.com.au> References: <3625A224 DOT 3A061C96 AT research DOT canon DOT com DOT au> Mime-Version: 1.0 (NeXT Mail 3.3 v118.2) Content-Type: text/plain To: bug-gnu-utils AT prep DOT ai DOT mit DOT edu Cc: luke AT research DOT canon DOT com DOT au, gnu-win32 AT cygnus DOT com I'm doing this under Unix (SunOS 5.5.1) and using gmake 3.74, but also getting the same results under Windows NT4.0 sp3, using Cygnus Beta 19.1 and therefore GNU Make version 3.75-B19. Yesterday, I reported the problem below. Today it bit me. This really seems like a bug in gmake. > Problem 2 > --------- > If I make these two files: > > --- file test.gmk --- > > all: > @echo all done > > include other > > --- file other --- > > do_other: > @echo other stuff > > ---- > > And try: > make -f test.gmk -d > > The output (and the amount of time make takes) suggests > that it is really trying to treat "test.gmk" and "other" > as targets!! I have simplified the actual makefiles that tripped me up, down to these very simple demonstration cases. Behold - I choose the "targ1" target, and both targets get made: $ cat test1.gmk targ1: @echo "Target is $@" @echo "$@ done" top-dirs: @echo "top-dirs done" targ2 test1.gmk : top-dirs @echo "Target is $@" @echo "$@ done" $ gmake -f test1.gmk targ1 top-dirs done <---- !!! Target is test1.gmk <---- !!! test1.gmk done <---- !!! Target is targ1 targ1 done Now these two slight variants, that work correctly. This first one doesn't use the intermediate target "top-dirs" for the unrelated targ2: $ cat test2.gmk targ1: @echo "Target is $@" @echo "$@ done" top-dirs: @echo "top-dirs done" targ2 test2.gmk : @echo "Target is $@" @echo "$@ done" $ gmake -f test2.gmk Target is targ1 targ1 done And this one does use the intermediate target "top-dirs", but doesn't have its own name in the target unrelated to targ1: $ cat test3.gmk targ1: @echo "Target is $@" @echo "$@ done" top-dirs: @echo "top-dirs done" targ2 xxx : top-dirs @echo "Target is $@" @echo "$@ done" $ gmake -f test3.gmk targ1 Target is targ1 targ1 done I think this is due, somehow, to gmake's strange attempt to use the makefile itself, and any included file, in the rule sets. luke - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".