Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 May 1998 19:41:26 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        bde@zeta.org.au, kuku@gilberto.physik.RWTH-Aachen.DE
Cc:        eivind@FreeBSD.ORG, freebsd-current@freefall.cdrom.com
Subject:   Re: help! - nodes.h where is it?
Message-ID:  <199805280941.TAA31697@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> It looks like your src/share/mk/bsd.prog.mk is broken.
>
>make mk doesn't work anymore, btw.

It went away about a year ago.

>OK, I overwrote all my /usr/share/mk files with the
>new ones,
>went into /usr/src/bin/sh
># make clean
>rm -f mkinit mkinit.o mknodes mknodes.o  mksyntax mksyntax.o builtins.c init.c nodes.c syntax.c builtins.h nodes.h syntax.h token.h y.tab.h sh alias.o arith.o arith_lex.o cd.o echo.o error.o eval.o exec.o expand.o histedit.o input.o jobs.o mail.o main.o memalloc.o miscbltin.o mystring.o options.o output.o parser.o printf.o redir.o show.o trap.o var.o builtins.o init.o nodes.o syntax.o sh.1.gz sh.1.cat.gz arith_lex.c arith.c y.tab.c y.tab.h
># make
>cc -O2 -m486 -pipe -DSHELL -I. -I/a/src/bin/sh   -c /a/src/bin/sh/alias.c
>yacc -d /a/src/bin/sh/arith.y
>cp y.tab.c arith.c
>...

With the current `mk' files and Makefiles, `make' should begin with:

cc -O -pipe -DSHELL -I. -I/usr/src/bin/sh   -c /usr/src/bin/sh/mknodes.c
cc -O -pipe -DSHELL -I. -I/usr/src/bin/sh    -static mknodes.o  -o mknodes
./mknodes /usr/src/bin/sh/nodetypes /usr/src/bin/sh/nodes.c.pat
cc -O -pipe -DSHELL -I. -I/usr/src/bin/sh   -c /usr/src/bin/sh/mksyntax.c
cc -O -pipe -DSHELL -I. -I/usr/src/bin/sh    -static mksyntax.o  -o mksyntax
./mksyntax
sh /usr/src/bin/sh/mktokens
yacc -d /usr/src/bin/sh/arith.y
cp y.tab.c arith.c
...

It builds all the headers first, as it must to satisfy the following rule
in bsd.prog.mk:

	.if defined(PROG) && !exists(${DEPENDFILE})
	${OBJS}: ${SRCS:M*.h}
	.endif

I think understand this now.  This rule doesn't apply if .depend already
exists, and if .depend already exists then it must have full dependencies
on nodes.h to work properly.  You probably have a stale .depend file in
the source directory.  A stale .depend file in the obj directory would
be always be deleted by `make world'.

A stale .depend file in the source directory would only sometimes be
deleted by `make world'.  This is another bug in `make world', like
the libgmp/mp* one.  Even if the current directory is readonly,
`make world' will only attempt to change it if there is certain
garbage in it.

Bruce

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



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