August 01, 2002 smake infinite recursion | ||||
---|---|---|---|---|
| ||||
I'm reporting this as a bug against smake without
any claim that it represents a deviation from
documented behavior. There is a work-around for
it, although it does complicate our "check-out
and automated build" process somewhat.
Consider this excerpt from a Makefile:
# Generate the auto-scanned dependency graph.
depends :
@$(PERL) $(PROJTOOLS)\makedeps.pl *.CXX *.H *.A86 > depends.mak
!if exist(depends.mak)
! include depends.mak
!else
! if [echo. > depends.mak]
! endif
! if [$(MAKE) depends] || 1
! message Please delete "depends.mak" whenever dependencies change.
! endif
! if exist(depends.mak)
! include depends.mak
! else
! error Cannot generate depends.mak, build failed.
! endif
!endif
The result of having the recursive call "! if [$(MAKE) depends] || 1" when smake is the Makefile interpretor is an infinite recursion. I think the reason smake acts that way and nmake does not is that the bracketed conditionals are evaluated after building the make syntax tree in smake, leading to a no-leaf branch, while nmake executes and switches on the conditional as it is encountered.
I know that recursive make is frowned upon these days, but I will say that the above construct has been very handy and, until I began using smake, trouble free.
I appreciate that this may be a low-priority bug or as-designed and will not be a disgruntled customer should smake continue to never stop executing the above construct.
--
-Larry Brasfield
(address munged, s/sn/h/ to reply)
|
August 02, 2002 Re: smake infinite recursion | ||||
---|---|---|---|---|
| ||||
Posted in reply to Larry Brasfield | "Larry Brasfield" <larry_brasfield@snotmail.com> wrote in message news:MPG.17b3697d9e8e969989689@news.digitalmars.com... > I appreciate that this may be a low-priority bug or as-designed and will not be a disgruntled customer should smake continue to never stop executing the above construct. Smake isn't being worked on at the moment, but I do save all the bug reports and log them against each component. When there's enough to open development on a component again, all the bug reports are there and can be addressed. So the bug reports you take the time to prepare are worthwhile. Thanks, -Walter |
Copyright © 1999-2021 by the D Language Foundation