[project @ 2004-01-08 10:45:33 by simonmar]
[ghc-hetmet.git] / docs / building / building.sgml
index 276d4b4..1bb92d5 100644 (file)
          <listitem>
            <para>Set your <literal>$CVSROOT</literal> environment variable to
             <literal>:pserver:anoncvs@glass.cse.ogi.edu:/cvs</literal></para>
+           <para>If you set <literal>$CVSROOT</literal> in a shell script, be sure not to
+             have any trailing spaces on that line, otherwise CVS will respond with 
+             a perplexing message like
+             <programlisting>
+               /cvs : no such repository
+         </programlisting></para>
          </listitem>
          <listitem>
             <para>Run the command</para>
@@ -1000,12 +1006,21 @@ $ cvs checkout nofib/spectral
          <term>sparc-sun-solaris2</term>
          <indexterm><primary>sparc-sun-solaris2</primary></indexterm>
          <listitem>
-           <para>Fully supported (at least for Solaris 2.7),
+           <para>Fully supported (at least for Solaris 2.7 and 2.6),
            including native-code generator.</para>
          </listitem>
        </varlistentry>
 
        <varlistentry>
+         <term>sparc-unknown-openbsd</term>
+         <indexterm><primary>sparc-unknown-openbsd</primary></indexterm>
+         <listitem>
+           <para>Supported, including native-code generator. The
+           same should also be true of NetBSD</para>
+         </listitem>
+       </varlistentry>
+
+       <varlistentry>
          <term>hppa1.1-hp-hpux (HP-PA boxes running HPUX 9.x)</term>
          <indexterm><primary>hppa1.1-hp-hpux</primary></indexterm>
          <listitem>
@@ -1080,8 +1095,8 @@ $ cvs checkout nofib/spectral
          <term>ia64-unknown-linux</term>
          <indexterm><primary>ia64-unknown-linux</primary></indexterm>
          <listitem>
-           <para>GHC currently works unregisterised.  A registerised
-           port is in progress.</para>
+           <para>Supported, except there is no native code
+           generator.</para>
          </listitem>
        </varlistentry>
 
@@ -1107,6 +1122,14 @@ $ cvs checkout nofib/spectral
        </varlistentry>
 
        <varlistentry>
+         <term>mips64-sgi-irix6</term>
+         <indexterm><primary>mips-sgi-irix6</primary></indexterm>
+         <listitem>
+           <para>GHC currently works unregisterised.</para>
+         </listitem>
+       </varlistentry>
+
+       <varlistentry>
          <term>powerpc-ibm-aix</term>
          <indexterm><primary>powerpc-ibm-aix</primary></indexterm>
          <listitem>
@@ -3770,6 +3793,7 @@ foo% make install
 
            <listitem>
 <screen>
+$ cd <replaceable>T</replaceable>
 $ ./configure --enable-hc-boot --enable-hc-boot-unregisterised
 </screen>
 
@@ -3828,7 +3852,13 @@ GhcStage2HcOpts = -O -fvia-C -keep-hc-files
              <itemizedlist>
                <listitem>
                  <para>change <literal>TARGETPLATFORM</literal>
-                  appropriately.</para>
+                  appropriately, and set the variables involving
+                  <literal>TARGET</literal> to the correct values for
+                  the target platform.  This step is necessary because
+                  currently <literal>configure</literal> doesn't cope
+                  with specifying different values for the
+                  <literal>--host</literal> and
+                  <literal>--target</literal> flags.</para>
                </listitem>
                <listitem>
                  <para>copy <literal>LeadingUnderscore</literal>
@@ -3836,7 +3866,7 @@ GhcStage2HcOpts = -O -fvia-C -keep-hc-files
                </listitem>
              </itemizedlist>
            </listitem>
-           
+
            <listitem>
              <para>Copy
              <filename><replaceable>T</replaceable>/ghc/includes/config.h</filename>
@@ -4077,10 +4107,13 @@ Hello World!
        <para>To support GHCi, you need to port the dynamic linker
        (<filename>fptools/ghc/rts/Linker.c</filename>).  The linker
        currently supports the ELF and PEi386 object file formats - if
-       your platform uses one of these then you probably don't have
-       to do anything except fiddle with the
-       <literal>#ifdef</literal>s at the top of
-       <filename>Linker.c</filename> to tell it about your OS.</para>
+       your platform uses one of these then things will be
+       significantly easier.  The majority of Unix platforms use the
+       ELF format these days.  Even so, there are some
+       machine-specific parts of the ELF linker: for example, the
+       code for resolving particular relocation types is
+       machine-specific, so some porting of this code to your
+       architecture will probaly be necessary.</para>
        
        <para>If your system uses a different object file format, then
        you have to write a linker &mdash; good luck!</para>
@@ -4412,14 +4445,37 @@ but you do need it to <emphasis>build</emphasis> GHC.</para>
 
 <para> Install Cygwin from <ulink url="http://www.cygwin.com/">http://www.cygwin.com/</ulink>.
 The installation process is straightforward; we install it in <Filename>c:/cygwin</Filename>.
-During the installation dialogue, make sure that you select:
-<command>cvs</command>, <command>openssh</command>,
-<command>autoconf</command>,
-<command>binutils</command> (includes ld and (I think) ar),
-<command>gcc</command>,
-<command>flex</command>,
-<command>make</command>.
-
+During the installation dialogue, make sure that you select all of the following:
+<itemizedlist>
+<listitem><para>
+             <command>cvs</command>, 
+</para></listitem>
+<listitem><para>
+             <command>openssh</command>,
+</para></listitem>
+<listitem><para>
+             <command>autoconf</command>,
+</para></listitem>
+<listitem><para>
+             <command>automake</command>,
+</para></listitem>
+<listitem><para>
+             <command>binutils</command> (includes ld and (I think) ar),
+</para></listitem>
+<listitem><para>
+             <command>gcc</command>,
+</para></listitem>
+<listitem><para>
+             <command>flex</command>,
+</para></listitem>
+<listitem><para>
+             <command>make</command>.
+</para></listitem>
+</itemizedlist>
+If you miss out any of these, strange things will happen to you.   To see thse packages, 
+click on the "View" button in the "Select Packages" 
+stage of Cygwin's installation dialogue, until the view says "Full".  The default view, which is
+"Category" isn't very helpful, and the "View" button is rather unobtrousive.
 </para>
 <para> Now set the following user environment variables:
 <itemizedlist>
@@ -4439,7 +4495,7 @@ don't do this you get very weird messages when you type
 </listitem>
 
 <listitem><para> Set <constant>SHELL</constant> to
-<Filename>c:/cygwin/bin/sh</Filename>. When you invoke a shell in Emacs, this
+<Filename>c:/cygwin/bin/bash</Filename>. When you invoke a shell in Emacs, this
 <constant>SHELL</constant> is what you get.
 </para></listitem>