OMAKE(1)

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.9 of April 11, 2006.

  LICENSE AND COPYRIGHT

(C)2003-2006, Mojave Group, Caltech

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 et. al..br Caltech 256-80
Pasadena, CA 91125, USA
Email: omake-devel@metaprl.org
WWW: http://www.cs.caltech.edu/~jyh