</varlistentry>
<varlistentry>
- <term><literal>-ohi</literal></term>
- <indexterm><primary><literal>-ohi</literal></primary></indexterm>
+ <term><option>-ohi</option> <replaceable>file</replaceable></term>
+ <indexterm><primary><option>-ohi</option></primary>
+ </indexterm>
+ <listitem>
+ <para>The interface output may be directed to another file
+ <filename>bar2/Wurble.iface</filename> with the option
+ <option>-ohi bar2/Wurble.iface</option> (not
+ recommended).</para>
+
+ <para>WARNING: if you redirect the interface file somewhere
+ that GHC can't find it, then the recompilation checker may
+ get confused (at the least, you won't get any recompilation
+ avoidance). We recommend using a combination of
+ <option>-hidir</option> and <option>-hisuf</option> options
+ instead, if possible.</para>
+
+ <para>To avoid generating an interface at all, you could use
+ this option to redirect the interface into the bit bucket:
+ <literal>-ohi /dev/null</literal>, for example.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-hidir</option> <replaceable>directory</replaceable></term>
+ <indexterm><primary><option>-hidir</option></primary>
+ </indexterm>
<listitem>
- <para></para>
+ <para>Redirects all generated interface files into
+ <replaceable>directory</replaceable>, instead of the default
+ which is to place the interface file in the same directory
+ as the source file.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><literal>-osuf</literal></term>
- <term><literal>-hisuf</literal></term>
- <indexterm><primary><literal>-osuf</literal></primary></indexterm>
- <indexterm><primary><literal>-hisuf</literal></primary></indexterm>
+ <term><option>-osuf</option> <replaceable>suffix</replaceable></term>
+ <term><option>-hisuf</option> <replaceable>suffix</replaceable></term>
+ <term><option>-hcsuf</option> <replaceable>suffix</replaceable></term>
+ <indexterm><primary><option>-osuf</option></primary></indexterm>
+ <indexterm><primary><option>-hisuf</option></primary></indexterm>
+ <indexterm><primary><option>-hcsuf</option></primary></indexterm>
<listitem>
- <para>EXOTICA: The <option>-osuf
- <suffix></option><IndexTerm><Primary>-osuf
- <suffix> option</Primary></IndexTerm> will change the
- <filename>.o</filename> file suffix for object files to
- whatever you specify. (We use this in compiling the
- prelude.).</para>
-
- <para>Similarly, the <option>-hisuf
- <suffix></option><IndexTerm><Primary>-hisuf
- <suffix> option</Primary></IndexTerm> will change the
- <filename>.hi</filename> file suffix for non-system
- interface files (see <XRef LinkEnd="hi-options">).</para>
+ <para>EXOTICA: The <option>-osuf</option>
+ <replaceable>suffix</replaceable> will change the
+ <literal>.o</literal> file suffix for object files to
+ whatever you specify. We use this when compiling libraries,
+ so that objects for the profiling versions of the libraries
+ don't clobber the normal ones.</para>
+
+ <para>Similarly, the <option>-hisuf</option>
+ <replaceable>suffix</replaceable> will change the
+ <literal>.hi</literal> file suffix for non-system interface
+ files (see <XRef LinkEnd="hi-options">).</para>
+
+ <para>Finally, the option <option>-hcsuf</option>
+ <replaceable>suffix</replaceable> will change the
+ <literal>.hc</literal> file suffix for compiler-generated
+ intermediate C files.</para>
<para>The <option>-hisuf</option>/<option>-osuf</option>
game is useful if you want to compile a program with both
<para>Provides the standard warnings plus
<option>-fwarn-incomplete-patterns</option>,
<option>-fwarn-unused-matches</option>,
- <option>-fwarn-unused-imports</option> and
+ <option>-fwarn-unused-imports</option>,
+ <option>-fwarn-misc</option>, and
<option>-fwarn-unused-binds</option>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-w</option>:</term>
<listitem>
- <IndexTerm><Primary>-w option</Primary></IndexTerm>
+ <IndexTerm><Primary><option>-w</option></Primary></IndexTerm>
<para>Turns off all warnings, including the standard ones.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-Wall</option>:</term>
<listitem>
- <indexterm><primary>-Wall option</primary></indexterm>
+ <indexterm><primary><option>-Wall</option></primary></indexterm>
<para>Turns on all warning options.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-fwarn-duplicate-exports</option>:</term>
<listitem>
- <indexterm><primary>-fwarn-duplicate-exports option</primary></indexterm>
+ <indexterm><primary><option>-fwarn-duplicate-exports</option></primary></indexterm>
<indexterm><primary>duplicate exports, warning</primary></indexterm>
<indexterm><primary>export lists, duplicates</primary></indexterm>
<varlistentry>
<term><option>-fwarn-hi-shadowing</option>:</term>
<listitem>
- <indexterm><primary>-fwarn-hi-shadowing option</primary></indexterm>
+ <indexterm><primary><option>-fwarn-hi-shadowing</option></primary></indexterm>
<indexterm><primary>shadowing</primary>
<secondary>interface files</secondary></indexterm>
<varlistentry>
<term><option>-fwarn-incomplete-patterns</option>:</term>
<listitem>
- <indexterm><primary>-fwarn-incomplete-patterns option</primary></indexterm>
+ <indexterm><primary><option>-fwarn-incomplete-patterns</option></primary></indexterm>
<indexterm><primary>incomplete patterns, warning</primary></indexterm>
<indexterm><primary>patterns, incomplete</primary></indexterm>
</varlistentry>
<varlistentry>
+ <term><option>-fwarn-misc</option>:</term>
+ <indexterm><primary><option>-fwarn-misc</option></primary></indexterm>
+ <listitem>
+ <para>Turns on warnings for various harmless but untidy
+ things. This currently includes: importing a type with
+ <literal>(..)</literal> when the export is abstract, and
+ listing duplicate class assertions in a qualified type.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>-fwarn-missing-fields</option>:</term>
<listitem>
- <indexterm><primary>-fwarn-missing-fields option</primary></indexterm>
+ <indexterm><primary><option>-fwarn-missing-fields</option></primary></indexterm>
<indexterm><primary>missing fields, warning</primary></indexterm>
<indexterm><primary>fields, missing</primary></indexterm>
<varlistentry>
<term><option>-fwarn-missing-methods</option>:</term>
<listitem>
- <indexterm><primary>-fwarn-missing-methods option</primary></indexterm>
+ <indexterm><primary><option>-fwarn-missing-methods</option></primary></indexterm>
<indexterm><primary>missing methods, warning</primary></indexterm>
<indexterm><primary>methods, missing</primary></indexterm>
<varlistentry>
<term><option>-fwarn-missing-signatures</option>:</term>
<listitem>
- <indexterm><primary>-fwarn-missing-signatures option</primary></indexterm>
+ <indexterm><primary><option>-fwarn-missing-signatures</option></primary></indexterm>
<indexterm><primary>type signatures, missing</primary></indexterm>
<para>If you would like GHC to check that every top-level
<varlistentry>
<term><option>-fwarn-name-shadowing</option>:</term>
<listitem>
- <indexterm><primary>-fwarn-name-shadowing option</primary></indexterm>
+ <indexterm><primary><option>-fwarn-name-shadowing</option></primary></indexterm>
<indexterm><primary>shadowing, warning</primary></indexterm>
<para>This option causes a warning to be emitted whenever an
<varlistentry>
<term><option>-fwarn-overlapping-patterns</option>:</term>
- <indexterm><primary>-fwarn-overlapping-patterns option</primary></indexterm>
+ <indexterm><primary><option>-fwarn-overlapping-patterns</option></primary></indexterm>
<indexterm><primary>overlapping patterns, warning</primary></indexterm>
<indexterm><primary>patterns, overlapping</primary></indexterm>
<listitem>
<varlistentry>
<term><option>-fwarn-type-defaults</option>:</term>
<listitem>
- <indexterm><primary>-fwarn-type-defaults option</primary></indexterm>
+ <indexterm><primary><option>-fwarn-type-defaults</option></primary></indexterm>
<indexterm><primary>defaulting mechanism, warning</primary></indexterm>
<para>Have the compiler warn/inform you where in your source
the Haskell defaulting mechanism for numeric types kicks
<varlistentry>
<term><option>-fwarn-unused-binds</option>:</term>
<listitem>
- <indexterm><primary>-fwarn-unused-binds option</primary></indexterm>
+ <indexterm><primary><option>-fwarn-unused-binds</option></primary></indexterm>
<indexterm><primary>unused binds, warning</primary></indexterm>
<indexterm><primary>binds, unused</primary></indexterm>
<para>Report any function definitions (and local bindings)
<varlistentry>
<term><option>-fwarn-unused-imports</option>:</term>
<listitem>
- <indexterm><primary>-fwarn-unused-imports option</primary></indexterm>
+ <indexterm><primary><option>-fwarn-unused-imports</option></primary></indexterm>
<indexterm><primary>unused imports, warning</primary></indexterm>
<indexterm><primary>imports, unused</primary></indexterm>
<varlistentry>
<term><option>-fwarn-unused-matches</option>:</term>
<listitem>
- <indexterm><primary>-fwarn-unused-matches option</primary></indexterm>
+ <indexterm><primary><option>-fwarn-unused-matches</option></primary></indexterm>
<indexterm><primary>unused matches, warning</primary></indexterm>
<indexterm><primary>matches, unused</primary></indexterm>
</VariableList>
<para>If you're feeling really paranoid, the
- <option>-dcore-lint</option> option<indexterm><primary>-dcore-lint
- option</primary></indexterm> is a good choice. It turns on
- heavyweight intra-pass sanity-checking within GHC. (It checks
- GHC's sanity, not yours.)</para>
+ <option>-dcore-lint</option>
+ option<indexterm><primary><option>-dcore-lint</option></primary></indexterm>
+ is a good choice. It turns on heavyweight intra-pass
+ sanity-checking within GHC. (It checks GHC's sanity, not
+ yours.)</para>
</sect1>