Date: Sat, 17 Mar 2001 09:12:14 +0200 From: "Eli Zaretskii" Sender: halo1 AT zahav DOT net DOT il To: "Dan Thompson" Message-Id: <2950-Sat17Mar2001091214+0200-eliz@is.elta.co.il> X-Mailer: Emacs 20.6 (via feedmail 8.3.emacs20_6 I) and Blat ver 1.8.6 CC: djgpp AT delorie DOT com In-reply-to: <810E4FF60FEBD41196C60008C786C6D928DFC1@mwymail1.midwaygames.internal> (DThompso@midwaygames.com) Subject: Re: Problem running make in WIN2K CMD References: <810E4FF60FEBD41196C60008C786C6D928DFC1 AT mwymail1 DOT midwaygames DOT internal> Reply-To: djgpp AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk > From: "Thompson, Dan" > Date: Fri, 16 Mar 2001 15:03:12 -0600 > > The project that is being configured to build with GNU-make is a decent-size > directory tree. The build-tree has been set up to fully recurse from any > location in the tree. Herein lies one of the major inconsistencies: when > doing a build from the root of the tree (or any sufficiently large branch), > the results are unpredictable. For reasons unknown, I have witnessed builds > that complete successfully and builds that fail midway through, complaining > of being unable to write to memory, e.g. 'The instruction at "0x0f048d8a" > referenced memory at "0x01340ffc". The memory could not be "written".' The > failures occur at various places in builds done from the same location. This is a known problem with W2K: NTVDM, the Windows DOS emulator, crashes when more than two levels of nested DJGPP programs are run. The crashes are indeed somewhat random; what you see sounds like a relatively mild form of the problem. Unfortunately, there's no known work-around. > $(TRG_AGRUNT): $(OBJ_AGRUNT) > asl $(OPT_AS_LINK) -o $@ $^ > > which produces the command-line (emphasis added) > > asl -v -o agrunt.asd stiffarm.aso lateral.aso hits.aso qb.aso idle.aso > run.aso lineup.aso getup.aso tackles.aso catches.aso throw.aso taunts.aso > mills.aso victory.aso huddle.aso blocks.aso kicks.aso reactions.aso > hurdles.aso > > which then aborts the build with a link error. I'm guessing that asl is not a DJGPP program. If so, you are probably hitting the DOS 126-character limit on command line length. DJGPP programs have a way of passing long commands between them, but that doesn't work if you invoke non-DJGPP programs. You might be better off if you find a Windows port of GNU Make. That would solve both the command-line length problems and the NTVDM crashes. > Also, the 'clean' rule process > > $(foreach VAR,$(TRGS_CLN),@if exist $(VAR) $(RM) $(VAR)$(NEWLINE)) > > will not remove 'reactions.aso', though the 'if' is executed against this > file. And again, if entered as a command, this 'if' will remove the file. > When checked with a -n, these problem lines are correctly displayed, but it > seems that the filename is being truncated to 8.3 (but not with the implicit > build rule). Please post the output of this rule under -n, and the list of the files in $(TRGS_CLN). > TRGS := ball.$(RTD) > > OBJS := $(TRGS:.$(RTD)=.$(TDL)) > > SRCS := $(TEXS) > > .PRECIOUS: $(OBJS) > > #--------------------------------------- > # Make specified targets. > #--------------------------------------- > all: $(TRGS) > @echo $(MSG_MAKING) $(MSG_DIR) $(MSG_COMPLETE) > > %.$(RTD): %.$(TDL) $(SRCS) > @$(GNTEXTDT) $< > > %.$(TDL): $(SRCS) > @$(GENTLOAD) $* > > causes make to error-out with "make.exe: *** No rule to make target > `ball.RTD', needed by `all'. Stop." Looks to me like the rule is right > there, and this *exact* set of rules works fine in other makefiles. Invoke Make with the -d switch ("make -d all") and look at the output: it might give a clue about what's happening. One possible gotcha is that Make is case-sensitive about file names, so ball.RTD and ball.rtd are not the same file for it.