Version française
Home     About     Download     Resources     Contact us    
Browse thread
otags and OMakefile
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Nathaniel Gray <n8gray@g...>
Subject: Re: [Caml-list] otags and OMakefile
On 8/10/06, Sam Steingold <sds@gnu.org> wrote:
> what is the correct entry for TAGS in OMakefile?

Well, OMake doesn't have any special support for otags, so the first
question is, can you build the tags file outside of OMake?

> I have this in the top-level OMakefile:
> ------------------------------------------------------------------
> TAGS:
>         otags -r $(SRC_DIRS)
> ------------------------------------------------------------------
> (where SRC_DIRS are also the dependencies of .SUBDIRS).
> this is deficient for 2 reasons:
>
> 1. somehow otags tries to read non-ml files (despite "otags -h" claiming
> that suffixes are [.mli; .ml]) and fails on especially large ones:
> ------------------------------------------------------------------
> otags: Unix error
>    Syscall: stat
>    Arg:     ./run/scan/top-20060612.log
>    Error:   Value too large for defined data type
> ------------------------------------------------------------------

The otags author(s) will have to answer that one.

> 2. otags does not respect the pre-processors used for some files,
> resulting in many errors:

Does otags get called with -pp flags?

> despite this, a valid TAGS file is created.

But surely it is incomplete.

> the preprocessing is specified in OMakeroot:
> ------------------------------------------------------------------
> # Preprocess OCaml-files with a given OCaml-preprocessor
> OCamlMakePPDeps(pps, names) =
>    pp_cmos = $(addsuffix .cmo, $(pps))
>    deps =
>    foreach(pp_cmo, $(pp_cmos))
>      deps += $(OCamlAddLibDir $(pp_cmos))
>      export deps
>    pp_cmd = camlp4o $(PREFIXED_OCAMLINCLUDES) $(pp_cmos)
>    OCAMLPPFLAGS = -pp "$(pp_cmd)"
>    OCAMLDEPFLAGS = $(OCAMLPPFLAGS)
>    foreach(name, $(names))
>      tgts = $(addsuffixes .cmi .cmo .cmx .o, $(name))
>      scan_deps = scan-ocaml-$(name).ml scan-ocaml-$(name).mli
>      Capture_deps(__ENV, \
>        OCAMLPPFLAGS OCAMLDEPFLAGS, $(tgts), $(deps), $(scan_deps))
>      tgts = $(addsuffix .auto.mli, $(name))
>      Capture_deps(__ENV, \
>        OCAMLPPFLAGS OCAMLDEPFLAGS, $(tgts), $(deps), $(scan_deps))
>      export __ENV
>    export __ENV
> ------------------------------------------------------------------
> and in OMakefile:
> ------------------------------------------------------------------
> OCamlMakePPDeps(pa_sexp_conv, foo bar baz)
> ------------------------------------------------------------------

I'm not enough of an OMake guru to comment on this, so I'll just say
again that you should make sure you know how to get the result you
want outside of OMake before you worry about how to do it inside of
OMake.

Cheers,
-n8

-- 
>>>-- Nathaniel Gray -- Caltech Computer Science ------>
>>>-- Mojave Project -- http://mojave.cs.caltech.edu -->