On Tue, Apr 12, 2016 at 8:59 AM, Christoph Höger <
christoph.hoeger@tu-berlin.de> wrote:
_all_ source files in
I think that is Gabriel's point. The definition of _all_ depends on when
you think this pattern will be evaluated.
It would be a major PITA to add all these files manually...
>
Not really. The nice thing about ocamlbuild is that you can write arbitrary
OCaml code, so just compute deps by traversing the directory yourself.
Am 12.04.2016 um 14:48 schrieb Gabriel Scherer:
> > Ocamlbuild distinguishes "static dependencies", which are expressed in
> > the ~deps argument of the rule declaration, and "dynamic dependencies"
> > which are files required by the rule command.
> >
> > The notion of pattern accepted for static dependencies is indeed
> > rather rigid (less expressive than the patterns used in the _tags
> > file), and what you have in mind does not work. The supported patterns
> > are deterministic: given one file, there is a unique way a pattern can
> > match, and a pattern is instantiated into a single file by any
> > substitution environment. There is a good reason for that: it is not
> > clear what the semantics of your proposal would be. Indeed, ocamlbuild
> > tries to recursively build all static dependencies before deciding to
> > apply a rule, but what does it mean to build all **/*.mo? Listing the
> > one that exist in the source directory is easy, but how would you
> > guess which one to try to build recursively using other rules?
> >
> > Notions such as "all files matching P in this directory" are not
> > stable to the replacement of a source file by an intermediate target:
> > for example if tomorrow you decide that one of the .mo file will be
> > itself pre-processed from a .mo.pp file, it won't be seen by a
> > existing-file globbing technique anymore. You have a lot of
> > flexibility in the behaviors you implement in the build command, so
> > you can easily do the matching there and "build" those files, but it
> > will result in a relatively fragile rule; this is you decision to
> > make, and not in the path of least resistance.
> >
> >
> > On Tue, Apr 12, 2016 at 8:00 AM, Christoph Höger
> > wrote:
> >> Dear all,
> >>
> >> I want to write a custom ocamlbuild rule that basically combines all
> >> source files from a given (sub-)directory and thus depends on these
> files.
> >>
> >> However, the following does not work:
> >>
> >> rule "normalize (preprocess) a Modelica library"
> >> ~prods:["%.modlib.impl"; "%.modlib.sign"]
> >> ~deps:["%.modlib/**/*.mo"; "%.modlib.depends"]
> >> ~doc:"Preprocesses a Modelica library"
> >> modlibc_command
> >>
> >> It seems that the rule does not expand the pattern in the dependency. Is
> >> there a way to achieve something similar? It would be a major PITA to
> >> add all these files manually...
> >>
> >> regards,
> >>
> >> Christoph
> >> --
> >> Christoph Höger
> >>
> >> Technische Universität Berlin
> >> Fakultät IV - Elektrotechnik und Informatik
> >> Übersetzerbau und Programmiersprachen
> >>
> >> Sekr. TEL12-2, Ernst-Reuter-Platz 7, 10587 Berlin
> >>
> >> Tel.: +49 (30) 314-24890
> >> E-Mail: christoph.hoeger@tu-berlin.de
> >>
> >> --
> >> Caml-list mailing list. Subscription management and archives:
> >> https://sympa.inria.fr/sympa/arc/caml-list
> >> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> >> Bug reports: http://caml.inria.fr/bin/caml-bugs
> >
>
>
> --
> Christoph Höger
>
> Technische Universität Berlin
> Fakultät IV - Elektrotechnik und Informatik
> Übersetzerbau und Programmiersprachen
>
> Sekr. TEL12-2, Ernst-Reuter-Platz 7, 10587 Berlin
>
> Tel.: +49 (30) 314-24890
> E-Mail: christoph.hoeger@tu-berlin.de
>
> --
> Caml-list mailing list. Subscription management and archives:
> https://sympa.inria.fr/sympa/arc/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>