man omake (Commandes) - omake is a build system designed to scale from small projects to very large projects spanning many directories. omake uses a syntax similar to make(1), with many additional features, including accurate automated dependency analysis based on MD5 digests.

NAME

omake is a build system designed to scale from small projects to very large projects spanning many directories. omake uses a syntax similar to make(1), with many additional features, including accurate automated dependency analysis based on MD5 digests.

DESCRIPTION

omake is designed for building projects that might have source files in several directories. Projects are normally specified using an OMakefile in each of the project directories, and an OMakeroot file in the root directory of the project. The OMakeroot file specifies general build rules, and the OMakefiles specify the build parameters specific to each of the subdirectories. When omake runs, it walks the configuration tree, evaluating rules from all of the OMakefiles. The project is then built from the entire collection of build rules.

AUTOMATIC DEPENDENCY ANALYSIS

Dependency analysis has always been problematic with the make(1) program. omake addresses this by adding the .SCANNER target, which specifies a command to produce dependencies. For example, the following rule

    .SCANNER: %.o: %.c
        $(CC) $(INCLUDE) -MM $<

is the standard way to generate dependencies for .c files. omake will automatically run the scanner when it needs to determine dependencies for a file.

CONTENT-BASED DEPENDENCY ANALYSIS

Dependency analysis in omake uses MD5 digests to determine whether files have changed. After each run, omake stores the dependency information in a file called .omakedb in the project root directory. When a rule is considered for execution, the command is not executed if the target, dependencies, and command sequence are unchanged since the last run of omake. As an optimization, omake does not recompute the digest for a file that has an unchanged modification time, size, and inode number.

See the following manual pages for more information.

omake-quickstart A quickstart guide to using omake.
omake-options Command-line options for omake.
omake-root The system OMakeroot contains the default specification of how to build C, OCaml, and LaTeXprograms.
omake-language The omake language, including a description of objects, expressions, and values.
omake-shell Using the omake shell for command-line interpretation.
omake-rules Using omake rules to build program.
omake-base Functions and variables in the core standard library.
omake-system Functions on files, input/output, and system commands.
omake-pervasives Pervasives defines the built-in objects.
osh The osh command-line interpreter.
omake-doc All the OMake documentation in a single page.

REFERENCES

SEE ALSO

omake(1), omake-quickstart(1), omake-options(1), omake-root(1), omake-language(1), omake-shell(1), omake-rules(1), omake-base(1), omake-system(1), omake-pervasives(1), osh(1), make(1)

VERSION

Version: 0.9.6.7 of December 28, 2005.

LICENSE AND COPYRIGHT

(C)2003-2005, Jason Hickey, Caltech 256-80, Pasadena, CA 91125, USA

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

AUTHOR

Jason Hickey

Caltech 256-80

Pasadena, CA 91125, USA

Email: jyh@cs.caltech.edu

WWW: http://www.cs.caltech.edu/~jyh