Subject: Re: Bad domestic test in src/Makefile?
To: Curt Sampson <cjs@cynic.net>
From: Scott Reynolds <scottr@og.org>
List: tech-toolchain
Date: 03/30/1999 09:35:00
On Tue, 30 Mar 1999, Curt Sampson wrote:

> The following code was recently changed in src/Makefile:
> 
>  .if exists(domestic) && \
>      (make(clean) || make(cleandir) || make(obj) || \
>      ((make(includes) || make(install)) && \
> -    !(defined(EXPORTABLE_SYSTEM) || defined(_BUILD))))
> +    !defined(EXPORTABLE_SYSTEM) && defined(_DISTRIB)))
>  SUBDIR+= domestic
>  .endif
> 
> This test appears to be wrong to me; it seems to me that, regardless
> of the setting of EXPORTABLE_SYSTEM now, if _DISTRIB is not set
> domestic is never included in SUBDIR. This basically makes it
> impossible to build a domestic tree with `make build.'

Um, Curt, I direct your attention to this part of the `build' target:

	.if exists(domestic) && !defined(EXPORTABLE_SYSTEM)
		(cd ${.CURDIR}/domestic && ${MAKE} ${_J} _SLAVE_BUILD= build)
	.endif

> [...]
> Does anybody know what the purpose of step 2 is (i.e., what end it
> is trying to achieve)? If not, I'll attempt to `fix' it....

There is nothing broken here.  Do not `attempt' to `fix' it.

> If someone does know how all this is supposed to work, could he
> document it in the makefiles? And also document the purpose of the
> _DISTRIB and _BUILD variables?

grep _BUILD src/Makefile
grep _DISTRIB src/Makefile src/etc/Makefile

There's more complicated things going on here than these two (internal)
variables.  Don't mess with this unless you understand it.

--scott