caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Xavier Leroy <Xavier.Leroy@inria.fr>
To: Chris Hecker <checker@d6.com>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] minor suggestions for Win32 port
Date: Tue, 10 Apr 2001 10:48:39 +0200	[thread overview]
Message-ID: <20010410104839.B16732@pauillac.inria.fr> (raw)
In-Reply-To: <200104070314.UAA24087@smtp4-cm.mail.eni.net>; from checker@d6.com on Fri, Apr 06, 2001 at 08:14:42PM -0700

> 1.  If you're using the MSVC cl.exe compiler, it sends linker command
>     line parameters in a relatively broken way, so this affects the
>     -cclib switch.

I can't say I fully understand all the issues, but if you can sort
them out and send me a patch, I'll be very happy.  Concerning Lionel
Fourquaux's suggestion of calling link.exe directly, this can also be
considered, although for "ocamlc -custom" we also need to call the C
compiler to compile a small chunk of generated C code.

> 2.  Win9x, pile of dung that it is, has rather strict command line
>     length limitations.  Since ocaml tries to pass all the objs and
>     whatnot on the command line for the final link, it fails with big
>     projects on Win9x.  The solution to this is to use a "response
>     file".  A response file is a tmp file you write out with all the
>     parms, and then call the compiler like this: "cl.exe
>     @/tmp/rsp.tmp" and it reads the response file as if it was a
>     command line.

The Sys.command OCaml function knows how to use a response file if the
command-line is too long (see byterun/win32.c, function win32_system()).
However, it is calibrated for Win NT/2K, where the maximal length of a
command line is circa 1000 characters.  I can reduce the maximal
length to what Win9x tolerates, although the best solution would be to
find out at run-time the max length that the system tolerates.  (Going
through response files when not absolutely necessary is a bit of a
problem, since the command that we're calling might not understand
response files, so better avoid them if at all possible.)
Any ideas on how to do this in Win32?

> 3.  [...] I
>     finally tracked it down to the fact that the boot/ocamlc file in
>     the tarball was compiled on Linux (or at least with the cygwin
>     stuff), so its rules for adding object files and linking -custom
>     bytecode apps are incompatible with VC (namely, it looks for .o
>     files, not .objs, and it tries to spawn gcc rather than link.exe
>     or cl.exe).  Once I figured this out I was able to build by
>     putting a VC ocamlc into boot/.

Right, currently the source distribution contains just a Unix boostrap
compiler, which (barely) suffices to bring the system up to speed even
under Win32.  To address the problem you had, it should be enough
to do "nmake -f Makefile.nt bootstrap", which completes the bootstrap
so that the boot compilers and the generated compilers are identical
(and Win32-aware).

> 4.  Have the makefile.nt put the .exe extension on all the output
>     files.

I must have missed a few .exe extensions.  Again, if you happen to
have patches handy...

Cheers,

- Xavier Leroy
-------------------
To unsubscribe, mail caml-list-request@inria.fr.  Archives: http://caml.inria.fr


  reply	other threads:[~2001-04-10  8:48 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-04-07  3:14 Chris Hecker
2001-04-10  8:48 ` Xavier Leroy [this message]
2001-04-07 10:14 Lionel Fourquaux

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=20010410104839.B16732@pauillac.inria.fr \
    --to=xavier.leroy@inria.fr \
    --cc=caml-list@inria.fr \
    --cc=checker@d6.com \
    /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).