This section describes other program(s) which we distribute, that help with the Great Haskell Programming Task.
You run mkdependHS like this:
mkdependHS [mkdependHS options] [-- GHC options --] srcfile1 [srcfile2 ...] |
ghc -M [mkdependHS options(prefix with -optdep)] [ GHC options ] srcfile1 [srcfile2 ...] |
In general, if module A contains the line
import B ...blah... |
A.o : B.hi |
import {-# SOURCE #-} B ...blah... |
A.o : B.hi-boot |
By default, mkdependHS generates all the dependencies, and then concatenates them onto the end of makefile (or Makefile if makefile doesn't exist) bracketed by the lines "# DO NOT DELETE: Beginning of Haskell dependencies" and "# DO NOT DELETE: End of Haskell dependencies". If these lines already exist in the makefile, mkdependHS deletes the old dependencies first.
mkdependHS takes GHC options between -- brackets. It understands the following ones. Any options between -- brackets that it doesn't understand are simply ignored; this way you can feed your Makefile's standard GHC options to mkdependHS un-filtered.
Run the C pre-processor over the input files. The default is not to.
A cpp #define; usual meaning.
Add <dirs> (colon-separated) to list of directories to search for "import"ed modules.
Add <dir> to list of directories to search for .h files (i.e., usual meaning).
This program uses this GHC system library; take appropriate action (e.g., recognise when they are "import"ing a module from that library).
Here are the mkdependHS-specific options (not between --'s):
Be verbose.
Be very verbose.
Turn off warnings about interface file shadowing.
Use blah as the makefile, rather than makefile or Makefile. If blah doesn't exist, mkdependHS creates it. We often use -f .depend to put the dependencies in .depend and then include the file .depend into Makefile.
Use .<osuf> as the "target file" suffix ( default: o). Multiple -o flags are permitted (GHC2.05 onwards). Thus "-o hc -o o" will generate dependencies for .hc and .o files.
Make extra dependencies that declare that files with suffix .<suf>_<osuf> depend on interface files with suffix .<suf>_hi, or (for {-# SOURCE #-} imports) on .hi-boot. Multiple -s flags are permitted. For example, -o hc -s a -s b will make dependencies for .hc on .hi, .a_hc on .a_hi, and .b_hc on .b_hi. (Useful in conjunction with NoFib "ways".)
Regard <file> as "stable"; i.e., exclude it from having dependencies on it.
same as --exclude-module
Regard the colon-separated list of directories <dirs> as containing stable, don't generate any dependencies on modules therein.
same as --exclude-directory.
Regard <file> as not "stable"; i.e., generate dependencies on it (if any). This option is normally used in conjunction with the --exclude-directory option.
Regard prelude libraries as unstable, i.e., generate dependencies on the prelude modules used (including Prelude). This option is normally only used by the various system libraries. If a -syslib option is used, dependencies will also be generated on the library's interfaces.