From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=AWL,SPF_NEUTRAL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id D15BABC6B for ; Tue, 18 Sep 2007 16:48:58 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAP+B70bAXQImn2dsb2JhbACOEAICBwQGBwgY X-IronPort-AV: E=Sophos;i="4.20,269,1186351200"; d="scan'208";a="977202" Received: from discorde.inria.fr ([192.93.2.38]) by mail1-smtp-roc.national.inria.fr with ESMTP; 18 Sep 2007 16:50:05 +0200 Received: from ausone.inria.fr (peray.inria.fr [128.93.8.98]) by discorde.inria.fr (8.13.6/8.13.6) with SMTP id l8IEnK8f015851; Tue, 18 Sep 2007 16:49:20 +0200 Received: by ausone.inria.fr (sSMTP sendmail emulation); Tue, _d Sep 2007 16:49:30 +0200 From: "Nicolas Pouillard" Cc: Inria Ocaml Mailing List Subject: Re: [Caml-list] ocamlbuild .inferred.mli problem To: "Hezekiah M. Carty" References: <20070916023623.GA10905@laptop44.chn.comcast.net> <1190038867-sup-9845@ausone.inria.fr> <20070917180849.GA3012@laptop44.umd.edu> In-Reply-To: <20070917180849.GA3012@laptop44.umd.edu> Date: Tue, 18 Sep 2007 16:49:30 +0200 Message-Id: <1190125825-sup-5265@ausone.inria.fr> User-Agent: Sup/0.1 Content-Type: text/plain; charset=utf-8 X-j-chkmail-Score: MSGID : 46EFE570.000 on discorde : j-chkmail score : X : 0/20 1 0.000 -> 1 X-Miltered: at discorde with ID 46EFE570.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; mli:01 camlp:01 -pp:01 camlp:01 cmo:01 flags:01 ocaml:01 ocaml:01 cmo:01 -pp:01 compilation:01 ocamldep:01 syntax:01 ocamldep:01 wiki:01 Excerpts from Hezekiah M. Carty's message of Mon Sep 17 20:08:49 +0200 2007: > On Mon, 17 Sep 2007, Nicolas Pouillard wrote: > > > > I have also tried creating a myocamlbuild.ml to get around this, but > > > using something like this in myocamlbuild.ml: > > > > > > flag ["use_openin"] > > > (S [A "-I"; A "+camlp4"; A "-pp"; A "camlp4o pa_openin.cmo"]);; > > > > You certainly don't want to add these flags to any commands that treat a file > > that is tagged use_openin. You certainly want to add them only for ocaml > > preprocessing. > > > > flag ["ocaml"; "pp"; "use_openin"] > > (A"pa_openin.cmo");; > > > > This gets me a little bit closer I think, but I'm still not able to > make ocamlbuild do what I want. > > Here's the current code - > test.ml: > let sum l = open List in fold_left (+) 0 l Ok > _tags: > "test.ml": use_openin Your second attempt is good you need the camlp4o tag. > myocamlbuild.ml: > open Ocamlbuild_plugin;; > open Command;; > flag ["ocaml"; "pp"; "use_openin"] (A "pa_openin.cmo");; You absolutely need to wrap this flag declaration to avoid order of initialization problems (see below). > Using the above "flag ..." line adds "-pp pa_openin.cmo" to the > compilation command line using the following line in _tags: > "test.ml": use_openin > > If I change the _tags line to: > "test.ml": camlp4o, use_openin Ok > the output from ocamlbuild test.cma is: > + /home/hcarty/Applications/godi/bin/ocamldep.opt -pp 'pa_openin.cmo > camlp4o' -modules test.ml > test.ml.depends > sh: pa_openin.cmo: command not found > Preprocessing error on file test.ml That's due to the order of initialization. > How do I fix this to properly use a syntax extension such as > pa_openin.cmo and be able to specify the location of the .cmo, but > only for the files which need that specific extension? ie. add "-I > +camlp4" to the ocaml* command line, and have the -pp value in the > correct order. $ cat myocamlbuild.ml open Ocamlbuild_plugin;; open Command;; dispatch begin function | After_rules -> flag ["ocaml"; "pp"; "use_openin"] (A"pa_openin.cmo"); dep ["ocaml"; "ocamldep"; "use_openin"] ["pa_openin.cmo"]; | _ -> () end;; > I apologize for asking such a basic question, but I haven't been > able to figure out the answer from the user's guide or other > examples I've found. Once this is all worked out I would be happy > to add this to a wiki somewhere. Yes you're right! I've quickly added a page on that: http://brion.inria.fr/gallium/index.php/Ocamlbuild -- Nicolas Pouillard aka Ertai