<para>The flag reference tables (<xref
linkend="flag-reference"/>) lists the status of each flag.</para>
+
+ <para>There are a few flags that are static except that they can
+ also be used with GHCi's <literal>:set</literal> command; these
+ are listed as “static/<literal>:set</literal>” in the
+ table.</para>
</sect1>
<sect1 id="file-suffixes">
<variablelist>
<varlistentry>
<term>
- <cmdsynopsis><command>ghc</command>
- <arg choice='plain'>––interactive</arg>
+ <cmdsynopsis><command>ghc --interactive</command>
</cmdsynopsis>
<indexterm><primary>interactive mode</primary></indexterm>
<indexterm><primary>ghci</primary></indexterm>
<varlistentry>
<term>
- <cmdsynopsis><command>ghc</command>
- <arg choice='plain'>––make</arg>
+ <cmdsynopsis><command>ghc --make</command>
</cmdsynopsis>
<indexterm><primary>make mode</primary></indexterm>
<indexterm><primary><option>––make</option></primary></indexterm>
<varlistentry>
<term>
- <cmdsynopsis><command>ghc</command>
- <arg choice='plain'>–e</arg> <arg choice='plain'><replaceable>expr</replaceable></arg>
+ <cmdsynopsis><command>ghc -e</command>
+ <arg choice='plain'><replaceable>expr</replaceable></arg>
</cmdsynopsis>
<indexterm><primary>eval mode</primary></indexterm>
</term>
<varlistentry>
<term>
<cmdsynopsis>
- <command>ghc</command>
- <group>
- <arg>-E</arg>
- <arg>-C</arg>
- <arg>-S</arg>
- <arg>-c</arg>
- </group>
+ <command>ghc -E</command>
+ <command>ghc -c</command>
+ <command>ghc -S</command>
+ <command>ghc -c</command>
</cmdsynopsis>
<indexterm><primary><option>-E</option></primary></indexterm>
<indexterm><primary><option>-C</option></primary></indexterm>
<varlistentry>
<term>
<cmdsynopsis>
- <command>ghc</command>
- <arg choice='plain'>–M</arg>
+ <command>ghc -M</command>
</cmdsynopsis>
<indexterm><primary>dependency-generation mode</primary></indexterm>
</term>
<para>Dependency-generation mode. In this mode, GHC can be
used to generate dependency information suitable for use in
a <literal>Makefile</literal>. See <xref
- linkend="sec-makefile-dependencies"/>.</para>
+ linkend="makefile-dependencies"/>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<cmdsynopsis>
- <command>ghc</command>
- <arg choice='plain'>––mk-dll</arg>
+ <command>ghc --mk-dll</command>
</cmdsynopsis>
- <indexterm><primary>dependency-generation mode</primary></indexterm>
+ <indexterm><primary>DLL-creation mode</primary></indexterm>
</term>
<listitem>
<para>DLL-creation mode (Windows only). See <xref
linkend="win32-dlls-create"/>.</para>
</listitem>
</varlistentry>
+
+ <varlistentry>
+ <term>
+ <cmdsynopsis>
+ <command>ghc --help</command> <command>ghc -?</command>
+ </cmdsynopsis>
+ <indexterm><primary><option>––help</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Cause GHC to spew a long usage message to standard
+ output and then exit.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <cmdsynopsis>
+ <command>ghc --version</command>
+ <command>ghc -V</command>
+ </cmdsynopsis>
+ <indexterm><primary><option>-V</option></primary></indexterm>
+ <indexterm><primary><option>––version</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Print a one-line string including GHC's version number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <cmdsynopsis>
+ <command>ghc --numeric-version</command>
+ </cmdsynopsis>
+ <indexterm><primary><option>––numeric-version</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Print GHC's numeric version number only.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <cmdsynopsis>
+ <command>ghc --print-libdir</command>
+ </cmdsynopsis>
+ <indexterm><primary><option>––print-libdir</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Print the path to GHC's library directory. This is
+ the top of the directory tree containing GHC's libraries,
+ interfaces, and include files (usually something like
+ <literal>/usr/local/lib/ghc-5.04</literal> on Unix). This
+ is the value of
+ <literal>$libdir</literal><indexterm><primary><literal>libdir</literal></primary>
+ </indexterm>in the package configuration file (see <xref
+ linkend="packages"/>).</para>
+ </listitem>
+ </varlistentry>
+
</variablelist>
<sect2 id="make-mode">
<indexterm><primary>help options</primary></indexterm>
<indexterm><primary>verbosity options</primary></indexterm>
+ <para>See also the <option>--help</option>, <option>--version</option>, <option>--numeric-version</option>,
+ and <option>--print-libdir</option> modes in <xref linkend="modes"/>.</para>
<variablelist>
<varlistentry>
<term>
- <option>––help</option>
- <indexterm><primary><option>––help</option></primary></indexterm>
- </term>
- <term>
- <option>-?</option>
- <indexterm><primary><option>-?</option></primary></indexterm>
+ <option>-n</option>
+ <indexterm><primary><option>-n</option></primary></indexterm>
</term>
<listitem>
- <para>Cause GHC to spew a long usage message to standard
- output and then exit.</para>
+ <para>Does a dry-run, i.e. GHC goes through all the motions
+ of compiling as normal, but does not actually run any
+ external commands.</para>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
- <term>
- <option>-V</option>
- <indexterm><primary><option>-V</option></primary></indexterm>
- </term>
- <term>
- <option>––version</option>
- <indexterm><primary><option>––version</option></primary></indexterm>
- </term>
- <listitem>
- <para>Print a one-line string including GHC's version number.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>––numeric-version</option>
- <indexterm><primary><option>––numeric-version</option></primary></indexterm>
- </term>
- <listitem>
- <para>Print GHC's numeric version number only.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>––print-libdir</option>
- <indexterm><primary><option>––print-libdir</option></primary></indexterm>
- </term>
- <listitem>
- <para>Print the path to GHC's library directory. This is
- the top of the directory tree containing GHC's libraries,
- interfaces, and include files (usually something like
- <literal>/usr/local/lib/ghc-5.04</literal> on Unix). This
- is the value of
- <literal>$libdir</literal><indexterm><primary><literal>libdir</literal></primary>
- </indexterm>in the package configuration file (see <xref
- linkend="packages"/>).</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
<term><option>-ferror-spans</option>
<indexterm><primary><option>-ferror-spans</option></primary>
</indexterm>
</varlistentry>
<varlistentry>
+ <term><option>-H</option><replaceable>size</replaceable>
+ <indexterm><primary><option>-H</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Set the minimum size of the heap to
+ <replaceable>size</replaceable>.
+ This option is equivalent to
+ <literal>+RTS -H<replaceable>size</replaceable></literal>,
+ see <xref linkend="rts-options-gc" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>-Rghc-timing</option>
<indexterm><primary><option>-Rghc-timing</option></primary></indexterm>
</term>
<para>Provides the standard warnings plus
<option>-fwarn-incomplete-patterns</option>,
<option>-fwarn-unused-matches</option>,
- <option>-fwarn-unused-imports</option>,
- <option>-fwarn-misc</option>, and
+ <option>-fwarn-unused-imports</option>, and
<option>-fwarn-unused-binds</option>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <option>-fwarn-misc</option>:
- <indexterm><primary><option>-fwarn-misc</option></primary></indexterm>
- </term>
- <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>:
<indexterm><primary><option>-fwarn-missing-fields</option></primary></indexterm>
<indexterm><primary>missing fields, warning</primary></indexterm>
</varlistentry>
<varlistentry>
+ <term><option>-fwarn-tabs</option>:</term>
+ <listitem>
+ <indexterm><primary><option>-fwarn-tabs</option></primary></indexterm>
+ <indexterm><primary>tabs, warning</primary></indexterm>
+ <para>Have the compiler warn if there are tabs in your source
+ file.</para>
+
+ <para>This warning is off by default.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>-fwarn-type-defaults</option>:</term>
<listitem>
<indexterm><primary><option>-fwarn-type-defaults</option></primary></indexterm>
<para>Means: “Generate good-quality code without
taking too long about it.” Thus, for example:
<command>ghc -c -O Main.lhs</command></para>
-
- <para><option>-O</option> currently also implies
- <option>-fvia-C</option>. This may change in the
- future.</para>
</listitem>
</varlistentry>
<literal>Exception.assert</literal> in source code (in
other words, rewriting <literal>Exception.assert p
e</literal> to <literal>e</literal> (see <xref
- linkend="sec-assertions"/>). This flag is turned on by
+ linkend="assertions"/>). This flag is turned on by
<option>-O</option>.
</para>
</listitem>
&phases;
- <sect1 id="sec-using-concurrent">
+ <sect1 id="using-concurrent">
<title>Using Concurrent Haskell</title>
<indexterm><primary>Concurrent Haskell</primary><secondary>using</secondary></indexterm>
every 4k of allocation). With <option>-C0</option> or
<option>-C</option>, context switches will occur as often as
possible (at every heap block allocation). By default, context
- switches occur every 20ms. Note that GHC's internal timer ticks
- every 20ms, and the context switch timer is always a multiple of
- this timer, so 20ms is the maximum granularity available for timed
- context switches.</para>
+ switches occur every 20ms.</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
- <sect1 id="sec-using-smp">
+ <sect1 id="using-smp">
<title>Using SMP parallelism</title>
<indexterm><primary>parallelism</primary>
</indexterm>
<variablelist>
<varlistentry>
- <term><option>-mv8</option>:</term>
- <listitem>
- <para>(SPARC machines)<indexterm><primary>-mv8 option (SPARC
- only)</primary></indexterm> Means to pass the like-named
- option to GCC; it says to use the Version 8 SPARC
- instructions, notably integer multiply and divide. The
- similar <option>-m*</option> GCC options for SPARC also
- work, actually.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
<term><option>-monly-[32]-regs</option>:</term>
<listitem>
<para>(iX86 machines)<indexterm><primary>-monly-N-regs