Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Oct 2005 14:40:12 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Garance A Drosehn <gad@freebsd.org>
Cc:        cvs-src@freebsd.org, yar@freebsd.org, src-committers@freebsd.org, ru@freebsd.org, cvs-all@freebsd.org
Subject:   Re: cvs commit: src/usr.bin/make make.1
Message-ID:  <200510121440.15780.jhb@freebsd.org>
In-Reply-To: <p06230905bf72f8f32a3b@[128.113.24.47]>
References:  <200510121009.j9CA9aE3026075@repoman.freebsd.org> <20051012170509.GH99170@submonkey.net> <p06230905bf72f8f32a3b@[128.113.24.47]>

next in thread | previous in thread | raw e-mail | index | archive | help
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@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@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200510121440.15780.jhb>