\documentclass[12pt]{article} % % Make a bigger page, but leave room for marginal notes. % \setlength{\topmargin}{-1.0 in} \setlength{\oddsidemargin}{-0.5 in} \setlength{\evensidemargin}{-0.5 in} \setlength{\textwidth}{7.0 in} \setlength{\textheight}{9.5 in} \pagestyle{empty} \usepackage{times} \usepackage{mathtime} \usepackage{graphicx} \begin{document} \includegraphics[scale=0.85]{omake} OMake is a build system, similar to GNU make, but it support hierarchical projects with automated dependency analysis, and the language is {\bf functional}. The home site for OMake is {\sf http://omake.metaprl.org/}. Features include: \begin{itemize} \item Support for large projects spanning several directories or directory hierarchies. \item Comes with a default configuration file providing support for OCaml, C and LaTeX projects, or a mixture thereof. Often, a configuration file is as simple as a single line \begin{verbatim} OCamlProgram(prog, foo bar baz) \end{verbatim} which states that the program \verb+prog+ is built from the files \verb+foo.ml+, \verb+bar.ml+, and \verb+baz.ml+. \item Fast, reliable, automated dependency analysis using MD5 digests. \item Portability: omake provides a uniform interface on Win32 and on Unix systems including Linux and OSX. \item Builtin functions that provide the most common features of programs like \verb+grep+, \verb+sed+, and \verb+awk+. These are especially useful on Win32. \item Full native support for rules that build several things at once. \item Active filesystem monitoring, where the build automatically restarts whenever you modify a source file. This can be very useful during the edit/compile cycle. \item A companion command interpreter, \verb+osh+, that can be used interactively. \end{itemize} In the MetaPRL ({\sf http://www.metaprl.org}) and Mojave ({\sf http://mojave.caltech.edu}) projects we develop and maintain several moderately large systems consisting of a mixture of OCaml, C, and theorem proving code. We developed OMake out of the need for a build system that was simple, flexible, and reliable, especially for large projects. OMake preserves the 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: \begin{enumerate} \item Indentation is significant, but tabs are not required. \item The omake language is {\bf functional}: functions are first-class and there are no side-effects apart from I/O. \item Scoping is dynamic. \end{enumerate} \noindent OMake 0.9.2 is an alpha release.\\ Please report any comments and/or bugs to the mailing list {\sf omake@metaprl.org}. \vfill \noindent {\tiny Jason Hickey, {\sf jyh@cs.caltech.edu}} \end{document}