X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=ghc%2Fdocs%2Finstall_guide%2Finstalling.lit;h=f184f52b616bf7eb1be696d6ee160f9c97600ee2;hp=69e442726d83bcd4f94873ba8705e90cf7451d48;hb=5eb1c77c795f92ed0f4c8023847e9d4be1a4fd0d;hpb=f7ecf7234c224489be8a5e63fced903b655d92ee diff --git a/ghc/docs/install_guide/installing.lit b/ghc/docs/install_guide/installing.lit index 69e4427..f184f52 100644 --- a/ghc/docs/install_guide/installing.lit +++ b/ghc/docs/install_guide/installing.lit @@ -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\\ -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\\ \\ -Email: glasgow-haskell-\{users,bugs\}-request\@dcs.glasgow.ac.uk} +Email: glasgow-haskell-\{users,bugs\}-request\@dcs.gla.ac.uk} \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. -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?} @@ -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}. +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. @@ -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} @@ -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. -``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 ... @@ -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} -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}. -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} %------------------------------------------------------------------- -\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. +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} -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 -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. @@ -211,7 +212,8 @@ Concurrent/Parallel Haskell probably won't work (yet). %------------------------------------------------------------------- \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} @@ -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. +Linux, MIPS, and HP boxes are in pretty good shape. \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. -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. @@ -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 -\tr{glasgow-haskell-bugs@dcs.glasgow.ac.uk}. +\tr{glasgow-haskell-bugs@dcs.gla.ac.uk}. \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 -\tr{ghc-0.26-.tar.gz}, where \tr{} is one of: -alpha-dec-osf2, hppa1.1-hp-hpux9, i386-unknown-linuxaout, -% i386-unknown-solaris2, +\tr{ghc-2.01-.tar.gz}, where \tr{} 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 -called \tr{ghc-0.26--.tar.gz}, where the +called \tr{ghc-2.01--.tar.gz}, where the \tr{} is as above, and \tr{} 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 -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 @@ -374,7 +377,7 @@ Here's what to do with the stuff in each directory, once unpacked. \begin{description} %--------------------------------------------------------------------- \item[\tr{bin/} (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}:] @@ -394,7 +397,6 @@ Things you need to fiddle so the tools will spring to life: 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 @@ -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 -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} -% cd /ghc/0.26/sparc-sun-sunos4 +% cd /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 @@ -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 -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. @@ -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 -\sectionref{Configuring}. +\sectionref{Configuring}. A typical invocation might be: +\begin{verbatim} +% cd +% ./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 @@ -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 -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. -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. -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}. @@ -680,6 +690,8 @@ Do the main GHC build, just as \tr{STARTUP} suggests: \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 @@ -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} -% 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} -% ghc -v -o hello -fhaskell-1.3 Main.hs +% ghc -v -o hello Main.hs \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 /ghc % make install +% cd /hslibs +% make install \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 /ghc % make -n install >& temp-log-file-to-look-at +% cd /hslibs +% make -n install >& temp-log-file-to-look-at \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). @@ -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} -% 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 +% 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 @@ -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 -(\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 -% 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} @@ -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. +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}. @@ -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 -\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 -\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} -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! @@ -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 @@ -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; -\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:] @@ -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. -(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 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} -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. @@ -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). -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 @@ -1655,7 +1668,7 @@ these are OK. %------------------------------------------------------------------------ \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. %------------------------------------------------------------------------ @@ -1937,6 +1950,25 @@ compiler, please compile from intermediate C files (produced by GHC 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., @@ -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 --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-.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. -./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. - # 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 @@ -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} %* * @@ -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}. +(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 @@ -2110,18 +2154,18 @@ ghc/compiler/ & The Haskell compiler proper, called \tr{hsc}; \\ & \\ 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 \\ + & \\ +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 \\