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>
<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>
<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>