From: Matthieu Dubuget <matthieu.dubuget@gmail.com>
To: Romain Bardou <Romain.Bardou@lri.fr>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Ocamlbuild: could help embedding Ocaml code into shared object?
Date: Thu, 05 Jun 2008 21:20:06 +0200 [thread overview]
Message-ID: <48483C66.8090206@gmail.com> (raw)
In-Reply-To: <4847A7E6.9020506@lri.fr>
Romain Bardou a écrit :
> Matthieu Dubuget a écrit :
>> I often deliver my work as shared objects (DLL, in fact, because I'm
>> stuck with Windows at work).
>>
>> I would like to have ocamlbuild take care of this, but I don't know
>> exactly how to do it?
>>
>> The idea would be to split the work in two separate rules.
>>
>> The first rule generates a shared object from the Objective Caml code:
>>
>> rule "mloo & cmx* -> native.oo.o"
>> ~dep:"%.mloo"
>> ~prod:"%.native.oo.o"
>> action_for_nativecode
>>
>> rule "mloo & cmo* -> byte.oo.o"
>> ~dep:"%.mloo"
>> ~prod:"%.byte.oo.o"
>> action_for_bytecode
>>
>> The actions should return commands with A "-output-obj". But I do not
>> know how to write them. It would need a mechanism similar to the one
>> used for mlpack. For example, one .mloo file listing the ocaml files to
>> link into the output object. Dynamic dependencies are to be generated
>> from the content of the .mloo file.
>>
>> Unfortunately, I have no idea how to write that?
>>
>> The second rule would generate a shared object from the .o files.
>> Maybe the current clib is enough? I have to add a flag to link
>> the runtime engine by adding -lasmrun -lm -ldl (-lm and -ldl being
>> deduced from the output of ocaml* -config).
>>
>> Am I looking in the right direction?
>>
>> Thanks in advance for your help
>>
>> Matt
>
> I know nothing about DLLs and OCaml but if I understand correctly, you
> need the following.
>
> 1) How to parse a file similar to a .mllib file in a plug-in. There is
> an example in the Ocamlfind plug-in on the wiki:
>
> http://brion.inria.fr/gallium/index.php/Using_ocamlfind_with_ocamlbuild#Source
>
>
> You want to look at the find_packages function.
>
> 2) How to generate dynamic dependencies. This is done by calling the
> second argument of the function you give to the rule function. This is
> also explained in the wiki:
>
> http://brion.inria.fr/gallium/index.php/Making_plugins#Dynamic_dependencies
>
>
> I hope it helps.
>
Thanks for the links Romain. I will have a look.
Matt
prev parent reply other threads:[~2008-06-05 19:18 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-01 11:01 Matthieu Dubuget
2008-06-05 8:46 ` [Caml-list] " Romain Bardou
2008-06-05 19:20 ` Matthieu Dubuget [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48483C66.8090206@gmail.com \
--to=matthieu.dubuget@gmail.com \
--cc=Romain.Bardou@lri.fr \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox