[project @ 2005-03-31 08:46:05 by simonmar]
[ghc-hetmet.git] / ghc / docs / users_guide / separate_compilation.xml
index f750128..97fe772 100644 (file)
@@ -719,12 +719,12 @@ When a hs-boot file <filename>A.hs-boot</filename>
    <command>ghc -M</command> will report an error if a cycle is found.
    </para></listitem>
 
-   <listitem><para> Every module that is 
-   <literal>{-# SOURCE #-}</literal>-imported in a program must also be ordinarily imported (or
-   else be one of the root modules).  To put it another way, if <literal>M.hs-boot</literal> is
-   reachable in the import graph, then <literal>M.hs</literal> must also be reachable.
-   The command <command>ghc --make</command> will report an error if this
-   condition is not satisfied.
+   <listitem><para> A module <literal>M</literal> that is 
+   <literal>{-# SOURCE #-}</literal>-imported in a program will usually also be
+   ordinarily imported elsewhere.  If not, <command>ghc --make</command>
+   automatically adds <literal>M</literal> to the set of moudles it tries to
+   compile and link, to ensure that <literal>M</literal>'s implementation is included in
+   the final program.
    </para></listitem>
 </itemizedlist>
 </para>
@@ -922,6 +922,14 @@ M.o : X.hi-boot
        <command>ghc</command> traces the dependencies, just like <command>ghc --make</command>
        (a new feature in GHC 6.4).</para>
 
+    <para>Note that <literal>ghc -M</literal> needs to find a <emphasis>source
+       file</emphasis> for each module in the dependency graph, so that it can
+      parse the import declarations and follow dependencies.  Any pre-compiled
+      modules without source files must therefore belong to a
+      package<footnote><para>This is a change in behaviour relative to 6.2 and
+       earlier.</para>
+      </footnote>.</para>
+
         <para>By default, <command>ghc -M</command> generates all the
         dependencies, and then concatenates them onto the end of
         <filename>makefile</filename> (or