Message-Id: <36349D52.1E7B@dassault-aviation.fr>
Date: Mon, 26 Oct 1998 17:03:30 +0100
From: Thierry Bravier <thierry.bravier@dassault-aviation.fr>
To: Xavier.Leroy@inria.fr
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
This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:16 MET