cvs commit: src/usr.bin/make make.1

John Baldwin jhb at freebsd.org
Wed Oct 12 11:39:02 PDT 2005


On Wednesday 12 October 2005 02:07 pm, Garance A Drosehn wrote:
> At 6:05 PM +0100 10/12/05, Ceri Davies wrote:
> >On Wed, Oct 12, 2005, Warner Losh wrote:
> >  > From: Ruslan Ermilov <ru at freebsd.org>
> >  >
> >  > > __MAKE_CONF doesn't fall under "make sets or knows about the
> >  > > following internal variables or environment variables".
>
> Seems to me that it does.  I think the detailed description could
> remain in make.conf(5), but that the variable name should still
> be explicitly mentioned in make(1).
>
> >  > > Rather, it's a FreeBSD specific feature, it doesn't have
> >  > > any direct connection to the make utility (as well as
> >  > > CPUTYPE, CFLAGS, etc.).
>
> The man page documents the make utility on FreeBSD.  The fact that
> __MAKE_CONF is a FreeBSD-specific feature does not change the fact
> that setting __MAKE_CONF will effect *every* invocation of 'make'.
> It is *not* limited to makefiles in /usr/src and /usr/ports.  So,
> the following comment in make.conf(5) is not completely accurate:
>
>       The purpose of make.conf is not to [...].  Instead, it is
>       included by the various makefiles in /usr/src, /usr/ports
>       and /usr/doc which conditionalize their internal actions
>       according to the settings found there.
>
> I just created a makefile in /tmp with nothing but the lines:
>
>       all :
> 	echo "${CC} ${CFLAGS}"
>
> and when I type 'make all' in /tmp, the /etc/make.conf file is
> included.  If I set __MAKE_CONF, and if that file changes the value
> of CC, then my 'make all' is changed.  That /tmp/makefile does not
> explicitly .include any other file.  The effect of __MAKE_CONF is
> not limited to FreeBSD-project makefiles.

make(1) does not include it.  sys.mk does, and it doesn't include it if %POSIX 
is defined:

> cat > foo
all:
        echo "${CC} ${CFLAGS}"
^D
> make -f foo
echo "cc -O2 -fno-strict-aliasing -pipe -march=pentium4"
cc -O2 -fno-strict-aliasing -pipe -march=pentium4
> make -f foo -D%POSIX
echo "c89 -O "
c89 -O

make(1) does honor some special environment variables like MAKEOBJDIRPREFIX, 
but __MAKE_CONF is not one of them.  It is handled in sys.mk, not in the 
make(1) program itself.

-- 
John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org


More information about the cvs-src mailing list