@build, @clone, @ls, @make, @sh - manage build trees
@build [command [arg ...]]
@command [arg ...]
@build executes a command in the build tree. The build tree is a
directory full of links to the files in the current directory, the name
of this directory is found by replacing the first src in the current
working directory in build. So /usr/src becomes /usr/build, and
/usr/local/src becomes /usr/local/build.
These build trees, or "link farms" as they are often called, are used to
keep the object files and executables out of the source tree to keep the
source tree clean.
The major disadvantage of link farms is that links are easily broken by
changes in the source tree, sometimes by too smart editors, or by running
patch(1). When that happens clone(1) needs to be run from the build tree
with the source directory name as its argument. @build offers to do this
for you if the build (sub)directory doesn't exists.
@build is normally linked to the names @make, @sh, @ls, and @clone.
These @cmd commands are simply shorthands for @build cmd, except that
@clone is special, it gets the source directory as its argument if called
Shell metacharacters are expanded more than once.
Kees J. Bot (email@example.com)