[project @ 1998-03-12 10:08:00 by sof]
[ghc-hetmet.git] / docs / installing.vsgml
index ac68402..c0a3dad 100644 (file)
@@ -2,7 +2,7 @@
 <article>
 
 <title>Building and Installing the Glasgow Functional Programming Tools Suite
-Version 3.00
+Version 3.01
 <author>The GHC Team,
 Department of Computing Science,
 University of Glasgow,
@@ -317,8 +317,8 @@ Profiling might work, but it is untested.
 
 Thanks to the fine efforts of Tomasz Cholewo <htmlurl
 url="mailto:tjchol01@@mecca.spd.louisville.edu"
-name="<tjchol01@@mecca.spd.louisville.edu>">, GHC works registerised
-(no native code generator) under IRIX 6.2 and 6.3. Depends on having
+name="tjchol01@@mecca.spd.louisville.edu">, GHC works registerised (no
+native code generator) under IRIX 6.2 and 6.3. Depends on having
 specially tweaked version of gcc-2.7.2 around, which can be downloaded
 from <url url="http://mecca.spd.louisville.edu/~tjchol01/software/">.
 
@@ -641,8 +641,8 @@ Hello, world!
 Some simple-but-profitable tests are to compile and run the notorious
 @nfib@<ncdx/nfib/ program, using different numeric types.  Start with
 @nfib :: Int -> Int@, and then try @Integer@, @Float@, @Double@,
-@Rational@ and maybe @Complex Float@.  Code for this is distributed in
-@ghc/misc/examples/nfib/@ in a source distribution.
+@Rational@ and perhaps the overloaded version.  Code for this is
+distributed in @ghc/misc/examples/nfib/@ in a source distribution.
 
 For more information on how to ``drive'' GHC, either do @ghc -help@ or
 consult the User's Guide (distributed in several pre-compiled formats
@@ -738,37 +738,24 @@ Sadly, the @gr2ps@ script, used to convert ``parallelism profiles''
 to PostScript, is written in Bash (GNU's Bourne Again shell).
 This bug will be fixed (someday).
 
-<tag>Makeindex:</tag>
-<nidx>pre-supposed: makeindex</nidx>
-<nidx>makeindex, pre-supposed</nidx>
-You won't need this unless you are re-making our documents.  Makeindex
-normally comes with a TeX distribution, but if not, we can provide
-the latest and greatest.
-
-<tag>Tgrind:</tag>
-<nidx>pre-supposed: tgrind</nidx>
-<nidx>tgrind, pre-supposed</nidx>
-This is required only if you remake lots of our documents <em/and/
-you use the @-t tgrind@ option with @lit2latex@ (also literate
-programming), to do ``fancy'' typesetting of your code.  <em/Unlikely./
-
-<tag>Flex:</tag>
-<nidx>pre-supposed: flex</nidx>
+<tag>Flex:</tag> 
+<nidx>pre-supposed: flex</nidx> 
 <nidx>flex, pre-supposed</nidx>
-This is a quite-a-bit-better-than-Lex lexer.  Used in the
-literate-programming stuff.  You won't need it unless you're hacking
-on some of our more obscure stuff.  On our machines, the version in
-@/bin@ doesn't work; you need the GNU version.  Find out by saying
-@flex --version@ (our current version is 2.5.3, but maybe earlier ones
-will work).  If it doesn't know about the @--version@ flag, it ain't
-the right @flex@.
+
+This is a quite-a-bit-better-than-Lex lexer.  Used to build GHC's
+lexer, and a couple of utilities in @glafp-utils@.  On our machines,
+the version in @/bin@ doesn't work; you need the GNU version.  Find
+out by saying @flex --version@ (our current version is 2.5.3, but
+maybe earlier ones will work).  If it doesn't know about the
+@--version@ flag, it ain't the right @flex@.
 
 <tag>Yacc:</tag>
 <nidx>pre-supposed: non-worthless Yacc</nidx>
 <nidx>Yacc, pre-supposed</nidx>
+
 If you mess with the Haskell parser, you'll need a Yacc that can cope.
-The unbundled @/usr/lang/yacc@ is OK; the GNU @bison@ is OK;
-Berkeley yacc, @byacc@, is not OK.
+The unbundled @/usr/lang/yacc@ is OK; the GNU @bison@ is OK; Berkeley
+yacc, @byacc@, is not OK.
 
 <tag>@sed@</tag>
 <nidx>pre-supposed: sed</nidx>
@@ -780,20 +767,41 @@ by the build-configuration.  2.0.5 is ok. Others are probably ok too
 (assuming we don't create too elaborate configure scripts..)
 </descrip>
 
-Two @fptools@ projects are worth a quick note at this point, because
-they are useful for all the others:
+One @fptools@ projects is worth a quick note at this point, because
+it is useful for all the others:
 <itemize>
 <item> @glafp-utils@ contains several utilities which aren't
 particularly Glasgow-ish, but Occasionally Indispensable. Like
 @lndir@ for creating symbolic link trees.
-
-<item> @literate@ contains the Glasgow-built tools for generating
-documentation.  (The unoriginal idea is to be able to generate @latex@, @info@,
-and program code from a single source file.) To get anywhere you'll
-need at least @lit2pgm@, either from the @literate@ project, or
-because it's already installed on your system. 
 </itemize>
 
+<sect1> Tools for building the Documentation
+<label id="pre-supposed-doc-tools">
+<p>
+
+The following additional tools are required if you want to format the
+documentation that comes with the @fptools@ projects:
+
+<descrip>
+<tag>SGML-Tools:</tag>
+<nidx>pre-supposed: SGML-Tools</nidx>
+<nidx>SGML-Tools, pre-supposed</nidx>
+All our documentation is written in SGML, using the LinuxDoc DTD that
+comes with the SGML-Tools, which is the most shrink-wrapped SGML suite
+that we could find.  Should unpack and build painlessly on most
+architectures, and you can use it to generate HTML, Info, LaTeX (and
+hence DVI and Postscript), Groff, and plain text output from any
+LinuxDoc source file (including this manual).  Sources are available
+from <url name="The SGML-Tools Web Page"
+url="http://www.xs4all.nl/~cg/sgmltools/">.
+
+<tag>TeX:</tag>
+<nidx>pre-supposed: TeX</nidx>
+<nidx>TeX, pre-supposed</nidx>
+A decent TeX distribution is required if you want to produce printable
+documentation.  We recomment teTeX, which includes just about
+everything you need.
+</descrip>
 
 
 <sect>Building from source
@@ -839,9 +847,7 @@ All the other directories are individual <em/projects/ of the
 @fptools@ system --- for example, the Glasgow Haskell Compiler
 (@ghc@), the Happy parser generator (@happy@), the @nofib@ benchmark
 suite, and so on.  You can have zero or more of these.  Needless to
-say, some of them are needed to build others.  For example, you need
-@literate@ (or an installed copy of the tools) in order to format the
-GHC documentation.
+say, some of them are needed to build others.
 
 The important thing to remember is that even if you want only one
 project (@happy@, say), you must have a source tree whose root
@@ -1009,7 +1015,7 @@ change.  (The override occurs because the main boilerplate file,
 For example, @config.mk.in@ contains the definition:
 
 <tscreen><verb>
-  ProjectsToBuild = glafp-utils literate ghc hslibs
+  ProjectsToBuild = glafp-utils ghc
 </verb></tscreen>
 
 The accompanying comment explains that this is the list of enabled
@@ -1024,7 +1030,7 @@ add @green-card@, you can add this line to @build.mk@:
 or, if you prefer,
 
 <tscreen><verb>
-  ProjectsToBuild = glafp-utils literate ghc hslibs green-card
+  ProjectsToBuild = glafp-utils ghc green-card
 </verb></tscreen>
 
 (GNU @make@ allows existing definitions to have new text appended
@@ -1131,13 +1137,16 @@ extensively.
 
 In any directory you should be able to make the following:
 <descrip>
-<tag>@boot@:</tag> does the one-off preparation required to get ready
-for the real work.  Notably, it does @gmake depend@ in all directories
-that contain programs.  But @boot@ does more.  For example, you can't
-do @gmake depend@ in a directory of C program until you have converted
-the literate @.lh@ header files into standard @.h@ header files.
+
+<tag>@boot@:</tag> 
+
+does the one-off preparation required to get ready for the real work.
+Notably, it does @gmake depend@ in all directories that contain
+programs.  But @boot@ does more.  For example, you can't do @gmake
+depend@ in a directory of C program until you have converted the
+literate @.lh@ header files into standard @.h@ header files.
 Similarly, you can't convert a literate file to illiterate form until
-you have built the @literate@ tools.  @boot@ takes care of these
+you have built the @unlit@ tool.  @boot@ takes care of these
 inter-directory dependencies.
 
 You should say @gmake boot@ right after configuring your build tree,
@@ -1201,6 +1210,32 @@ linked buid tree to make this target.
 Most @Makefiles@ have targets other than these.  You can find
 this out by looking in the @Makefile@ itself.
 
+<sect1>Fast Making
+<ncdx/fastmake/
+<nidx/dependencies, omitting/
+<nidx/FAST, makefile variable/
+<p>
+
+Sometimes the dependencies get in the way: if you've made a small
+change to one file, and you're absolutely sure that it won't affect
+anything else, but you know that @make@ is going to rebuid everything
+anyway, the following hack may be useful:
+
+<tscreen> <verb>
+gmake FAST=YES
+</verb> </tscreen>
+
+This tells the make system to ignore dependencies and just build what
+you tell it to.  In other words, it's equivalent to temporarily
+removing the @.depend@ file in the current directory (where
+@mkdependHS@ and friends store their dependency information).
+
+A bit of history: GHC used to come with a @fastmake@ script that did
+the above job, but GNU make provides the features we need to do it
+without resorting to a script.  Also, we've found that fastmaking is
+less useful since the advent of GHC's recompilation checker (see the
+User's Guide section on "Separate Compilation").
+
 <sect>The @Makefile@ architecture
 <nidx/makefile architecture/
 <p>