From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id TAA09982; Fri, 21 Nov 2003 19:55:50 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id TAA10215 for ; Fri, 21 Nov 2003 19:55:48 +0100 (MET) Received: from smarthost2.mail.easynet.fr (smarthost2bis.mail.easynet.fr [212.180.1.37]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id hALItm123127 for ; Fri, 21 Nov 2003 19:55:48 +0100 (MET) Received: from [212.180.39.62] (helo=gros) by smarthost2.mail.easynet.fr with esmtp (Exim 3.35 #1 (Debian)) id 1ANGRW-0006A0-00; Fri, 21 Nov 2003 19:55:47 +0100 Received: from [192.168.0.11] (helo=ptit.gallu.homelinux.org) by gros with esmtp (Exim 3.36 #1 (Debian)) id 1ANGRW-0000Ex-00; Fri, 21 Nov 2003 19:55:46 +0100 Received: from gildor by ptit.gallu.homelinux.org with local (masqmail 0.2.20) id 1ANGRS-0J8-00; Fri, 21 Nov 2003 19:55:42 +0100 Date: Fri, 21 Nov 2003 19:55:42 +0100 To: Jason Hickey Cc: caml-list@inria.fr, Martin Jambon Subject: Re: [Caml-list] Building large and portable projects Message-ID: <20031121185542.GC1154@gallu.homelinux.org> References: <3FBE45D2.5070309@cs.caltech.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3FBE45D2.5070309@cs.caltech.edu> User-Agent: Mutt/1.5.4i From: X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 le-gall:01 hickey:01 digests:01 subdirs:01 pserver:01 cvsroot:01 pserver:01 cvsroot:01 rpms:01 subdirs:01 foo:01 foo:01 libs:01 camlp:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Fri, Nov 21, 2003 at 09:05:22AM -0800, Jason Hickey wrote: > Martin Jambon wrote: > >Is there a convenient way to develop OCaml code, and be sure that > >this code will be configurable, compilable, installable and > >executable without changes, on any environment where OCaml is available? > > We have been using omake to build several large projects, primarily on > Linux and Windows. omake is written in OCaml, and provides a build > system with syntax similar to make, but project-wide dependency > analysis. Here are some features: > > - omake runs on Unix, Windows, MacOS, and presumably > other architectures where OCaml is available. > - dependency analysis is project-wide (like cons), > based on MD5 digests > - automated dependency analysis > - there is builtin support for OCaml and C code, > and it is easy to add support for other kinds > of files (just like make). > - the OMakefile syntax is similar to GNU make, but > - omake has user-defined functions > - OMakefile programs are functional > - the .SUBDIRS target is used to define > the project hierarchy > - different parts of the project can have > different configuration. > > omake is available by anonynous CVS from cvs.metaprl.org. > % cvs -d :pserver:anoncvs@cvs.metaprl.org:/cvsroot login > The password is anoncvs. > % cvs -d :pserver:anoncvs@cvs.metaprl.org:/cvsroot checkout omake > > Alternatively, RPMs are available at rpm.nogin.org. > > Here is a short description. Every project must have an OMakeroot file > in the project root. It is usually boilerplate; this is typical: > > # Include the standard configuration > include $(STDROOT) > > # Include the OMakefile > .SUBDIRS: . > > The project commands are then placed in an OMakefile. To build a > standalone OCaml program from files a.ml b.ml and c.ml, you just need > one line. The OCamlProgram function is defined in the system OMakeroot. > > OCamlProgram(foo, a b c) > > You can choose the byte-compiler, native-code compiler, or both. > > BYTE_ENABLED = true > NATIVE_ENABLED = true > OCamlProgram(foo, a b c) > > Maybe you have some C files you need to include in your compile as well. > Perhaps f.c is a generated file. > > f.c: f1.c f2.c > cat $+ > $@ > StaticCLibrary(bar, d e f) > LIBS = bar > OCamlProgram(foo, a b c) > > Perhaps you use the C-preprocessor on some .mlp files: > > %.ml: %.mlp > $(CPP) $*.mlp > $@ > > The system sources contain more examples, and the MetaPRL system, also > available at cvs.metaprl.org, provides a very large, complex, example. > > Jason > Hello, It seems great to me... Is there way to define camlp4 syntax ? ( for example XXX.ml needs camlp4 with cmo zoggy.cmo or something like that ) Is there a kind of configure in it ? Can you use META files. (... a lot of other question but i will take a look at it before asking ). Kind regad Sylvain LE GALL ------------------- 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