build

build

bld

1998 12-06

NAME

build - build tool

SYNOPSIS

build -? {true|false} -V {true|false} -d {true|false} -f filename -h {true|false} -k {true|false} -n {true|false} -q {true|false} -s {true|false} -u {true|false} -v {true|false} [target...]

OPTIONS

The following options are available for build:

DESCRIPTION

build provides platform-independent building capability similar to the UNIX utility make. build executes zero or more operations to build a target according to a build description specified by the user.

ENVIRONMENT

EXIT STATUS

The following exit values are returned by build:

FILES

NOTES

While build is platform-independent, the commands used to build targets are given to the local operating system to execute. Portable build descriptions should include abstraction around platform-dependent functionality. For example, the rule could refer to a variable whose values contains the command appropriate for the platform (e.g., grep vs. findstr). Or, the rule could invoke a command which is a platform-dependent script guaranteed to be present, with the same name, on all platforms.


To support the common use of the character '.' as a separator between file names and extensions, its use as a meta-character in regular expressions has been disabled. In its place, the character range [!-~] is functionally equivalent.


Since all built-in functions are treated equally and variable evaluation is performed for all, the directory, file, and targets for nested builds via build can be specified using variables. Thus, all three can be determined at build time.

DIAGNOSTICS

Arguments are given to the underlying operating system exactly as defined in the build description. Specifically, directory separators are left intact, which may cause problems for some file systems.


Handling of variable expansion in naked strings is not graceful. Particularly the string $(0).cc will not evaluate properly because the parser is expected white-space after naked variables. "$(0).cc" is required to build a string consisting of ".cc" appended to the contents of the variable 0.


Unquoted arguments should not contain meta-characters, such as ':'. If the arguments do contain such meta-characters, the arguments should be protected by single- or double-quotes.


The parser reports errors at the line where the parser failed, which may not be the line which caused the error, and provides no explanation about the cause of the error.

BUGS

String evaluation is quirky and does not handle nested sub-expressions very well. Additionally, variable evaluations with concatenated string literals require enclosing double-quotes.


Line continuation (e.g. '\\' at the end of the line) is not implemented.


System commands are not currently parallelized.