From: dbe AT wgn DOT net ($Bill Luebkert) Subject: Re: Found bug in make 19 Sep 1997 20:07:27 -0700 Message-ID: <34233786.16D9.cygnus.gnu-win32@wgn.net> References: <199709191221 DOT FAA10838 AT ngedns DOT northgrum DOT com> Reply-To: dbe AT wgn DOT net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: "McCollister, Mike" Cc: "'gnu-win32 AT cygnus DOT com'" McCollister, Mike wrote: > > Hi, > > I just downloaded beta 18 and found what I consider a major bug in make. > Here is a sample Makefile: > > ---start Makefile--- > .SILENT: > SHELL = /bin/sh > > FRED = fred > MARY = mary > LIST = file1 file2 file3 file4 > LIST_C = ${LIST:=.c} > > level1: > echo ; \ > echo $@ ; \ > MIKE=mike ; export MIKE ; \ > echo FRED = $(FRED) ; \ > echo MARY = $(MARY) ; \ > echo MIKE = $$MIKE ; \ > echo LIST = $(LIST) ; \ > echo LIST_C = $(LIST_C) ; \ > echo OPTION = $(OPTION) ; \ > $(MAKE) level2 > > level2: > echo ; \ > echo $@ ; \ > echo FRED = $(FRED) ; \ > echo MARY = $(MARY) ; \ > echo MIKE = $(MIKE) ; \ > echo LIST = $(LIST) ; \ > echo LIST_C = $(LIST_C) ; \ > echo OPTION = $(OPTION) > ---end Makefile--- > > Now here is the bad output: > > level1 > FRED = fred > MARY = mary > MIKE = mike > LIST = file1 file2 file3 file4 > LIST_C = file1.c file2.c file3.c file4.c > OPTION = option > > level2 > FRED = fred > MARY = mary > MIKE = mike > LIST = file1 file2 file3 file4 > LIST_C = file1.c file2.c file3.c file4.c > OPTION = > > Now here is what the output should be: > > level1 > FRED = fred > MARY = mary > MIKE = mike > LIST = file1 file2 file3 file4 > LIST_C = file1.c file2.c file3.c file4.c > OPTION = option > > level2 > FRED = fred > MARY = mary > MIKE = mike > LIST = file1 file2 file3 file4 > LIST_C = file1.c file2.c file3.c file4.c > OPTION = option <- THIS IS DIFFERENT > > Note that OPTION is not being "exported" to the next instance of make. > > Does anyone know if build 19 fixes this? No, but I've seen this env problem before and you should be able to work around it by changing: $(MAKE) level2 to: $(MAKE) -e level2 if I remember correctly. -- ,-/- __ _ _ $Bill Luebkert (_/ / ) // // DBE Collectibles / ) /--< o // // http://www.wgn.net/~dbe/ -/-' /___/_<_