caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Thierry Bravier <thierry.bravier@dassault-aviation.fr>
To: Xavier.Leroy@inria.fr
Cc: caml-list@inria.fr, Emmanuel.Dorlet@cea.fr
Subject: Re: problem with ocamlmktop -output-obj
Date: Mon, 26 Oct 1998 17:03:30 +0100	[thread overview]
Message-ID: <36349D52.1E7B@dassault-aviation.fr> (raw)
In-Reply-To: <3627228B.20CE@dassault-aviation.fr>

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




  reply	other threads:[~1998-10-27 19:01 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-10-14 16:47 Thierry Bravier
1998-10-15 17:22 ` Xavier Leroy
1998-10-16 10:40   ` Thierry Bravier
1998-10-26 16:03     ` Thierry Bravier [this message]
1998-10-30 10:17       ` Pascal Brisset
1998-10-30 17:56         ` problem with ocamlmktop (contd) Pascal Brisset
1998-11-03  9:32           ` Pascal Brisset
1998-11-04 17:56           ` Thierry Bravier
1998-11-04 16:12   ` problem with ocamlmktop -output-obj luther

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=36349D52.1E7B@dassault-aviation.fr \
    --to=thierry.bravier@dassault-aviation.fr \
    --cc=Emmanuel.Dorlet@cea.fr \
    --cc=Xavier.Leroy@inria.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;
as well as URLs for NNTP newsgroup(s).