From: khan@xraylith.wisc.edu (Mumit Khan)
Subject: Re: [ANN] egcs-1.0.2, binutils-980303 for Cygwin32 b19
26 Mar 1998 18:27:34 -0800
Message-ID: <9803250504.AA00484.cygnus.gnu-win32@modi.xraylith.wisc.edu>
References: <6qDI7l4ppfB@mike.franken.de>
To: mh@mike.franken.de (Michael Hirmke)
Cc: gnu-win32@cygnus.com

mh@mike.franken.de (Michael Hirmke) writes:
> I followed the discussion about cygwin, mingw and egcs for some time
> now, but I'd like to get a summary about what purpose serves each of
> these packages. From the discussions I got a somewhat limited impression
> on how to use them, but that's not enough.
> Can anyone give such a summary or perhaps just point to an existing one ?

Michael,

Here's my take on the various pieces. Others please comment/correct.

- cygwin: The GPL'd POSIX emulation layer on Win32 developed by Cygnus
  Solutions. It provides an easy vehicle to port code developed on Unix
  with little or no source code changes, plus gives you the POSIX
  interface. All code linked with Cygwin32 DLL falls under GPL, and must
  in terms comply with GPL as a result.

- mingw: Brainchild of Colin Peters. It's a set of replacement headers for
  ANSI API (stuff you expect in /usr/include), and the startup files for
  GCC to "hook" your programs into using CRTDLL or MSVCRT, the runtimes
  supplied by Microsoft. Gain? No copyright/licensing restrictions, since 
  you don't link with Cygwin32 DLL, but you lose all the POSIX stuff and
  Unix-style API on top of what Win32 provides.

These two systems, cygwin and mingw, are exclusive of each other, and
you can't use both in the same "program". All cygwin applications MUST
use CYGWIN.DLL for most its services, whereas all mingw applications
MUST use either CRTDLL.DLL or MSVCRT.DLL for its servcies. Both depend 
on and share the following however:
  
  - compiler toos: GNU FSF or EGCS compilers, binary utilities such
    assembler, linker, dlltool, winders, etc.
  - windows32api: Scott Christley's Windows32api headers and export
    definitions that produce all the export libraries (such as kernel32)
    using dlltool.
  - GNU debugger, etc.

- EGCS: EGCS is a "rapid" GCC development project, and most of the new
  and experimental changes eventually will make into FSF GCC (eg., 
  GCC-2.8.x). 

I usually include binutils (gas, ld, etc) into my egcs distributions, so
you can think of egcs as the development toolchain, whereas cygwin and
mingw provide you with a OS runtime on top of MS Win32 system.

Now it gets more complex as egcs built for either cygwin or mingw can
produce code for the other (sort of cross-compilation), but that's not
important in this case.

If you have more questions, feel free to email.

Regards,
Mumit
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".
