Improve the correlation betweens documented and existent options
[ghc-hetmet.git] / docs / users_guide / phases.xml
index e5bac79..cd18469 100644 (file)
 
       <varlistentry>
         <term>
+          <option>-pgmm</option> <replaceable>cmd</replaceable>
+          <indexterm><primary><option>-pgmm</option></primary></indexterm>
+        </term>
+        <listitem>
+          <para>Use <replaceable>cmd</replaceable> as the
+          mangler.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>
+          <option>-pgms</option> <replaceable>cmd</replaceable>
+          <indexterm><primary><option>-pgms</option></primary></indexterm>
+        </term>
+        <listitem>
+          <para>Use <replaceable>cmd</replaceable> as the
+          splitter.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>
           <option>-pgma</option> <replaceable>cmd</replaceable>
           <indexterm><primary><option>-pgma</option></primary></indexterm>
         </term>
 
       <varlistentry>
         <term>
-          <option>-pgmdep</option> <replaceable>cmd</replaceable>
-          <indexterm><primary><option>-pgmdep</option></primary></indexterm>
-        </term>
-        <listitem>
-          <para>Use <replaceable>cmd</replaceable> as the dependency
-          generator.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>
           <option>-pgmF</option> <replaceable>cmd</replaceable>
           <indexterm><primary><option>-pgmF</option></primary></indexterm>
         </term>
       </varlistentry>
       <varlistentry>
         <term>
+          <option>-optm</option>  <replaceable>option</replaceable>
+          <indexterm><primary><option>-optm</option></primary></indexterm>
+        </term>
+        <listitem>
+          <para>Pass <replaceable>option</replaceable> to the mangler.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>
           <option>-opta</option>  <replaceable>option</replaceable>
           <indexterm><primary><option>-opta</option></primary></indexterm>
         </term>
@@ -486,6 +506,24 @@ $ cat foo.hspp</screen>
           are fed to <replaceable>cmd</replaceable> on the command
           line after the three standard input and output
           arguments.</para>
+
+          <para>
+          An example of a pre-processor is to convert your source files to the
+          input encoding that GHC expects, i.e. create a script
+          <literal>convert.sh</literal> containing the lines:
+          </para>
+
+<screen>#!/bin/sh
+( echo "{-# LINE 1 \"$2\" #-}" ; iconv -f l1 -t utf-8 $2 ) > $3</screen>
+
+          <para>and pass <literal>-F -pgmF convert.sh</literal> to GHC.
+          The <literal>-f l1</literal> option tells iconv to convert your
+          Latin-1 file, supplied in argument <literal>$2</literal>, while
+          the "-t utf-8" options tell iconv to return a UTF-8 encoded file.
+          The result is redirected into argument <literal>$3</literal>.
+          The <literal>echo "{-# LINE 1 \"$2\" #-}"</literal>
+          just makes sure that your error positions are reported as
+          in the original source file.</para>
         </listitem>
       </varlistentry>
     </variablelist>
@@ -725,7 +763,12 @@ $ cat foo.hspp</screen>
           <para>Tell the linker to split the single object file that
           would normally be generated into multiple object files,
           one per top-level Haskell function or type in the module.
-          We use this feature for building GHC's libraries libraries
+          This only makes sense for libraries, where it means that
+          executables linked against the library are smaller as they only
+          link against the object files that they need. However, assembling
+          all the sections separately is expensive, so this is slower than
+          compiling normally.
+          We use this feature for building GHC's libraries
           (warning: don't use it unless you know what you're
           doing!).</para>
         </listitem>
@@ -783,7 +826,7 @@ $ cat foo.hspp</screen>
            <literal>ghc</literal> is not clever 
            enough to figure out that they both need recompiling.  You can
            force recompilation by removing the object file, or by using the
-           <option>-no-recomp</option> flag.
+           <option>-fforce-recomp</option> flag.
             </para> 
         </listitem>
       </varlistentry>
@@ -859,7 +902,7 @@ $ cat foo.hspp</screen>
               machine.  See <xref linkend="sec-using-smp" />.</para>
 
               <para>The ability to make a foreign call that does not
-              block all other Haskell threads.</para>.
+              block all other Haskell threads.</para>
 
               <para>The ability to invoke foreign exported Haskell
               functions from multiple OS threads.</para>