On 12/08/2011, David Allsopp <[email protected]> wrote:
> Matthieu Dubuget wrote:
>> From: David Allsopp <[email protected]> wrote:
>> > Good to know that 64-bit MinGW is working - that said, I thought the
>> MinGW port was broken in 3.12.1 or is that not affected with the 64-bit
>> compiler? Could you share details on how you configured OCaml?
>>
>> This is not 64 bits. i686-w64-mingw32 is 32 bits.
>
> Ah, my bad - I mistakenly thought the mingw32 was the project and w64 the
> architecture!
>
> I'm probably being low, but is the main benefit of using mingw-w64-mingw32
> over the version shipped with Cygwin (-mno-cygwin) simply that the latter
> isn't working with 3.12.1 or is there another reason for using it?

Well, first and as far as I know, cygwin has had a package for the
*-w64-mingw32 for some time now. They are maintained by someone active
within the mingw-w64 project.

The reason to use one or another is to know which tools you are going
to use. Compiling from cygwin to windows without cygwin (what you call
-mno-cygwin) is actually cross-compilation!

Using mingw* from cmd.exe means you don't have a shell interpreter or
most of the posix tools.

Using it from msys (which is an ancient fork from cygwin which
requires a fork from gcc-2.96) means you have a mutant environment
which is trying to both please posix and windows. I'd call msys
"mostly unreliable crap". It's pretty light, it looks and feels native
but it's a weird mix and _you_ should absolutely never link against
the msys dll.

Cygwin simply lets you use more tools and have them working better
usually. Cygwin is also way slower (I still remember simple
./configure scripts taking 15 minutes to run, and networking has a
higher latency too).

Of course, you can also cross-compile from linux or any other posixy OS.


All of them have advantages and issues. One issue of msys is having
even more headaches when doing stuff on windows by the way.


As for -mno-cygwin, I saw mentions of it on IRC quite recently and
found out that it was on its way out. Actually that it was already
removed. See:
  "PING: Deprecation of -mno-cygwin"
  http://cygwin.com/ml/cygwin/2009-03/threads.html#00766

It has been deprecated since 2009 and your GCC documentation should
actually reflect that. I think it was only removed very recently which
means it won't disappear until the next release at least but it's
probably already subbject to bitrot.

As far as I know (haven't looked at that), the right way is simply to
cross-compile. Instead of passing -mno-cygwin as a CFLAG, use
--host=x86_64-w64-mingw32 when calling configure.

--

Adrien Nader

-- 
Caml-list mailing list.  Subscription management and archives:
https://sympa-roc.inria.fr/wws/info/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Reply via email to