Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Tuareg mode under Cygwin...
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2006-02-21 (02:55)
From: Jeremy Shute <shutej@g...>
Subject: Re: [Caml-list] Tuareg mode under Cygwin...
> Ok, so that confirms it.
> > I do this because MinGW Caml seems to be using "ar" instructions that
> > are meant for the Cygwin version of "ar" (meaning they have an ampersand
> > preceding the DOS path of the temporary file, which MinGW's "ar" doesn't
> > understand).
> Huh?  Neither does Cygwin's ar, AFAIK.  Something may be screwed up with
> the MinGW build.

ocamlopt -a

> It looks to me as if MinGW Caml is actually built with Cygwin, using
> > "gcc -mno-cygwin".  Maybe I'm mistaken?  So, I use MinGW Caml with
> > Cygwin.
> "gcc -mno-cygwin" is a MinGW cross-compiler.  It does not produce Cygwin
> binaries, it does not use Cygwin headers.

Yeah, I know.

It's the same as the MinGW
> compiler, except for the little detail of understanding Cygwin paths to
> source and library files.  There is no difference between the binaries
> produced by Cygwin's "gcc -mno-cygwin" and MinGW's gcc.

Actually, there is a difference, but it's very minute.  The headers are the
same but the compiler structure is different, as far as I remember.  A hint
as to why that might be:

x=`which gcc` pushd `dirname "$x"` && nm gcc.exe | grep cygwin && popd

That aside, I'm confused.  Didn't you just say that you use a native
> O'Caml build because the MinGW one is broken?

I use the MinGW build from the Cygwin terminal.

> Apparently, there is an issue in the ptys.  I would say that's an apt
> > description.  I'll have to try the "ocamlmktop -custom".
> Can you first try to run your version of ocaml in Cygwin's rxvt and let me
> know if you observe the same problematic behavior?

No, the problem is not present in rxvt.  Caml pops up as usual.  However,
C-c in the process will ruin your rxvt, meaning it will escape to the shell
but be generally unresponsive to keyboard events AND you can't close the
window with the close button in the upper-right.  Which I consider a
problem.  C-c is ingrained (it's like C-w closing my windows, another PITA).

> I really don't want to use a Cygwin version of Caml.  I don't like it
> > when projects (Cygwin, Berkeley DB) tell me that I have to license my
> > source code a certain way when I link to their libraries.
> AFAIK, Cygwin does not impose any restrictions on the O'Caml bytecode
> beyond what the O'Caml license has (unless you use native code, in which
> case you do link with Cygwin).

Hmmm, interesting.  So, O'Caml compiled binaries from Cygwin's O'Caml do not
use the cygwin DLL for their libc functions?

 Otherwise, Cygwin simply provides the
> toolset, and the O'Caml code is yours.  And even in that case, you simply
> cannot distribute the *Cygwin* versions of your binaries without
> open-sourcing them (since they'd need the Cygwin DLLs to work).  And even
> that can be worked around, AFAIK, by using the Red Hat buyout license.

This "Red Hat buyout license" is news to me, even though I know Redhat
bought out Cygwin quite some time ago.  I know what is currently said at:

...could be paraphrased, "Buy the rights to distribute the cygwin1.dll or
open your source to everyone you distribute your binaries to."  Which means
I don't want to link against it, which in turn means that I don't want to
develop under that environment and deal with porting incompatible features
should I ever want to incorporate my library code in a distributed binary.

If there's sufficient interest in helping me add a "-mno-cygwin"-like
> option to Cygwin's ocaml (so that it produces MinGW binaries using "gcc
> -mno-cygwin"), that would be another alternative for you.

Yes, there is interest.  Actually, I think the best option is to just fix
the problem with the MinGW ar, such that ``ocamlopt -a'' does not barf on
the temporary filenames.

> I aknowledge and respect their wishes, but I'm also free not to use
> > those projects (and therefore, not to contribute my bugfixes and
> > experience to their product).
> Indeed.
> > I'm happy to use the shell and the tools, but I want my binaries to be
> > unmistakenly mine.
> Well, I'm sorry to say that it is unlikely that Cygwin emacs will ever
> work seamlessly with native Windows binaries (e.g., those that spawn a
> console unless they detect one -- like ocaml -- since the whole point of
> inferior mode in emacs, as I understand it, is to work without a console).
> By mixing and matching various tools not designed to work together, you
> are bound to run into incompatibilities -- this is one of them.

Yes, I was wondering if perhaps there was a terminal incantation that would
work.  I did try ``sh -c ocaml'' with no success.

Since this isn't a problem with the Cygwin version of O'Caml (and, FWIW,
> you're likely to have the same problem with most Windows console
> applications), I'd suggest either requesting this as a Cygwin emacs
> feature (on the main Cygwin list) or using a non-Cygwin version of emacs.
> At the very least, you'll find a lot more expertise on the main Cygwin
> list on how to make Cygwin emacs work with Windows native programs than
> you'll find here.

Yes, yes.  Will do.

If you plan to post there, what I said earlier about the problem reporting
> guidelines still applies.

Thank you!