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>