Sorry if my first response was pedantic; reply inline.

>>> usr/src/Makefile:
>>> - Won't this cause stand to build twice on sparc (once as a dependency
>>> of psm and once because it's listed in sparc_SUBDIRS)? The second time
>>> should be a nop, but still unnecessary, right?
>>
>> No.  We were previously relying on the implicit behavior of dmake to
>> evaluate dependencies in the specified order, but we were listing psm in
>> both sparc_ and i386_ subdirs to get the order correct.
> 
> Right. I understand why the previous approach was wrong.
> 
>>
>> Specifying the dependency makes that explicit, and will work correctly
>> even if SUBDIRS are built in parallel.  But the rule for the stand
>> target will only be executed once.
> 
> Yes, I see why you need psm to depend on stand. Why do you also need 
> stand (again) in sparc_SUBDIRS?

Ah.  Strictly speaking, you don't.  I guess usr/src/lib/Makefile was
sticking in my head as a good role model here, where the complete list
of subdirs is specified, and then their interdependencies called out
separately.

> Are you saying that psm is not strictly needed in sparc_SUBDIRS, but 
> it's not wrong because dmake (and any other make variant someone uses) 
> will keep track of the fact that it has already done a make in psm when 
> it sees that dependency for the second time?

Per above question ("Why do you also need stand..."), I'm agreeing that
stand (not psm) is not strictly needed in sparc_SUBDIRS.

>>> usr/src/pkg/Makefile:
>>> - What's the advantage of having install depend on $(ALL_TARGETS)
>>> instead of all?
>>
>> In this case, none, really.  In general, targets that don't correspond
>> to actual files will be rebuilt when they don't exist.  So if you had
>>
>>      all: dep1
>>              fu
>>
>>      installA: dep1
>>              bar
>>
>>      installB: all
>>              whee
>>
>> and you did "make all," then a subsequent "make installA" would execute
>> only "bar," but a "make installB" would execute "fu" and "whee."
>>
>> That's a longwinded way to say "trying to practice good makefile
>> hygiene, even when it doesn't actually make a difference."
>>
> 
> Yes, I realize it would make a difference if the all target had commands 
> associated with it (fu in the example above). In this case there are no 
> commands for the all target.
> 
> I always thought using the target name (all, in this case) was the best 
> practice in cases like this. But I'll defer to your Makefile experience 
> if you think this represents better hygiene.

I don't know if we have best practices; I pity the diligent engineer
that attempts to derive them from our set of makefiles.  I completely
acknowledge that there's no advantage in this case, and call it style or
personal preference.

Thank you for looking at the changes.

--Mark

_______________________________________________
tools-discuss mailing list
tools-discuss@opensolaris.org

Reply via email to