[project @ 1996-07-25 20:43:49 by partain]
[ghc-hetmet.git] / ghc / docs / install_guide / installing.lit
index 69e4427..f184f52 100644 (file)
@@ -1,18 +1,18 @@
 %
 %
-% $Header: /srv/cvs/cvs.haskell.org/fptools/ghc/docs/install_guide/Attic/installing.lit,v 1.3 1996/06/30 16:45:00 partain Exp $
+% $Header: /srv/cvs/cvs.haskell.org/fptools/ghc/docs/install_guide/Attic/installing.lit,v 1.4 1996/07/25 20:47:34 partain Exp $
 %
 \begin{onlystandalone}
 \documentstyle[11pt,literate]{article}
 \begin{document}
 \title{Installing the Glasgow Functional Programming Tools\\
 %
 \begin{onlystandalone}
 \documentstyle[11pt,literate]{article}
 \begin{document}
 \title{Installing the Glasgow Functional Programming Tools\\
-Version~0.26}
-\author{The AQUA Team (scribe: Will Partain)\\
+Version~2.01}
+\author{The GHC Team\\
 Department of Computing Science\\
 University of Glasgow\\
 Glasgow, Scotland\\
 G12 8QQ\\
 \\
 Department of Computing Science\\
 University of Glasgow\\
 Glasgow, Scotland\\
 G12 8QQ\\
 \\
-Email: glasgow-haskell-\{users,bugs\}-request\@dcs.glasgow.ac.uk}
+Email: glasgow-haskell-\{users,bugs\}-request\@dcs.gla.ac.uk}
 \maketitle
 \begin{rawlatex}
 \tableofcontents
 \maketitle
 \begin{rawlatex}
 \tableofcontents
@@ -31,11 +31,6 @@ Glasgow functional-programming tools (the `Glasgow tools'), most often
 just the Glasgow Haskell compiler (GHC).  This document will guide you
 through the installation process, and point out the known pitfalls.
 
 just the Glasgow Haskell compiler (GHC).  This document will guide you
 through the installation process, and point out the known pitfalls.
 
-Note: As of version~0.26, this document describes how to build {\em
-all} of the Glasgow tools, not just the Haskell compiler.  The
-\tr{configure} script, etc., has changed to cope with this wider
-mandate; something to bear in mind...
-
 %************************************************************************
 %*                                                                     *
 \subsection[install-strategy]{What to install?  Starting from what?}
 %************************************************************************
 %*                                                                     *
 \subsection[install-strategy]{What to install?  Starting from what?}
@@ -73,6 +68,10 @@ intermediate C (\tr{.hc}) files that we provide.
 Building GHC on an unsupported platform falls into this category.
 Please see \sectionref{booting-from-C}.
 
 Building GHC on an unsupported platform falls into this category.
 Please see \sectionref{booting-from-C}.
 
+NB: For GHC~2.01, bootstrapping from \tr{.hc} files means you will get
+an all-2.01 system---possibly unduly slow.  Building with GHC~0.29
+will get you a faster compiler...
+
 Once you have built GHC, you can build the other Glasgow tools with
 it.
 
 Once you have built GHC, you can build the other Glasgow tools with
 it.
 
@@ -82,7 +81,7 @@ recommended, but see \sectionref{building-with-HBC}.
 
 %************************************************************************
 %*                                                                     *
 
 %************************************************************************
 %*                                                                     *
-\subsection[port-info]{What machines the Glasgow tools, version~0.26, run on}
+\subsection[port-info]{What machines the Glasgow tools, version~2.01, run on}
 \index{ports, GHC}
 \index{GHC ports}
 \index{supported platforms}
 \index{ports, GHC}
 \index{GHC ports}
 \index{supported platforms}
@@ -113,19 +112,16 @@ supports the underlying BSDisms.
 The GHC hierarchy of Porting Goodness: (a)~Best is a native-code
 generator; (b)~next best is a ``registerised''
 port; (c)~the bare minimum is an ``unregisterised'' port.
 The GHC hierarchy of Porting Goodness: (a)~Best is a native-code
 generator; (b)~next best is a ``registerised''
 port; (c)~the bare minimum is an ``unregisterised'' port.
-``Unregisterised'' Haskell programs are much bigger and slower,
-but the port is much easier to get going.
-
-With GHC~0.26, we add ``registerised'' support for some HP-PA, iX86,
-and MIPS platforms.
+``Unregisterised'' is so terrible that we won't say more about it.
 
 
-We use Sun4s running SunOS~4.1.3 and DEC~Alphas running OSF/1~V2.0,
-so those are the ``fully-supported'' platforms, unsurprisingly.  Both
-have native-code generators, for quicker compilations.
+We use Sun4s running SunOS~4.1.3 and Solaris 2.5, and DEC~Alphas
+running OSF/1~V2.0, so those are the ``fully-supported'' platforms,
+unsurprisingly.  Both have native-code generators, for quicker
+compilations.  The native-code generator for iX86 platforms (e.g.,
+Linux ELF) is {\em nearly} working; but is not turned on by default.
 
 
-Here's everything that's known about GHC ports, as of 0.26. We
-identify platforms by their ``canonical GNU-style'' names.  We
-identify
+Here's everything that's known about GHC ports, as of 2.01. We
+identify platforms by their ``canonical GNU-style'' names.
 
 Note that some ports are fussy about which GCC version you use; or
 require GAS; or ...
 
 Note that some ports are fussy about which GCC version you use; or
 require GAS; or ...
@@ -153,33 +149,38 @@ libraries (see \sectionref{Pre-supposed} for details).
 %-------------------------------------------------------------------
 \item[HP-PA box running HP/UX 9.x:]
 \index{hppa1.1-hp-hpux: registerised port}
 %-------------------------------------------------------------------
 \item[HP-PA box running HP/UX 9.x:]
 \index{hppa1.1-hp-hpux: registerised port}
-GHC~0.26 works registerised.  No native-code generator.
+Works registerised.  No native-code generator.
 For GCC, you're best off with one of the Utah releases of
 GCC~2.6.3 (`u3' or later), from \tr{jaguar.cs.utah.edu}.
 For GCC, you're best off with one of the Utah releases of
 GCC~2.6.3 (`u3' or later), from \tr{jaguar.cs.utah.edu}.
-We don't know if straight GCC 2.7.x works or not.
+We think a straight GCC 2.7.x works, too.
 
 Concurrent/Parallel Haskell probably don't work (yet).
 \index{hppa1.1-hp-hpux: concurrent---no}
 \index{hppa1.1-hp-hpux: parallel---no}
 
 %-------------------------------------------------------------------
 
 Concurrent/Parallel Haskell probably don't work (yet).
 \index{hppa1.1-hp-hpux: concurrent---no}
 \index{hppa1.1-hp-hpux: parallel---no}
 
 %-------------------------------------------------------------------
-\item[\tr{i386-*-linuxaout} (PCs running Linux---\tr{a.out} format):]
-\index{i386-*-linuxaout: registerised port}
-GHC~0.26 works registerised (no native-code generator).
+\item[\tr{i386-*-linux} (PCs running Linux---ELF format):]
+\index{i386-*-linux: registerised port}
+GHC~2.01 works registerised.
 You {\em must} have GCC 2.7.x or later.
 You {\em must} have GCC 2.7.x or later.
+The iX86 native-code generator is {\em nearly} there, but it
+isn't turned on by default.
 
 
-Concurrent/Parallel Haskell probably don't work (yet).
-\index{i386-*-linuxaout: concurrent---no}
-\index{i386-*-linuxaout: parallel---no}
-\index{i386-*-linuxaout: profiling---maybe}
-Profiling might work, but it is untested.
+Profiling works, and Concurrent Haskell works.
+\index{i386-*-linux: profiling---yes}
+\index{i386-*-linux: concurrent---yes}
+Parallel Haskell probably works.
+\index{i386-*-linux: parallel---maybe}
+
+On old Linux a.out systems: should be the same.
+\index{i386-*-linuxaout: registerised port}
 
 %-------------------------------------------------------------------
 \item[\tr{mips-sgi-irix5}:]
 \index{mips-sgi-irix5: registerised port}
 
 %-------------------------------------------------------------------
 \item[\tr{mips-sgi-irix5}:]
 \index{mips-sgi-irix5: registerised port}
-GHC~0.26 works registerised (no native-code generator).
+GHC~2.01 works registerised (no native-code generator).
 I suspect any GCC~2.6.x (or later) is OK.  The GCC that I used
 I suspect any GCC~2.6.x (or later) is OK.  The GCC that I used
-was built with \tr{--with-gnu-as}.
+was built with \tr{--with-gnu-as}; turns out that is important!
 
 Concurrent/Parallel Haskell probably don't work (yet).
 Profiling might work, but it is untested.
 
 Concurrent/Parallel Haskell probably don't work (yet).
 Profiling might work, but it is untested.
@@ -211,7 +212,8 @@ Concurrent/Parallel Haskell probably won't work (yet).
 %-------------------------------------------------------------------
 \item[\tr{m68k-sun-sunos4} (Sun3):]
 \index{m68k-sun-sunos4: registerised port}
 %-------------------------------------------------------------------
 \item[\tr{m68k-sun-sunos4} (Sun3):]
 \index{m68k-sun-sunos4: registerised port}
-GHC~0.26 works registerised.  No native-code generator.
+GHC~2.01 hasn't been tried on a Sun3.  GHC~0.26 worked registerised.
+No native-code generator.
 
 Concurrent/Parallel Haskell probably don't work (yet).
 \index{m68k-sun-sunos4: concurrent---no}
 
 Concurrent/Parallel Haskell probably don't work (yet).
 \index{m68k-sun-sunos4: concurrent---no}
@@ -254,6 +256,7 @@ All of the above are {\em estimates} of disk-space needs.
 Use an appropriate machine, compilers, and things.
 
 SPARC boxes and DEC Alphas running OSF/1 are fully supported.
 Use an appropriate machine, compilers, and things.
 
 SPARC boxes and DEC Alphas running OSF/1 are fully supported.
+Linux, MIPS, and HP boxes are in pretty good shape.
 \Sectionref{port-info} gives the full run-down on ports or lack
 thereof.
 
 \Sectionref{port-info} gives the full run-down on ports or lack
 thereof.
 
@@ -266,11 +269,11 @@ probably need a reasonably up-to-date GCC (GNU C compiler),
 too---\sectionref{port-info} lists any specific requirements in this
 regard.
 
 too---\sectionref{port-info} lists any specific requirements in this
 regard.
 
-If you are going to be making documents [unlikely], you'll need
-\tr{makeindex} as well, and maybe \tr{tgrind} [unlikely].  If you edit
-the one or two \tr{flex} files in GHC, you'll need \tr{flex}, too
-[unlikely].
-
+% If you are going to be making documents [unlikely], you'll need
+% \tr{makeindex} as well, and maybe \tr{tgrind} [unlikely].  If you edit
+% the one or two \tr{flex} files in GHC, you'll need \tr{flex}, too
+% [unlikely].
+% 
 If you end up yacc'ing the Haskell parser [unlikely], Sun's standard
 \tr{/bin/yacc} won't cut it.  Either the unbundled \tr{/usr/lang/yacc}
 or \tr{bison} will do fine.  Berkeley yacc (\tr{byacc}) won't do.
 If you end up yacc'ing the Haskell parser [unlikely], Sun's standard
 \tr{/bin/yacc} won't cut it.  Either the unbundled \tr{/usr/lang/yacc}
 or \tr{bison} will do fine.  Berkeley yacc (\tr{byacc}) won't do.
@@ -285,7 +288,7 @@ For GHC, please see the bug-reporting section of the User's guide
 (separate document), to maximise the usefulness of your report.
 
 If in doubt, please send a message to
 (separate document), to maximise the usefulness of your report.
 
 If in doubt, please send a message to
-\tr{glasgow-haskell-bugs@dcs.glasgow.ac.uk}.
+\tr{glasgow-haskell-bugs@dcs.gla.ac.uk}.
 \end{enumerate}
 
 %************************************************************************
 \end{enumerate}
 
 %************************************************************************
@@ -318,14 +321,14 @@ one bundle per \tr{.tar.gz} file.
 
 A basic GHC ``bundle'' gives you the compiler and the standard,
 sequential libraries.  The files are called
 
 A basic GHC ``bundle'' gives you the compiler and the standard,
 sequential libraries.  The files are called
-\tr{ghc-0.26-<platform>.tar.gz}, where \tr{<platform>} is one of:
-alpha-dec-osf2, hppa1.1-hp-hpux9, i386-unknown-linuxaout,
-% i386-unknown-solaris2,
+\tr{ghc-2.01-<platform>.tar.gz}, where \tr{<platform>} is one of:
+alpha-dec-osf2, hppa1.1-hp-hpux9, i386-unknown-linux,
+i386-unknown-solaris2, i386-unknown-freebsd,
 m68k-sun-sunos4, mips-sgi-irix5,
 sparc-sun-sunos4, sparc-sun-solaris2.
 
 There are plenty of ``non-basic'' GHC bundles.  The files for them are
 m68k-sun-sunos4, mips-sgi-irix5,
 sparc-sun-sunos4, sparc-sun-solaris2.
 
 There are plenty of ``non-basic'' GHC bundles.  The files for them are
-called \tr{ghc-0.26-<bundle>-<platform>.tar.gz}, where the
+called \tr{ghc-2.01-<bundle>-<platform>.tar.gz}, where the
 \tr{<platform>} is as above, and \tr{<bundle>} is one of these:
 \begin{description}
 \item[\tr{prof}:]  Profiling with cost-centres.  You probably want this.
 \tr{<platform>} is as above, and \tr{<bundle>} is one of these:
 \begin{description}
 \item[\tr{prof}:]  Profiling with cost-centres.  You probably want this.
@@ -353,9 +356,9 @@ unpack them all together in the same place, thusly:
 
 \begin{verbatim}
 cd /put/them/in/here
 
 \begin{verbatim}
 cd /put/them/in/here
-gunzip < ghc-0.26-sparc-sun-sunos4.tar.gz      | tar xf -
-gunzip < ghc-0.26-prof-sparc-sun-sunos4.tar.gz | tar xf -
-gunzip < ghc-0.26-conc-sparc-sun-sunos4.tar.gz | tar xf -
+gunzip < ghc-2.01-sparc-sun-sunos4.tar.gz      | tar xf -
+gunzip < ghc-2.01-prof-sparc-sun-sunos4.tar.gz | tar xf -
+gunzip < ghc-2.01-conc-sparc-sun-sunos4.tar.gz | tar xf -
 \end{verbatim}
 
 If you unpacked the files in a way that does {\em not} preserve
 \end{verbatim}
 
 If you unpacked the files in a way that does {\em not} preserve
@@ -374,7 +377,7 @@ Here's what to do with the stuff in each directory, once unpacked.
 \begin{description}
 %---------------------------------------------------------------------
 \item[\tr{bin/<platform>} (sometimes just \tr{bin/}):]
 \begin{description}
 %---------------------------------------------------------------------
 \item[\tr{bin/<platform>} (sometimes just \tr{bin/}):]
-Copy these executables so that they will be in users' PATHs.
+Copy (or link to) these executables so that they will be in users' PATHs.
 
 %---------------------------------------------------------------------
 \item[\tr{lib}:]
 
 %---------------------------------------------------------------------
 \item[\tr{lib}:]
@@ -394,7 +397,6 @@ Things you need to fiddle so the tools will spring to life:
 bin directory.
 
 \item
 bin directory.
 
 \item
-CHOICE \#1 (BETTER):
 Edit your \tr{ghc}, \tr{mkdependHS}, and \tr{hstags} scripts:
 (a)~Create a correct \tr{#!...perl} first line in each one. (Ask a
 Unix-friendly person to help you, if you don't know what a
 Edit your \tr{ghc}, \tr{mkdependHS}, and \tr{hstags} scripts:
 (a)~Create a correct \tr{#!...perl} first line in each one. (Ask a
 Unix-friendly person to help you, if you don't know what a
@@ -409,17 +411,22 @@ So, if your ``lib'' files are now in \tr{/home/myself/lib/ghc/...},
 then you should set \tr{GLASGOW_HASKELL_ROOT} to \tr{/home/myself}.
 
 \item
 then you should set \tr{GLASGOW_HASKELL_ROOT} to \tr{/home/myself}.
 
 \item
-CHOICE \#2:
-Set your \tr{GLASGOW_HASKELL_ROOT} environment variable, and
-don't edit the \tr{ghc}, \tr{mkdependHS}, and \tr{hstags} scripts
-at all.
-
-It's better to edit the scripts; that way, it's once for all.
+Actually setting the \tr{GLASGOW_HASKELL_ROOT} environment variable
+is a {\em bad} idea, mostly because it precludes having several
+GHC versions around at the same time.
+
+% \item
+% CHOICE \#2:
+% Set your \tr{GLASGOW_HASKELL_ROOT} environment variable, and
+% don't edit the \tr{ghc}, \tr{mkdependHS}, and \tr{hstags} scripts
+% at all.
+%
+% It's better to edit the scripts; that way, it's once for all.
 
 \item
 You {\em may} need to re-\tr{ranlib} your libraries (on Sun4s).
 \begin{verbatim}
 
 \item
 You {\em may} need to re-\tr{ranlib} your libraries (on Sun4s).
 \begin{verbatim}
-% cd <wherever-the-lib-files-are-now>/ghc/0.26/sparc-sun-sunos4
+% cd <wherever-the-lib-files-are-now>/ghc/2.01/sparc-sun-sunos4
 % foreach i ( `find . -name '*.a' -print` ) # or other-shell equiv...
 ?    ranlib $i
 ?    # or, on some machines: ar s $i
 % foreach i ( `find . -name '*.a' -print` ) # or other-shell equiv...
 ?    ranlib $i
 ?    # or, on some machines: ar s $i
@@ -502,8 +509,7 @@ things you want to have anyway.  Please see \sectionref{Pre-supposed}.
 
 \item
 Be sure you have a suitable Haskell compiler, or else the intermediate
 
 \item
 Be sure you have a suitable Haskell compiler, or else the intermediate
-C (\tr{.hc}) files.  In some cases, you might want an alternative set
-of interface (\tr{.hi}) files (quicker than generating a fresh set).
+C (\tr{.hc}) files..
 \Sectionref{install-strategy} lists the various strategies you might
 adopt.
 
 \Sectionref{install-strategy} lists the various strategies you might
 adopt.
 
@@ -524,7 +530,12 @@ find . -type f \! -name \*.hi \! -name \*.hc \! -name \*.jm -print \
 Run the \tr{configure} script.  It is a shell script that looks around
 to find out things about your system.  You can see the \tr{configure}
 options by passing it a \tr{--help} flag, or by reading
 Run the \tr{configure} script.  It is a shell script that looks around
 to find out things about your system.  You can see the \tr{configure}
 options by passing it a \tr{--help} flag, or by reading
-\sectionref{Configuring}.
+\sectionref{Configuring}.  A typical invocation might be:
+\begin{verbatim}
+% cd <the-very-top-dir>
+% ./configure --prefix=/usr/local/fp \
+             --with-hc=ghc-0.29 --with-mkdependHS=mkdependHS-0.29
+\end{verbatim}
 
 \item
 Once configured, build the basic support utilities and make your
 
 \item
 Once configured, build the basic support utilities and make your
@@ -606,21 +617,20 @@ Because the compiler heart of Glorious Glasgow Haskell is written in
 Haskell, you have to use some ``bootstrapping'' mechanism.
 
 Your best choice, if available, is to use a binary distribution for
 Haskell, you have to use some ``bootstrapping'' mechanism.
 
 Your best choice, if available, is to use a binary distribution for
-your platform; i.e., compile GHC~0.26 with a GHC~0.26 that we have
+your platform; e.g., compile GHC~2.01 with a GHC~0.29 that we have
 provided.  Please see \sectionref{installing-bin-distrib} for how to
 install a binary distribution.
 
 provided.  Please see \sectionref{installing-bin-distrib} for how to
 install a binary distribution.
 
-Your remaining choice is to use the intermediate C (\tr{.hc}) files that we
-supply.  This is the {\em only} choice for anyone trying to port to
-a new or weakly-supported system.
+Your remaining choice is to use the intermediate C (\tr{.hc}) files
+that we supply.  This is the {\em only} choice for anyone trying to
+port to a new or weakly-supported system.
 
 The main drawback of the supplied-\tr{.hc} approach is that you will
 have a lot of very bulky intermediate files on your disk for a while.
 
 
 The main drawback of the supplied-\tr{.hc} approach is that you will
 have a lot of very bulky intermediate files on your disk for a while.
 
-One obscure note: if you're going to build GHC to have a native-code
-generator, you're well advised to get a suitable set of interface
-files (to save making them yourself).  Please see \sectionref{Compiler_reconfig}
-if you plan to end up with a native-code generator.
+(With GHC~2.01, another drawback is that the \tr{.hc} files will give
+you a 2.01-built-with-2.01---normally a good thing---but, in this case,
+probably slower than a 2.01-built-with-0.29.)
 
 % If you have to boot from C (\tr{.hc}) files, you should follow the
 % directions in \sectionref{booting-from-C}.
 
 % If you have to boot from C (\tr{.hc}) files, you should follow the
 % directions in \sectionref{booting-from-C}.
@@ -680,6 +690,8 @@ Do the main GHC build, just as \tr{STARTUP} suggests:
 \begin{verbatim}
 % cd ghc
 % make all >& make.log
 \begin{verbatim}
 % cd ghc
 % make all >& make.log
+% cd ../hslibs
+% make all >& make.log
 \end{verbatim}
 If this fails or something seems suspicious, check the ``known
 pitfalls'' (\sectionref{build-pitfalls}).  If you can't figure out how
 \end{verbatim}
 If this fails or something seems suspicious, check the ``known
 pitfalls'' (\sectionref{build-pitfalls}).  If you can't figure out how
@@ -707,14 +719,14 @@ main = putStr "Hello, world!\n"
 First, give yourself a convenient way to execute the driver script
 \tr{ghc/driver/ghc}, perhaps something like...
 \begin{verbatim}
 First, give yourself a convenient way to execute the driver script
 \tr{ghc/driver/ghc}, perhaps something like...
 \begin{verbatim}
-% ln -s /local/src/ghc-0.26/ghc/driver/ghc ~/bin/sun4/ghc
+% ln -s /local/src/ghc-2.01/ghc/driver/ghc ~/bin/alpha/ghc
 % rehash
 \end{verbatim}
 
 Compile the program, using the \tr{-v} (verbose) flag to verify that
 libraries, etc., are being found properly:
 \begin{verbatim}
 % rehash
 \end{verbatim}
 
 Compile the program, using the \tr{-v} (verbose) flag to verify that
 libraries, etc., are being found properly:
 \begin{verbatim}
-% ghc -v -o hello -fhaskell-1.3 Main.hs
+% ghc -v -o hello Main.hs
 \end{verbatim}
 
 Now run it:
 \end{verbatim}
 
 Now run it:
@@ -753,6 +765,8 @@ Assuming that everything's OK so far, all you need to do is:
 \begin{verbatim}
 % cd <very-top>/ghc
 % make install
 \begin{verbatim}
 % cd <very-top>/ghc
 % make install
+% cd <very-top>/hslibs
+% make install
 \end{verbatim}
 
 If you're a little dubious (as I usually am), you can always do a
 \end{verbatim}
 
 If you're a little dubious (as I usually am), you can always do a
@@ -760,6 +774,8 @@ If you're a little dubious (as I usually am), you can always do a
 \begin{verbatim}
 % cd <very-top>/ghc
 % make -n install >& temp-log-file-to-look-at
 \begin{verbatim}
 % cd <very-top>/ghc
 % make -n install >& temp-log-file-to-look-at
+% cd <very-top>/hslibs
+% make -n install >& temp-log-file-to-look-at
 \end{verbatim}
 
 In both cases, if something breaks, it's a {\em bug}.
 \end{verbatim}
 
 In both cases, if something breaks, it's a {\em bug}.
@@ -774,7 +790,7 @@ In both cases, if something breaks, it's a {\em bug}.
 %*                                                                     *
 %************************************************************************
 
 %*                                                                     *
 %************************************************************************
 
-Because our documentation is in DVI/Info formats, and because there is
+Because our documentation is in DVI/Info/HTML formats, and because there is
 no standard practice about how such documents are ``installed,'' we
 haven't tried to automate this (at least not enough that we promise it
 works).
 no standard practice about how such documents are ``installed,'' we
 haven't tried to automate this (at least not enough that we promise it
 works).
@@ -851,10 +867,13 @@ of GHC first.
 If you want to execute out of the source tree but would like to clear
 off lots and lots of stuff, you can do:
 \begin{verbatim}
 If you want to execute out of the source tree but would like to clear
 off lots and lots of stuff, you can do:
 \begin{verbatim}
-% cd ghc/lib   # scrub library C and object files
-% rm */*.hc
+% cd ghc/lib   # scrub library .hc and object files
+% rm */*.hc */*.*_hc
 % find . -name '*.o' -print | xargs /bin/rm
 
 % find . -name '*.o' -print | xargs /bin/rm
 
+% cd hslibs/   # ditto for syslibs
+% rm */src/*.hc */src/*.*_hc
+
 % cd ghc/compiler   # scrub compiler object files
 % rm */*.o
 % rm */*.hc        # if you have been keeping them around
 % cd ghc/compiler   # scrub compiler object files
 % rm */*.o
 % rm */*.hc        # if you have been keeping them around
@@ -879,17 +898,17 @@ because no binaries have been provided, or because the machine
 is not ``fully supported.''
 
 To boot from C (\tr{.hc}) files, you need the regular source distribution
 is not ``fully supported.''
 
 To boot from C (\tr{.hc}) files, you need the regular source distribution
-(\tr{ghc-0.26-src.tar.gz}) and also some extra files in
-\tr{ghc-0.26-hc-files.tar.gz}.  DON'T FORGET any extra \tr{.hc}
+(\tr{ghc-2.01-src.tar.gz}) and also some extra files in
+\tr{ghc-2.01-hc-files.tar.gz}.  DON'T FORGET any extra \tr{.hc}
 files for profiling, concurrent, parallel, ...
 
 Whatever you want to build, just unpack all the files ``together'':
 \begin{verbatim}
 % cd <wherever>
 files for profiling, concurrent, parallel, ...
 
 Whatever you want to build, just unpack all the files ``together'':
 \begin{verbatim}
 % cd <wherever>
-% gunzip -c ghc-0.26-src.tar.gz      | tar xf -
-% gunzip -c ghc-0.26-hc-files.tar.gz | tar xf -             # basic...
-% gunzip -c ghc-0.26-prof-hc-files.tar.gz | tar xf - # profiling...
-% gunzip -c ghc-0.26-conc-hc-files.tar.gz | tar xf - # concurrent...
+% gunzip -c ghc-2.01-src.tar.gz      | tar xf -
+% gunzip -c ghc-2.01-hc-files.tar.gz | tar xf -             # basic...
+% gunzip -c ghc-2.01-prof-hc-files.tar.gz | tar xf - # profiling...
+% gunzip -c ghc-2.01-conc-hc-files.tar.gz | tar xf - # concurrent...
 ... etc ...
 \end{verbatim}
 
 ... etc ...
 \end{verbatim}
 
@@ -1028,6 +1047,9 @@ especially, on a known machine.  Also, it can take a VERY long time
 (esp. on oldish machines), so it's good to run overnight, on a quiet
 machine, nice'd, etc., etc.
 
 (esp. on oldish machines), so it's good to run overnight, on a quiet
 machine, nice'd, etc., etc.
 
+You will probably continue by building the system libraries:
+\tr{cd hslibs; make all}...
+
 When it's all built, test your alleged GHC system, as suggested in
 \sectionref{GHC_test}.
 
 When it's all built, test your alleged GHC system, as suggested in
 \sectionref{GHC_test}.
 
@@ -1435,30 +1457,19 @@ an initial boot are: (a)~to get a native-code generator, or (b)~if you
 are going to hack on GHC.
 
 The reason you must rebuild to get a native-code generator: The
 are going to hack on GHC.
 
 The reason you must rebuild to get a native-code generator: The
-\tr{.hc} files will {\em not} turn into a native-code generator, and
-the distributed \tr{.hi} files ``match'' those \tr{.hc} files.
+\tr{.hc} files that we supply do {\em not} include a native-code generator.
+(They are supposed to work on and for any machine.)
 
 From here on, I presume you've installed your booted GHC as
 
 From here on, I presume you've installed your booted GHC as
-\tr{ghc-0.26}.
-
-If you are going for a native-code generator, you can save yourself
-some re-compiling by getting a suitable set of interface (\tr{.hi})
-files, for GHC for your machine.  You should end up doing, for example:
-\begin{verbatim}
-cd ghc-0.26/ghc/compiler # note where you are!
-
-rm */*.o    # scrub the old compiler files
-
-gunzip -c ghc-0.26-hi-files-alpha.tar.gz | tar xfv -
-\end{verbatim}
+\tr{ghc-2.01}.
 
 
-Now you can configure as before, but using \tr{--with-hc=ghc-0.26}
+You can configure as before, but using \tr{--with-hc=ghc-2.01}
 (\tr{config.status} records what you did before).
 
 Running \tr{sh < STARTUP} isn't strictly necessary; you only need to
 rebuild in \tr{ghc/compiler}:
 \begin{verbatim}
 (\tr{config.status} records what you did before).
 
 Running \tr{sh < STARTUP} isn't strictly necessary; you only need to
 rebuild in \tr{ghc/compiler}:
 \begin{verbatim}
-cd ghc-0.26/ghc/compiler
+cd ghc-2.01/ghc/compiler
 make Makefile  # if you didn't STARTUP...
 
 make all EXTRA_HC_OPTS=-fvia-C # -fvia-C important!
 make Makefile  # if you didn't STARTUP...
 
 make all EXTRA_HC_OPTS=-fvia-C # -fvia-C important!
@@ -1477,14 +1488,22 @@ type \tr{make install} in \tr{ghc/compiler} to finish the job.
 %*                                                                     *
 %************************************************************************
 
 %*                                                                     *
 %************************************************************************
 
-GHC~0.26 doesn't build with HBC.  (It could, but we haven't put in
-the effort to maintain it.)
+GHC~2.01 doesn't build with HBC.
 
 
-GHC~0.26 is best built with itself, GHC~0.26.  We heartily recommend
-it.  GHC~0.26 can certainly be built with GHC~0.23 or 0.24, and with
-some earlier versions, with some effort.
+GHC~2.01 can be built with:
+\begin{description}
+\item[GHC~0.26:]
+Provided you don't use \tr{-O} (i.e., configure with
+\tr{--disable-hsc-optimised})...
+
+\item[GHC~0.29:]
+Works fine, and builds the fastest compiler; but be sure to configure
+with \tr{--with-mkdependHS=blah}, where \tr{blah} is a name to invoke
+the \tr{mkdependHS} that comes with GHC~0.29.
 
 
-GHC has never been built with compilers other than GHC and HBC.
+\item[Itself:]
+It works, but the resulting compiler is slower.
+\end{description}
 
 %$$ If you are going to build the compiler with HBC,
 %$$ please get the appropriate set of \tr{.hi} interface
 
 %$$ If you are going to build the compiler with HBC,
 %$$ please get the appropriate set of \tr{.hi} interface
@@ -1513,8 +1532,9 @@ GHC has never been built with compilers other than GHC and HBC.
 %************************************************************************
 
 Here are the gory details about some utility programs you may need;
 %************************************************************************
 
 Here are the gory details about some utility programs you may need;
-\tr{perl} and \tr{gcc} are the only important ones. (PVM is important if you're going for Parallel Haskell.) The
-\tr{configure} script will tell you if you are missing something.
+\tr{perl} and \tr{gcc} are the only important ones. (PVM is important
+if you're going for Parallel Haskell.) The \tr{configure} script will
+tell you if you are missing something.
 
 \begin{description}
 \item[Perl:]
 
 \begin{description}
 \item[Perl:]
@@ -1524,24 +1544,17 @@ Here are the gory details about some utility programs you may need;
 for doing shell-scripty tasks that involve lots of text processing.
 It is pretty easy to install.
 
 for doing shell-scripty tasks that involve lots of text processing.
 It is pretty easy to install.
 
-(We still assume Perl version 4; experience suggests that Perl~5
-is fine, too.)
+(Perl~5 is the current version; GHC is still friendly to Perl~4 as well.)
 
 Perl should be put somewhere so that it can be invoked by the \tr{#!}
 script-invoking mechanism. (I believe \tr{/usr/bin/perl} is preferred;
 we use \tr{/usr/local/bin/perl} at Glasgow.)  The full pathname should
 be less than 32 characters long.
 
 
 Perl should be put somewhere so that it can be invoked by the \tr{#!}
 script-invoking mechanism. (I believe \tr{/usr/bin/perl} is preferred;
 we use \tr{/usr/local/bin/perl} at Glasgow.)  The full pathname should
 be less than 32 characters long.
 
-Perl version 4.035 has a bug to do with recursion that will bite if
-you run the \tr{lit2texi} script, when making Info files from
-``literate'' files of various sorts.  Either use a more recent version
-(4.036, or 5.00n) or an older version
-(e.g., perl 4.019).
-
 \item[GNU C (\tr{gcc}):]
 \index{pre-supposed: GCC (GNU C compiler)}
 \index{GCC (GNU C compiler), pre-supposed}
 \item[GNU C (\tr{gcc}):]
 \index{pre-supposed: GCC (GNU C compiler)}
 \index{GCC (GNU C compiler), pre-supposed}
-The current version is 2.7.0, and has no problems that we know of.
+The current version is 2.7.2, and has no problems that we know of.
 
 If your GCC dies with ``internal error'' on some GHC source file,
 please let us know, so we can report it and get things improved.
 
 If your GCC dies with ``internal error'' on some GHC source file,
 please let us know, so we can report it and get things improved.
@@ -1555,7 +1568,7 @@ PVM is the Parallel Virtual Machine on which Parallel Haskell programs
 run.  Underneath PVM, you can have (for example) a network of
 workstations (slow) or a multiprocessor box (faster).
 
 run.  Underneath PVM, you can have (for example) a network of
 workstations (slow) or a multiprocessor box (faster).
 
-The current version of PVM is 3.3.7.  It is readily available on
+The current version of PVM is 3.3.11; we use 3.3.7.  It is readily available on
 the net; I think I got it from \tr{research.att.com}, in \tr{netlib}.
 
 A PVM installation is slightly quirky, but easy to do.  Just follow
 the net; I think I got it from \tr{research.att.com}, in \tr{netlib}.
 
 A PVM installation is slightly quirky, but easy to do.  Just follow
@@ -1655,7 +1668,7 @@ these are OK.
 
 %------------------------------------------------------------------------
 \item
 
 %------------------------------------------------------------------------
 \item
-In 0.26, when compiling via C, you'll sometimes get ``warning:
+When compiling via C, you'll sometimes get ``warning:
 assignment from incompatible pointer type'' out of GCC.  Harmless.
 
 %------------------------------------------------------------------------
 assignment from incompatible pointer type'' out of GCC.  Harmless.
 
 %------------------------------------------------------------------------
@@ -1937,6 +1950,25 @@ compiler, please compile from intermediate C files (produced by GHC
 somewhere else).''
 
 %--------------------------------------------------------------
 somewhere else).''
 
 %--------------------------------------------------------------
+\item[\tr{--with-mkdependHS=}{\em mkdep}:]
+\index{--with-mkdependHS configure option}
+
+Use {\em mkdep} as your \tr{mkdependHS} program.  You should use the
+\tr{mkdependHS} that came with the GHC which you are probably
+specifying via \tr{--with-hc=...}.
+
+%--------------------------------------------------------------
+\item[\tr{--with-gcc=}{\em blah}:]
+\index{--with-gcc configure option}
+Use {\em blah} as my ``GNU C compiler.''  In case you have several,
+and want to chose a particular one.
+
+%--------------------------------------------------------------
+\item[\tr{--with-make=}{\em blub}:]
+\index{--with-make configure option}
+Ditto, for ``make''.
+
+%--------------------------------------------------------------
 \item[\tr{--with-tmpdir=}{\em directory}:]
 Set the directory where temporary files should be created.  This is
 \tr{/tmp} by default, which is Sometimes Uncool (because, e.g.,
 \item[\tr{--with-tmpdir=}{\em directory}:]
 Set the directory where temporary files should be created.  This is
 \tr{/tmp} by default, which is Sometimes Uncool (because, e.g.,
@@ -1970,16 +2002,14 @@ Some common combinations would be:
 ./configure --prefix=/users/fp/partain --with-hc=c --disable-profiling
     # use .hc files; don't bother with profiling
 
 ./configure --prefix=/users/fp/partain --with-hc=c --disable-profiling
     # use .hc files; don't bother with profiling
 
-./configure --with-hc=ghc-0.26 --with-readline-library --with-sockets-library
-    # simple build with itself; for Sun4s & Alphas, you
-    # should grab & use ghc-0.26-hi-files-<blah>.tar.gz
-    # (because those machines have a native-code generator).
+./configure --with-hc=ghc-0.29 --with-readline-library --with-sockets-library
+    # simple build with 0.29
     # For the extra libraries, you've got to have the right
     # stuff to link to.
 
     # For the extra libraries, you've got to have the right
     # stuff to link to.
 
-./configure --with-hc=ghc-0.26 --disable-hsc-optimised --enable-hsc-debug
+./configure --with-hc=ghc-0.29 --disable-hsc-optimised --enable-hsc-debug
     # Don't use -O on GHC itself; turn on -DDEBUG.
     # Don't use -O on GHC itself; turn on -DDEBUG.
-    # Slows things way down, but it's the right thing if
+    # Slows things down, but it's The Right Thing if
     # you're hacking on GHC and doing lots of recompilations.
 
 ./configure --with-hc=c --enable-concurrent --enable-parallel --with-tmpdir=/usr/tmp
     # you're hacking on GHC and doing lots of recompilations.
 
 ./configure --with-hc=c --enable-concurrent --enable-parallel --with-tmpdir=/usr/tmp
@@ -1993,6 +2023,17 @@ do {\em not} have a native-code generator.
 
 %************************************************************************
 %*                                                                     *
 
 %************************************************************************
 %*                                                                     *
+\subsection[Configuring-HsLibs]{Haskell-libraries-specific things in \tr{configure}}
+\index{Configuring the Haskell libraries}
+%*                                                                     *
+%************************************************************************
+
+The normal thing is: \tr{--enable-hslibs --with-hc-for-hslibs=in-place}.
+
+NOT DONE YET.
+
+%************************************************************************
+%*                                                                     *
 \subsection[Configuring-Haggis]{Haggis-specific things in \tr{configure}}
 \index{Configuring for Haggis}
 %*                                                                     *
 \subsection[Configuring-Haggis]{Haggis-specific things in \tr{configure}}
 \index{Configuring for Haggis}
 %*                                                                     *
@@ -2022,9 +2063,12 @@ MORE TO COME.
 %*                                                                     *
 %************************************************************************
 
 %*                                                                     *
 %************************************************************************
 
-Use \tr{--enable-nofib}.  If you have NoFib and GHC in the same build
+Use \tr{--enable-nofib --with-setup=ghc}.
+If you have NoFib and GHC in the same build
 tree but only want to build the NoFib suite, use \tr{--disable-ghc}.
 
 tree but only want to build the NoFib suite, use \tr{--disable-ghc}.
 
+(If you were testing HBC on NoFib, you'd do \tr{--with-setup=hbc}, of course.)
+
 You may want to enable or disable various sets of tests, as
 suggested by \tr{./configure --help}.  If you use \tr{--enable-all-tests},
 be aware that many of them are GHC-specific.  Also, we may not have
 You may want to enable or disable various sets of tests, as
 suggested by \tr{./configure --help}.  If you use \tr{--enable-all-tests},
 be aware that many of them are GHC-specific.  Also, we may not have
@@ -2110,18 +2154,18 @@ ghc/compiler/   & The Haskell compiler proper, called \tr{hsc}; \\
                & \\
 ghc/runtime/   & The runtime system, including the garbage-collector(s).\\
                & \\
                & \\
 ghc/runtime/   & The runtime system, including the garbage-collector(s).\\
                & \\
-ghc/lib/prelude/& Source for the linked-in code for the ``standard prelude''. \\
-ghc/lib/glaExts/ & Source for the linked-in code for our Glasgow extensions. \\
-ghc/lib/haskell-1.3/ & Source for the linked-in code for Haskell 1.3 I/O. \\
-ghc/lib/hbc/   & Source for the HBC `system library'. \\
-ghc/lib/ghc/   & Source for the GHC `system library'.\\
-               & \\
-ghc/includes/  & The ``public'' .hi files slurped by the parser, \\
-               & and .h files \tr{#include}d in generated .hc files come from.\\
+ghc/lib/       & Source for the linked-in code for the ``standard prelude''. \\
+ghc/includes/  & The .h files \tr{#include}d in generated .hc files.\\
                & \\
 ghc/docs/      & documents; see the README file there. \\
                & \\
 ghc/CONTRIB/   & reserved for contributed things \\
                & \\
 ghc/docs/      & documents; see the README file there. \\
                & \\
 ghc/CONTRIB/   & reserved for contributed things \\
+               & \\
+hslibs/ghc/    & `ghc' system library (syslib) \\
+hslibs/hbc/    & `hbc' system library \\
+hslibs/posix/  & `posix' system library \\
+hslibs/contrib/ & `contrib' system library \\
+               & \\
 haggis/                & Haggis Haskell X11 GUI toolkit \\
 happy/         & Happy Haskell parser generator \\
 nofib/         & NoFib Haskell benchmark and test suite \\
 haggis/                & Haggis Haskell X11 GUI toolkit \\
 happy/         & Happy Haskell parser generator \\
 nofib/         & NoFib Haskell benchmark and test suite \\