hmake - a make tool for Haskell programs

What is hmake?
How do I use it?
hmake interactive (hi)
Recent news
Build and install

What is hmake?

  • hmake is a compilation manager for Haskell programs. See hmake.html for more details.
  • hmake interactive, or hi for short, is an interactive program development environment for Haskell, rather like Hugs. See interactive.html for more details.
  • hmake-config is an auxiliary tool for managing the set of compilers known by hmake, useful when you install a new compiler, or a new version of a compiler. See hmake-config.html for more details.

Recent News

The current version is hmake-3.06 (date 2002-08-09).

  • Better handling of package libraries. Previously, the package import directories were detected at installation time, so the addition of a new package required hmake-config to be invoked to update the config database. Also, because all of the package dirs were searched on every invocation, hmake could not warn of a missing -package flag. Now, package dirs are detected at runtime, and only for the requested packages - this fixes both problems.
  • Added the cmdline option list to hmake-config to display the set of Haskell compilers known to hmake.
  • Bugfix for the -hat option. Ensure that if a file goes through cpp before hat-trans, the resulting .hx file is moved from the temporary dir back to the build dir.
  • Bugfix, to ensure that hmake isn't confused by the escaped character \\ in a literal string.

See changes.html for the full history of versions, bugfixes, and other updates.


Download the full hmake sources from

Mirror at:

RPMs for RedHat are available from

(Note: If you have the nhc98 compiler, then you already have some version of hmake. However, if you installed another compiler after nhc98, you will probably need to run hmake-config to add the new compiler to hmake's database. Also, it is perfectly safe to download a newer version of hmake and install it on top of the version that came with nhc98.)

Configure, compile, and install

  $ ./configure  --prefix=/my/installation
  $ make
  $ make install


  $ configure --help
to discover what options you can change at configuration time. The configuration process actually does quite a good job of detecting what Haskell compilers you have, where they live, and anything special they might need. However, should you need to change anything by hand, after installation, use the hmake-config utility.


`harch' is a little script for determining your processor/OS combination. It is supplied because many sites have heterogeneous networks of machines all accessing a common filespace. You only need to install one copy of the `hmake' script, which uses `harch' to select the correct executables for any particular machine.

The system-wide hmakerc configuration file lives in:

(Of course, you don't have to use the root location /usr/local for your installation. Just use --prefix= at configuration time to reflect your preference.)

A personal hmakerc configuration file can live in:

Normally, a user will simply use the system-wide hmakerc. If they use hmake-config to make any customisations, a personal hmakerc file will be created for them. (Only the person who installs hmake can change the system-wide hmakerc).


Please send bug reports, bug fixes, and suggestions for improvements to


The core of the hmake tool is © copyright to Thomas Hallgren, 1991-1997.
(Code is incorporated from the earlier tools hbcmake and nhc13make.)
Many additions and modifications to hmake are © copyright to Malcolm Wallace, 1998-2002.
Hmake interactive (hi) is © copyright to Malcolm Wallace, 2000-2002.
Hmake-config is © copyright to Malcolm Wallace, 2002.

You may re-distribute or modify this software, but you must retain this copyright notice.

The latest updates to this software are available on the WWW from (

Information last updated: 2002-08-09
York Functional Programming Group