% Building and installing the Glasgow Functional Programming Tools Suite
%
-% Version 2.05
+% Version 2.08
% July 1997
\documentstyle[11pt,literate]{article}
\begin{document}
\title{Building and installing the Glasgow Functional Programming Tools Suite\\
-Version~2.05}
+Version~2.08}
\author{The GHC Team\\
Department of Computing Science\\
University of Glasgow\\
Source-only distributions are either bugfix releases or snapshots of
current state of development. The release has undergone some testing.
-GHC~2.05 is a source-only release, and it can be compiled up using
+GHC~2.08 is a source-only release, and it can be compiled up using
either GHC~2.02 (or subsequent bugfix releases) or the Good Old
Compiler, GHC~0.29. Compiling with 0.29 is recommended if you're
a performance junkie, as 0.29 (still) generates zippier code, but
-GHC~2.04 is catching up.
+GHC~2.08 is catching up.
\item[Build GHC from intermediate C \tr{.hc} files:]
You need a working GHC to use a source distribution. What if you don't
%************************************************************************
%* *
-\section[port-info]{What machines the Glasgow tools, version~2.05, run on}
+\section[port-info]{What machines the Glasgow tools, version~2.08, run on}
\index{ports, GHC}
\index{GHC ports}
\index{supported platforms}
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 2.05. We
+Here's everything that's known about GHC ports, as of 2.08. We
identify platforms by their ``canonical'' CPU/Manufacturer/OS triple.
Note that some ports are fussy about which GCC version you use; or
%-------------------------------------------------------------------
\item[\tr{i386-*-linux} (PCs running Linux---ELF format):]
\index{i386-*-linux: registerised port}
-GHC~2.05 works registerised.
+GHC~2.08 works registerised.
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.
%-------------------------------------------------------------------
\item[\tr{i386-*-freebsd} (PCs running FreeBSD 2.2 or higher, and
NetBSD/OpenBSD using FreeBSD emulation):] \index{i386-*-freebsd:
-registerised port} GHC~2.05 works registerised. Supports same set of
+registerised port} GHC~2.08 works registerised. Supports same set of
bundles as the above.
\index{i386-*-freebsd: profiling---yes}
%-------------------------------------------------------------------
\item[\tr{mips-sgi-irix5}:]
\index{mips-sgi-irix5: registerised port}
-GHC~2.05 works registerised (no native-code generator).
+GHC~2.08 works registerised (no native-code generator).
I suspect any GCC~2.6.x (or later) is OK. The GCC that I used
was built with \tr{--with-gnu-as}; turns out that is important!
\item[\tr{mips-sgi-irix6}:]
\index{mips-sgi-irix6: registerised port}
Thanks to the fine efforts of Tomasz Cholewo
-\tr{<tjchol01@mecca.spd.louisville.edu>}, GHC~2.05 works registerised
+\tr{<tjchol01@mecca.spd.louisville.edu>}, GHC~2.08 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
%-------------------------------------------------------------------
\item[\tr{powerpc-ibm-aix}:]
\index{powerpc-ibm-aix: registerised port}
-GHC~2.05 works registerised (no native-code generator..yet).
+GHC~2.08 works registerised (no native-code generator..yet).
I suspect 2.7.x is what you need together with this.
Concurrent/Parallel Haskell probably don't work (yet).
%-------------------------------------------------------------------
\item[\tr{m68k-sun-sunos4} (Sun3):]
\index{m68k-sun-sunos4: registerised port}
-GHC~2.05 hasn't been tried on a Sun3. GHC~0.26 worked registerised.
+GHC~2.08 hasn't been tried on a Sun3. GHC~0.26 worked registerised.
No native-code generator.
Concurrent/Parallel Haskell probably don't work (yet).
Suppose that you untar a binary-distribution bundle, thus:
\begin{verbatim}
% cd /your/scratch/space
- % gunzip < ghc-2.02-sun-sparc-solaris2.tar.gz | tar xvf -
+ % gunzip < ghc-2.08-sun-sparc-solaris2.tar.gz | tar xvf -
\end{verbatim}
Then you should find a single directory, @fptools@, with the following
structure:
\item[@lib/<platform>@] contains platform-specific support files for the installation.
Typically there is a subdirectory for each @fptools@ project, whose name is
the name of the project with its version number.
-For example, for GHC 2.02 there would be a sub-directory @ghc-2.02/@.
+For example, for GHC 2.08 there would be a sub-directory @ghc-2.08/@.
These sub-directories have the following general structure:
\begin{description}
ones from different releases or platforms) into a single @fptools@ directory:
\begin{verbatim}
% cd /your/scratch/space
- % gunzip < ghc-2.02-sun-sparc-solaris2.tar.gz | tar xvf -
+ % gunzip < ghc-2.08-sun-sparc-solaris2.tar.gz | tar xvf -
% gunzip < happy-1.09-sun-sparc-sunos4.tar.gz | tar xvf -
\end{verbatim}
When you do multiple unpacks like this, the top level @Makefile@, @README@,
\end{enumerate}
When installing the user-invokable binaries, this installation
-procedure will install, say, @GHC@ version 2.02 as @ghc-2.02@. It
+procedure will install, say, @GHC@ version 2.08 as @ghc-2.08@. It
will also make a link (in the binary installation directory) from
-@ghc@ to @ghc-2.02@. If you install multiple versions of GHC then the
+@ghc@ to @ghc-2.08@. If you install multiple versions of GHC then the
last one ``wins'', and ``@ghc@'' will invoke the last one installed.
-You can change this manually if you want. But regardless, @ghc-2.02@
-should always invoke @GHC@ version 2.02.
+You can change this manually if you want. But regardless, @ghc-2.08@
+should always invoke @GHC@ version 2.08.
\subsection{What bundles there are}
There are plenty of ``non-basic'' GHC bundles. The files for them are
-called \tr{ghc-2.05-<bundle>-<platform>.tar.gz}, where the
+called \tr{ghc-2.08-<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.
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-2.05/ghc/driver/ghc ~/bin/alpha/ghc
+% ln -s /local/src/ghc-2.08/ghc/driver/ghc ~/bin/alpha/ghc
% rehash
\end{verbatim}
\item
You {\em may} need to re-\tr{ranlib} your libraries (on Sun4s).
\begin{verbatim}
-% cd $(libdir)/ghc-2.05/sparc-sun-sunos4
+% cd $(libdir)/ghc-2.08/sparc-sun-sunos4
% foreach i ( `find . -name '*.a' -print` ) # or other-shell equiv...
? ranlib $i
? # or, on some machines: ar s $i