OMake is a build system designed for scalability and portability. It uses a
syntax similar to make utilities you may have used, but it features many
additional enhancements, including the following.
  
  * Support for projects spanning several directories or directory hierarchies.
  * Fast, reliable, automated, scriptable dependency analysis using MD5
    digests, with full support for incremental builds.
  * Dependency analysis takes the command lines into account ? whenever the
    command line used to build a target changes, the target is considered
    out-of-date.
  * Fully scriptable, includes a library that providing support for standard
    tasks in C, C++, OCaml, and LaTeX projects, or a mixture thereof.

    Often, a configuration file is as simple as a single line

    .DEFAULT: $(CProgram prog, foo bar baz)

    which states that the program "prog" is built from the files foo.c, bar.c,
    and baz.c. This one line will also invoke the default standard library
    scripts for discovering implicit dependencies in C files (such as
    dependencies on included header files).
  * Full native support for rules that build several files at once.
  * Portability: omake provides a uniform interface on Linux/Unix (including
    64-bit architectures), Win32, Cygwin, Mac OS X, and other platforms that
    are supported by OCaml.
  * Built-in functions that provide the most common features of programs like
    grep, sed, and awk. These are especially useful on Win32.
  * Active filesystem monitoring, where the build automatically restarts
    whenever you modify a source file. This can be very useful during the edit/
    compile cycle.
  * A built-in command-interpreter osh that can be used interactively.

OMake preserves the style of syntax and rule definitions used in Makefiles,
making it easy to port your project to OMake. There is no need to code in Perl
(cons), or Python (scons). However, there are a few things to keep in mind:
 
 1. Indentation is significant, but tabs are not required.
 2. The OMake language is functional: functions are first-class and there are
    no side-effects apart from I/O.
 3. Scoping is dynamic.

OMake is licensed under a mixture of the GNU GPL license (OMake engine itself)
and the MIT-like license (default configuration files).

OMake is part of the Mojave and MetaPRL projects.
