English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
[Caml-list] Announcing the OMake build system version 0.9.1
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2004-09-04 (16:27)
From: Jason Hickey <jyh@c...>
Subject: [Caml-list] Announcing the OMake build system version 0.9.1
OMake is a build system, similar to GNU make, but with many additional
features.  The home site for OMake is http://omake.metaprl.org/

    o Support for large projects spanning several directories or
      directory hierarchies.

    o Builtin support for OCaml and C projects, or a mixture thereof.

    o Fast, accurate, automated dependency analysis using MD5 digests.

    o Portability: omake provides a consistent interface on Win32 and
      on Unix systems including Linux, OSX, and Cygwin.

    o Builtin functions that provide the most common features of programs
      like grep, sed, and awk.  These are especially useful on Win32.

    o Active filesystem monitoring, where the build automatically
      restarts whenever you modify a source file.  This can be
      very useful during the edit/compile cycle.

    o A companion command interpreter, osh, that can be used

In the MetaPRL (http://www.metaprl.org) and Mojave
(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

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:

    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.

To try it out, run the command "omake --install" in a project directory,
and edit the generated OMakefile.  Often, an OMakefile is as simple as a 
single line

     OCamlProgram(prog, foo bar baz)

which states that the program "prog" is built from the files
foo.ml, bar.ml, and baz.ml.  You may want to choose which compiler is 
used (by default, omake builds native code).  You can use the 
BYTE_ENABLED and NATIVE_ENABLED flags to control this.

     NATIVE_ENABLED = false
     BYTE_ENABLED = true
     OCamlProgram(prog, foo bar baz)

If you have C files (say file1.c file2.c file3.c) in your project, you 
can add them using the StaticCLibrary function.

     StaticCLibrary(libx, file1 file2 file3)
     OCAML_CLIBS = libx
     OCamlProgram(prog, foo bar baz)

If you have other directories in your project, you can include them with 
the directive

     .SUBDIRS: dir...

For further information see the documentation at 
http://omake.metaprl.org/, especially the section on examples.

OMake 0.9.1 is an alpha release.  While we have made an effort to ensure
that it is bug-free, it is possible some functions may not behave as you
would expect.  Please report any comments and/or bugs to the mailing
list omake@metaprl.org

Jason Hickey                  http://www.cs.caltech.edu/~jyh
Caltech Computer Science      Tel: 626-395-6568 FAX: 626-792-4257

To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners