Date: Tue, 1 Aug 2000 16:42:16 +0200 From: Marc Espie <Marc.Espie@liafa.jussieu.fr> To: freebsd-hackers@freebsd.org Subject: Pointer to people `in charge' of FreeBSD make ? Message-ID: <20000801164216.A14226@liafa1.liafa.jussieu.fr>
next in thread | raw e-mail | index | archive | help
I'm currently over-hauling OpenBSD make. During my investigations, I've stumbled upon an oddity of the way VPATH works. There are currently two hooks in make that handle VPATH. - in dir.c, file name lookups resort to handling along the VPATH when a file is not found in the current directory. - the suffix handling rules know how to handle VPATH. One part is left in the cold: explicit target rules. They're always looked up with Targ_FindNode, and don't take VPATH into account. Consider the following Makefile: VPATH=some_dir a: b cp $> a some_dir/b: echo "toto" >$@ If you say `make', it will answer "don't know how to make b". If you first say `make some_dir/b', then it will know how to make a, looking up b in the right place. You can get even weirder results if the some_dir/b: rule includes some dependencies, because such dependencies won't be checked, even though they apply to the same file. This is completely inconsistent, and very error-prone. Besides, I've had a hard time explaining this twice or thrice to gnu-make advocates... as that program does the right thing in such a case. The fix is probably not too hard. All revolves around Job_CheckCommands(), which checks that a node is a `real' node first. Strategy is as follows: - let the make parser generate false nodes as usual. - around Job_CheckCommands, if the node is not real, try to see if there is a more `real' node (e.g., one with dependencies and recreation rules) along the path, and substitute it instead. (a bit icky, as the vpath lookup rules in dir.c are not too fun, but I know how to do it). Currently, what I'm interested in is collaboration: this changes the semantics of make slightly, in a non-obvious way. If OpenBSD performs the change in a dark corner, we'll be able to accept Makefiles that other BSD* may complain about. Spewing a `warning, non standard feature used' is always possible, but it would be better if we could agree on a common plan... -- Marc Espie |anime, sf, juggling, unicycle, acrobatics, comics... |AmigaOS, OpenBSD, C++, perl, Icon, PostScript... | `real programmers don't die, they just get out of beta' To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000801164216.A14226>