@chapter What is it?

The GNU-Win32 tools are ports of the popular GNU development tools
for Windows NT and 95.  They run thanks to the Cygwin32 library which
provides the UNIX system calls and environment these programs expect.

With these tools installed, it is possible to write Win32 console or
GUI applications that make use of the standard Microsoft Win32 API
and/or the Cygwin32 API.  As a result, it is possible to easily
port many significant Unix programs without the need
for extensive changes to the source code.  This includes configuring
and building most of the available GNU software (including the packages
included with the gnu-win32 development tools themselves).  Even if
the development tools are of little to no use to you, you may have
interest in the many standard Unix utilities provided with the package.
They can be used both from the bash shell (provided) or from the
command.com.

@section Is it free software?

Yes.  Parts are GNU software (gcc, gas, ld, etc...), parts are covered
by the standard Berkeley license, some of it is public domain, some of
it was written by Cygnus and placed under the GPL.  None of it is
shareware.  You don't have to pay anyone to use it but you should be
sure to read the copyright section of the FAQ more more information on
how the GNU General Public License may affect your use of these tools.
If you intend to port a commercial application using Cygwin32, you may
want the commercial license to Cygwin32 that comes with the
supported native Win32 GNUPro product.  For more information about
the commercial-use license, please contact info@@cygnus.com.  All
other questions should be sent to the project mailing list
gnu-win32@@cygnus.com.

@section A brief history of the project

The first thing done was to enhance the development tools (gcc, gdb,
gas, et al) so that they could generate/interpret Win32 native object
files.

The next task was to port the tools to Win NT/95.  We could have done
this by rewriting large portions of the source to work within the
context of the Win32 API.  But this would have meant spending a huge
amount of time on each and every tool.  Instead, we took a substantially
different approach by writing a shared library (cygwin.dll) that adds
the necessary unix-like functionality missing from the Win32 API (fork,
spawn, signals, select, sockets, etc.).  We call this new interface the
Cygwin32 API.  Once written, it was possible to build working Win32
tools using unix-hosted cross-compilers, linking against this library.

From this point, we pursued the goal of producing native tools capable of
rebuilding themselves under Windows 95 and NT (this is often
called self-hosting).  Since neither OS ships with standard UNIX
user tools (fileutils, textutils, bash, etc...), we had to get the
GNU equivalents working with the Cygwin32 API.  Most of these tools were
previously only built natively so we had to modify their configure
scripts to be compatible with cross-compilation.  Other than the
configuration changes, very few source-level changes had to be made.
Running bash with the development tools and user tools in place,
Windows 95 and NT look like a flavor of UNIX from the perspective of the
GNU configure mechanism.  Self hosting was achieved as of the beta 17.1
release.
