PREFACE
^^^^^^^

This file documents how to build the GNO documentation.

Probably one of the first questions you may ask is "Why is the document
source in LaTeX?".  It comes down to this:

	- I wanted to provide a good selection of file formats.
	- I wanted the results to look as professional as possible
	  in all provided file formats.
	- I wanted all file formats to originate from the same source.

There was some question as to which language should be used for the
original source.  LaTeX was chosen (rather arbitrarily) as the source
language because it, IMHO, gives the optimal results for the three 
points above.

	Devin Reade
	December 1997.

$Id: README,v 1.3 1998/02/19 03:03:49 gdr-ftp Exp $


WHAT THE FILES ARE
^^^^^^^^^^^^^^^^^^

	Makefile	Configuration file for use with dmake.
	README		This file.
	faqindex.html	This shows links to the html and text versions
			of the GNO FAQ.
	getdate		A perl script which extracts the date or version
			from an RCS "Id" tag, and prints it in a more
			"normal" fashion.  Usage: "getdate <infile >outfile"
	gno.bib		The bibliography used in the Overview.  This
			is processed using BibTeX.
	gsh.tex		This is the LaTeX source to the "GNO Shell Reference
			Manual".
	head.html	This is information common to the beginning of most
			of the other html files.
	index.html	This is the top-level page for the html version.
			It contains links to the three books, the generated
			man pages, the FAQ, et al.
	intro.tex	This is the LaTeX source to the "Overview and
			Installation Manual".
	kern.tex	This is the LaTeX source to the "Kernel Reference
			Manual".
	manindex.html	This is an index of the various manual page
			chapters.
	mkhtmlman	This is a custom script which drives the man2html
			program.  It basically searches for the man pages
			in the GNO search tree to convert, and adds in some
			custom info after the conversion has been done.
	mkmandex	This is a custom script which generates the html
			index pages for each "man page" chapter.
	newer.c		A source file which compiles to a program that
			compares the modification date of two files.  Used
			by mkhtmlman to avoid unnecessary processing.
	oldrefs.html	This is an index of old (v2.0.4) documenatation.
	refs.html	This is an index of the current reference manuals.
	related.html	This is an index of GNO-related web pages.
	tail.html	This is information common to the end of most of
			the other html files.
	unaval.html	A generic web page that says "the page you requested
			is not ready yet".

WHAT YOU NEED
^^^^^^^^^^^^^

There are quite a few tools that you will need to build the GNO
documentation.  They are:

	dmake
		This is not common on too many UNIX systems, but I needed
		for certain contructs that gmake as too dumb to handle.
		It was written by Dennis Vadura, 
		<dvadura@watdragon.uwaterloo.ca>, and is available from
			ftp://plg.uwaterloo.ca/pub/dmake
			http://dmake.wticorp.com
	perl5
		Perl5 is needed by some of the translation utilities.
	LaTeX2e
		LaTeX is responsible for creating the DVI and Postscript
		versions of the documentation.
	bibtex, makeidx
		These two utilities are required for making the bibliography
		and index, respectively.  They are likely part of your
		LaTeX distribution.
	latex2html
		This utility translates the man pages from nroff source
		into html.  It is available via the CTAN site nearest you.
		Check in the directory tex-archive/support/latex2html.
		Three main CTAN sites are:
			United States:		ftp.shsu.edu
			United Kingdom:		ftp.tex.ac.uk
			Germany:		ftp.dante.de
	hthtml
		This is a package that provides a cleaner interface
		for displaying URLs either as footnotes (for printed
		manuals) or as links (for online manuals).  It is
		available from
		http://www.cs.tu-bs.de/~krinke/hthtml/index.html
	man2html
		This is a program which converts preformatted nroff 
		source to html.  It is available at
			http://www.oac.uci.edu/indiv/ehood/man2html.html

WHERE TO BUILD IT
^^^^^^^^^^^^^^^^^

First of all, we cannot build the documentation using GNO itself, as 
GNO stands today.  We probably won't ever be able to, and if we are, 
we probably won't want to build it under GNO.  The reason is simple;
I normally build the docs using a 120MHz 686 with 80Meg of memory
(running Linux).  Doing so takes many minutes, and most of the memory.
Building it on a a 16Meg Linux machine absolutely thrashes the machine.

That having been said, you should be able to rebuild the documentation
on any UNIX box, provided you install (or have installed) the appropriate
utilities.

HOW TO BUILD IT
^^^^^^^^^^^^^^^

The documentation as it stands now will probably only build on my system.
However, should I ever stop maintaining this documentation, it should
be fairly simple to reconfigure it to run elsewhere.

Most of the site-specific items are in the Makefile.  This includes
the maintainer name and address, the basenames of the URLs used, 
and so forth.  If the DRAFT macro is set to 'true' then many url links
in the html versions will resolve to local files; this is used for testing.

Some other dependancies are as follows.  Unless ftp.gno.org is no longer the
primary GNO site, the following should not need to be changed:

	index.html:
		There are some minor assumptions about the directory
		structure and file names on the GNO html and ftp servers.

	intro.tex:
		There are some explicit references to the ftp.gno.org
		in this document.  These should not be changed unless
		that site is no longer used.

	mkhtmlman:
		This script is heavily dependant on the structure of
		the GNO source tree, and the directory from which it
		is invoked.  On the other hand, there shouldn't be any
		need to change this.

Once the above dependancies have been addressed, you can use dmake(1)
to build the sources.  The primary targets are:

	dvi:	Build the DVI (device independant) files.
	ps:	Build the Postscript files.  Implies the dvi target.
	h:	Build the html version of the *.tex files.  Because the
		bibliography gets built by the dvi target, you should have
		made the dvi target at least once.  If your dvi target is
		out-of-date you will only get a warning.  If the bibliography
		generated from gno.bib does not exist at all, then this
		target will fail.
	man:	Builds the html versions of the manual pages.
	all:	Build all of the above targets.
	upload:	Builds *.gz and *.Z files which are then used when I do
		uploads to the http/ftp server.
	clean:	Removes all temporary files.
	clobber: Removes all generated files and directories.  Implies
		'clean'.
