cvs commit: src/usr.sbin/config main.c

Marcel Moolenaar marcel at xcllnt.net
Fri Apr 22 23:19:50 PDT 2005


On Apr 22, 2005, at 10:02 PM, Ruslan Ermilov wrote:

> On Fri, Apr 22, 2005 at 01:58:34PM -0700, Marcel Moolenaar wrote:
>> 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.
>>
> That's an idea!  I've tested the following, and it seems that it
> can be made to work, after some polishing.  In .depend, have the
> following dependencies generated by mkdep(1):
>
> .depend: <all sources>
> .for f in <all sources>
> .if !exists($f)
> $f:
> .endif
> .endfor

Another idea -- same end result: What about having make(1) handle it
all by itself, with only the help of being told which extensions can
affect .depend. Since make(1) has the complete dependency graph, it
shouldn't be too hard for it to traverse the graph, determine whether
.depend is out of date WRT to all the files with the given extension
in the dependency graph and rebuild the .depend target (if one is
defined) automagically. In the end, the whole .depend inclusion is
hardcoded and one can argue that make(1) should make sure this auto-
feature is not getting in the way.

-- 
  Marcel Moolenaar         USPA: A-39004          marcel at xcllnt.net



More information about the cvs-src mailing list