Subject: Re: Weird "make all" behavior
To: None <drochner@zelux6.zel.kfa-juelich.de>
From: Mike Long <mikel@shore.net>
List: current-users
Date: 11/06/1997 13:28:14
>Date: Wed,  5 Nov 1997 18:36:32 +0100 (MET)
>From: Matthias Drochner <drochner@zelux6.zel.kfa-juelich.de>
>
>[make skips "all" in eg "make clean all install"]
>
>OK. now I see it too.
>(If I "make" in a leaf, not the whole tree.)
>This behaviour disappears when I define
>"BUILD" in the environment.
>
>Looking at bsd.prog.mk, there is a rule:
>.if !defined(BUILD)
>${DESTDIR}${BINDIR}/${PROGNAME}: .MADE
>.endif
>
>With an "install" target, the installed program becomes
>dependant on the to-be-built one, and "make" decides
>to do nothing here.
>I don't yet understand how this is supposed to work
>at all.

Perhaps we should just deprecate BUILD and the idea that the install
target never builds anything unless BUILD is defined.  In addition to
the problem described above, 'make install BUILD=' fails in every case
where a related set of programs link with a private library.  To see
an example, try:

# cd backgammon; make clean && make install BUILD=

The build will fail because libcommon is never built.
-- 
Mike Long <mikel@shore.net>                http://www.shore.net/~mikel
"Every normal man must be tempted at times to spit on his hands,
hoist the black flag, and begin slitting throats." -- H.L. Mencken