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