X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Finstalling.vsgml;h=c0a3dad168efbb46787053df62a86a824748da49;hb=1bb549f374580d391204ec788036ca10291e1ddd;hp=ac68402f5d921d4e7376d7136731ee9f44305990;hpb=fbf2e16821d9661d4a086ddb4eaaf31b97f17740;p=ghc-hetmet.git diff --git a/docs/installing.vsgml b/docs/installing.vsgml index ac68402..c0a3dad 100644 --- a/docs/installing.vsgml +++ b/docs/installing.vsgml @@ -2,7 +2,7 @@
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>