Browse thread
Ocamlbuild: could help embedding Ocaml code into shared object?
-
Matthieu Dubuget
-
Romain Bardou
- Matthieu Dubuget
-
Romain Bardou
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2008-06-05 (19:18) |
From: | Matthieu Dubuget <matthieu.dubuget@g...> |
Subject: | Re: [Caml-list] Ocamlbuild: could help embedding Ocaml code into shared object? |
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