Browse thread
problem with ocamlmktop -output-obj
[
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: | 1998-10-27 (19:01) |
From: | Thierry Bravier <thierry.bravier@d...> |
Subject: | Re: problem with ocamlmktop -output-obj |
Thierry Bravier wrote: > I must now face a problem: > > It would be really nice if I could use -custom but ... > > How can I ask ocamlc -custom to : > 1) use a user-provided compiled main() (potentially compiled with C++) > 2) link with a user-provided linker (aka g++) > 3) I know that internally, some C code is output and compiled > (for the external primitives I think), I think this code should > still be compiled with the C compiler used to build ocaml. > > Are there any clues to help me build this toplevel with C++ code > without -output-obj ? > > Thanks Here is a suggestion so that I can link ML with C++ and avoid using -output-obj when I don't need it (particularly to build a toplevel). with two new options for ocamlc, one could choose ... * ocamlc -cc my-ccompiler ... an alternative C compiler internally used to compile the internal primitive table and other C codes. * ocamlc -clinker my-clinker ... an alternative linker used to link native objects before concatenation of ocaml cmo files this one is most important to C++ users because it makes it possible to let a C++ tool link object files. I have emulated this thanks to an ugly hack that I would like to remove. I have made my local gcc startup script read an environment variable and link with another linker when the variable is set (in my case, a C++ linker). It gives me the ability to build a C++/ML program (or toplevel) with ocamlc (or ocamlmktop) -custom which is just what I need. I also have a request about the toplevel module: The #quit directive happens to call directly exit this is a problem if the toplevel is embedded in a C (or C++) main () function because after #quit, the program exits instead of finishing main ()'s code. In the case of C++ it's even worse because destructors are not called. I would suggest an internal toplevel_exit exception raised by #quit and handled by the toplevel loop to return properly from caml_main () Thank you. -- Thierry Bravier Dassault Aviation - DGT / DPR / DESA 78, Quai Marcel Dassault F-92214 Saint-Cloud Cedex - France Telephone : (33) 01 47 11 53 07 Telecopie : (33) 01 47 11 52 83 E-Mail : mailto:thierry.bravier@dassault-aviation.fr