2004-01-15 Joshua Daniel Franklin <joshuadfranklin@yahoo.com>

* setup-net.sgml: Add "internet-setup" id anchor.
	* overview.sgml: Update "What is it?" section. Add links to
	"Is it free software?" section. Update "Brief History" section.
	* overview2.sgml: Rewrite "Expectations for {Windows,Unix}"
	as "Quick Start for those more experienced with {Windows,Unix}".
This commit is contained in:
Joshua Daniel Franklin 2004-01-16 06:31:49 +00:00
parent d398164fe4
commit 42fb62041d
4 changed files with 153 additions and 58 deletions

View File

@ -1,3 +1,11 @@
2004-01-15 Joshua Daniel Franklin <joshuadfranklin@yahoo.com>
* setup-net.sgml: Add "internet-setup" id anchor.
* overview.sgml: Update "What is it?" section. Add links to
"Is it free software?" section. Update "Brief History" section.
* overview2.sgml: Rewrite "Expectations for {Windows,Unix}"
as "Quick Start for those more experienced with {Windows,Unix}".
2004-01-11 Joshua Daniel Franklin <joshuadfranklin@yahoo.com>
* Makefile.in: Add new target for single-file User's Guide, use new

View File

@ -2,32 +2,43 @@
<sect1 id="what-is-it"><title>What is it?</title>
<para>The Cygwin tools are ports of the popular GNU development
tools and utilities for Windows NT and 9x. They function through the
use of the Cygwin library which provides the UNIX system calls and
environment that these programs require.</para>
<para>With the tools installed, programmers may write Win32
console or GUI applications that make use of the standard Microsoft
Win32 API and/or the Cygwin 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 development
tools included with the Cygwin distributions). Even if the
compiler tools are of little to no use to you, you may have
interest in the many standard UNIX utilities. They can be used both
from the bash shell (provided) or from the command.com.</para>
<para>
Cygwin is a Linux-like environment for Windows. It consists of a DLL
(<filename>cygwin1.dll</filename>), which acts as an emulation layer
providing substantial <ulink
URL="http://www.pasc.org/#POSIX">POSIX</ulink> (Portable Operating
System Interface) system call functionality, and a collection of tools,
which provide a Linux look and feel. The Cygwin DLL works with all x86
versions of Windows since Windows 95.
</para>
<para>
With Cygwin installed, users have access to many standard UNIX
utilities. They can be used from one of the provided shells such
as <command>bash</command> or from the Windows Command Prompt.
Additionally, programmers may write Win32 console or GUI applications
that make use of the standard Microsoft Win32 API and/or the Cygwin 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 development tools included with the Cygwin
distribution).
</para>
</sect1>
DOCTOOL-INSERT-ov-ex-win
DOCTOOL-INSERT-ov-ex-unix
<sect1 id="are-free"><title>Are the Cygwin tools free software?</title>
<para>Yes. Parts are GNU software (gcc, gas, ld, etc...), parts are
covered by the standard X11 license, some of it is public domain,
some of it was written by Red Hat 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 for more information on
how the GNU General Public License may affect your use of these
<para>Yes. Parts are <ulink URL="http://www.gnu.org/">GNU</ulink> software
(<command>gcc</command>, <command>gas</command>, <command>ld</command>, etc.),
parts are covered by the standard
<ulink URL="http://www.x.org/Downloads_terms.html">X11 license</ulink>,
some of it is public domain, some of it was written by Red Hat and placed under
the <ulink URL="http://www.gnu.org/licenses/gpl.html">GNU General Public
License</ulink> (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 for more
information on how the GNU GPL may affect your use of these
tools. If you intend to port a proprietary application using the Cygwin
library, you may want the Cygwin proprietary-use license.
For more information about the proprietary-use license, please go to
@ -41,20 +52,33 @@ questions should be sent to the project mailing list
<sect1 id="brief-history"><title>A brief history of the Cygwin project</title>
<para>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.</para>
<para>The next task was to port the tools to Win NT/9x. We could have
<note>
<para>
A more complete historical look Cygwin is Geoffrey J. Noer's 1998 paper,
"Cygwin32: A Free Win32 Porting Layer for UNIX® Applications" which can be
found at the <ulink
URL="http://www.usenix.org/publications/library/proceedings/usenix-nt98/technical.html">
2nd USENIX Windows NT Symposium Online Proceedings</ulink>.
</para>
</note>
<para>
Cygwin began development in 1995 at Cygnus Solutions (now part of Red Hat
Software). The first thing done was to enhance the development tools
(<command>gcc</command>, <command>gdb</command>, <command>gas</command>,
etc.) so that they could generate and interpret Win32 native
object files.
The next task was to port the tools to Win NT/9x. 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
(the 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 Cygwin API. Once written, it
was possible to build working Win32 tools using UNIX-hosted
cross-compilers, linking against this library.</para>
missing from the Win32 API (<function>fork</function>,
<function>spawn</function>, <function>signals</function>,
<function>select</function>, <function>sockets</function>, etc.). We call this
new interface the Cygwin API. Once written, it was possible to build working
Win32 tools using UNIX-hosted cross-compilers, linking against this
library.</para>
<para>From this point, we pursued the goal of producing native tools
capable of rebuilding themselves under Windows 9x and NT (this is
@ -67,22 +91,19 @@ configuration changes, very few source-level changes had to be
made. Running bash with the development tools and user tools in place,
Windows 9x 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.</para>
17.1 release in October 1996.</para>
<para>
The entire Cygwin toolset was available as a monolithic install. In
April 2000, the project announced a
<ulink URL="http://www.cygwin.com/ml/cygwin/2000-04/msg00269.html">
New Cygwin Net Release</ulink> which provided the native Win32 program
<command>setup.exe</command> to install and upgrade each package
separately. Since then, the Cygwin DLL and <command>setup.exe</command>
have seen continuous development.
</para>
</sect1>
DOCTOOL-INSERT-ov-ex-unix
DOCTOOL-INSERT-ov-ex-win
<sect1 id="highlights"><title>Highlights of Cygwin Functionality</title>
DOCTOOL-INSERT-ov-hi-intro
DOCTOOL-INSERT-ov-hi-win9xnt
DOCTOOL-INSERT-ov-hi-perm
DOCTOOL-INSERT-ov-hi-files
DOCTOOL-INSERT-ov-hi-textvsbinary
DOCTOOL-INSERT-ov-hi-ansiclib
DOCTOOL-INSERT-ov-hi-process
DOCTOOL-INSERT-ov-hi-signals
DOCTOOL-INSERT-ov-hi-sockets
DOCTOOL-INSERT-ov-hi-select
</sect1>
DOCTOOL-INSERT-highlights
</chapter>

View File

@ -1,22 +1,85 @@
<sect1 id="ov-ex-unix"><title>Expectations for UNIX Programmers</title>
<sect1 id="ov-ex-win">
<title>Quick Start Guide for those more experienced with Windows</title>
<para>
If you are new to the world of UNIX, you may find it difficult to
understand at first. This guide is not meant to be comprehensive,
so we recommend that you use the many available Internet resources
to become acquainted with UNIX basics (search for "UNIX basics" or
"UNIX tutorial").
</para>
<para>
To install a basic Cygwin environment, run the
<command>setup.exe</command> program and click <literal>Next</literal>
at each page. The default settings are correct for most users. If you
want to know more about what each option means, see
<Xref Linkend="internet-setup">. Use <command>setup.exe</command>
any time you want to update or install a Cygwin package. If you are
installing Cygwin for a specific purpose, use it to install the tools
that you need. For example, if you want to compile C++ programs, you
need the <systemitem>gcc-g++</systemitem> package and probably a text
editor like <systemitem>nano</systemitem>. When running
<command>setup.exe</command>, clicking on categories and packages in the
package installation screen will provide you with the ability to control
what is installed or updated.
</para>
<para>
Another option is to install everything by clicking on the
<literal>Default</literal> field next to the <literal>All</literal>
category. However, be advised that this will download and install
several hundreds of megabytes of software to your computer. The best
plan is probably to click on individual categories and install either
entire categories or packages from the categories themselves.
</para>
<para>
Developers coming from a Windows background will find a set of tools capable of
writing console or GUI executables that rely on the Microsoft Win32 API. The
<command>dlltool</command> utility may be used to write Windows Dynamically
Linked Libraries (DLLs). The resource compiler <command>windres</command> is
also provided. All tools may be used from the Microsoft command prompt,
with full support for normal Windows pathnames.
</para>
</sect1>
<para>Developers coming from a UNIX background will find a set of utilities
<sect1 id="ov-ex-unix">
<title>Quick Start Guide for those more experienced with UNIX</title>
<para>
If you are an experienced UNIX user who misses a powerful command-line
environment, you will enjoy Cygwin. Note that there are some workarounds
that cause Cygwin to behave differently than most UNIX-like operating
systems; these are described in more detail in
<xref linkend="using-effectively">.
</para>
<para>
Any time you want to update or install a Cygwin package, use the
graphical <command>setup.exe</command> program. By default,
<command>setup.exe</command> only installs a minimal set of packages,
so look around and choose your favorite utilities on the package
selection screen. You may also search for specfic tools on the Cygwin
website's <ulink URL="http://cygwin.com/packages/">Setup Package
Search</ulink> For more information about what each option in
<command>setup.exe</command> means, see <xref linkend="internet-setup">.
</para>
<para>
Another option is to install everything by clicking on the
<literal>Default</literal> field next to the <literal>All</literal>
category. However, be advised that this will download and install
several hundreds of megabytes of software to your computer. The best
plan is probably to click on individual categories and install either
entire categories or packages from the categories themselves.
</para>
<para>
Developers coming from a UNIX background will find a set of utilities
they are already comfortable using, including a working UNIX shell. The
compiler tools are the standard GNU compilers most people will have previously
used under UNIX, only ported to the Windows host. Programmers wishing to port
UNIX software to Windows NT or 9x will find that the Cygwin library provides
an easy way to port many UNIX packages, with only minimal source code
changes.</para>
changes.
</para>
</sect1>
<sect1 id="ov-ex-win"><title>Expectations for Windows Programmers</title>
<para>Developers coming from a Windows background will find a set of tools capable
of writing console or GUI executables that rely on the Microsoft Win32 API.
The linker and dlltool utility may be used to write Windows Dynamically Linked
Libraries (DLLs). The resource compiler "windres" is also provided with the
native Windows GNUPro tools. All tools may be used from the Microsoft command
line prompt, with full support for normal Windows pathnames.</para>
</sect1>
<sect1 id="highlights"><title>Highlights of Cygwin Functionality</title>
<sect2 id="ov-hi-intro"><title>Introduction</title> <para>When a binary linked
against the library is executed, the Cygwin DLL is loaded into the
@ -318,3 +381,5 @@ thread to wake up. This case is now the same as the first one since
we know at least one descriptor is ready. So select returns, after
polling all of the file descriptors one last time.</para>
</sect2>
</sect1>

View File

@ -1,6 +1,7 @@
<chapter id="setup-net"><title>Setting Up Cygwin</title>
<sect1><title>Internet Setup</title>
<sect1 id="internet-setup">
<title>Internet Setup</title>
<para>To install the Cygwin net release, go to <ulink
URL="http://cygwin.com/">http://cygwin.com/</ulink> and click on <ulink
URL="http://cygwin.com/setup.exe">"Install Cygwin Now!"</ulink>. This will