Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Ocamlbuild with findlib + camlp4
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2008-03-07 (14:46)
From: Dario Teixeira <darioteixeira@y...>
Subject: Re: [Caml-list] Ocamlbuild with findlib + camlp4

Thanks for your help.  I think we're getting closer to creating a generic
Ocamlbuild plugin that adds support for Findlib.  However, I'm also beginning
to suspect that actually getting there -- creating a true generic solution --
might not be at all possible with the current Ocamlbuild.

> * The "pkg_nums", "pkg_str", and "pkg_unix" tags (simply add packages to 
> the "packages" list if you need other packages) which add the "-package 
> nums", "-package str" and "-package unix" options respectively. Tag your 
> source files with the -package options they should use when compiling, 
> and your output files with the -package options they should use when 
> linking.

Your idea can be extended to create a plugin that supports any of the
packages available through Findlib.  Just query Findlib for a list of

let packages =
        Findlib.init ();
        Fl_package_base.list_packages ()

While in theory this should work, it's still a brute force approach.
Mind you, my initial idea was that when finding a tag of the form
"pkg_foobar" (the actual syntax could be "pkg(foobar)" or something
like that), Ocamlbuild would dynamically add a new rule for that
package.  Your solution statically adds all possible rules at the
time the plugin is compiled  (and the patch I suggest above is even
more extreme in this regard).

Now, if you ask what's so bad about explicitly listing all packages in, the answer is that it forces users to write a plugin
if they want to use findlib.  Personally, I think that findlib support
is so essential that one shouldn't be forced to write plugins in order
to use it.

> * It does nothing to handle camlp4, but you should be able to add the 
> correct options yourself.
> Please tell me if it is what you needed or not :)

I'm finding that adding camlp4 support is where things get messy:
Ocamlbuild's default rules conflict with findlib's.  I am yet to
find a solution that manages to integrate the three successfully.

Kind regards,
Dario Teixeira

Sent from Yahoo! Mail.
The World's Favourite Email