Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Apr 2005 19:23:33 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        marcel@xcllnt.net
Cc:        cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/usr.sbin/config main.c
Message-ID:  <20050422.192333.91757691.imp@bsdimp.com>
In-Reply-To: <94969eabff134918730e7dcead17bb51@xcllnt.net>
References:  <b01a40ad14d2fadd7fa857af2495dfdd@xcllnt.net> <20050422203437.GB50191@ip.net.ua> <94969eabff134918730e7dcead17bb51@xcllnt.net>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <94969eabff134918730e7dcead17bb51@xcllnt.net>
            Marcel Moolenaar <marcel@xcllnt.net> writes:
: On Apr 22, 2005, at 1:34 PM, Ruslan Ermilov wrote:
: 
: >>> I personally fail to see how this can be solved...  :-(
: >>
: >> Ok, what about this:
: >> mkdep(1) creates lines of the form
: >>
: >> 	foo.o: foo.c inc1.h inc2.h
: >>
: >> Would this problem be solved if mkdep(1) created lines like:
: >>
: >> 	foo.o .depend: foo.c inc1.h inc2.h
: >>
: >> or equivalent?
: >>
: >> Would something else break if we do that?
: >>
: > I fail to see what this gives us, except for also breaking
: > "make .depend" when .depend is present and inc2.h disappears.
: 
: True, there is a phase ordering problem. But isn't that something
: that can be worked around by making the necessary adjustments to
: make(1). The adjustments would be that if .depend is out of
: date, it is being made without making any sources that are out
: of date (or missing). This may require adding a special source
: to the mix of special sources that make(1) already has: .SOFTDEP
: or something like that. One can also hardcode this special case,
: but that seems ugly.

Looks like Justin's changes just make the problem worse.  It make the
make depend fail, where before it would just fail to generate a new
.depend file.

The only thing that has a chance of working would be something like:

ALLDEPENDS=<generated by mkdep and is the union of all the files on
		      the right hand side of the :>
beforebeforedepend:
.for __i in ${ALLDEPENDS}
.if !exists($__i)
    F := $F $__i
.endif
.endfor
.if !empty($F)
    rm -f .depend
.endif

and then add beforebeforedepend before beforedepend and adjust the
ordering rules accordingly.

Make could be modified to have exists take a list of files and return
true iff they all exist...

Warner



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