# hmake - a make tool for Haskell programs

What is hmake? How do I use it? hmake interactive (hi) hmake-config | Recent news Downloads Build and install Known bugs
Contacts

### 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.10 (date 2005-03-11).

- Improved the extraction of import decls from source files: now accepts corner cases like multiple imports on a single line.
- Source file scanning is now lazier - it stops at the first line that indicates no further import decls are possible. This fixes some bugs dealing with .hsc files, and .ly files.
- Takes care of the new package story in ghc-6.4.
- Now interprets the compiler options `-odir=foo` option as well as passing it on to the compiler.

The previous version was hmake-3.09 (date 2004-11-16).

- Some fixes so that hi now also works under Cygwin/GHC. (Requires only that you export the SHELL environment variable.)
- Now interprets a `-hidir=foo` option as well as passing it on to the compiler.
- Improvements to the internal documentation of the APIs (thanks to Isaac Jones).
- Improved handling of C pre-processor directives (thanks to cpphs).

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

Currently known bugs are listed in bugs.html.

### Download

Download the full hmake sources from
`http://www.haskell.org/hmake/hmake-3.10.tar.gz`

Mirror at:
`ftp://ftp.cs.york.ac.uk/pub/haskell/hmake/`
`http://www.cs.york.ac.uk/fp/hmake/hmake-3.10.tar.gz`

RPMs for RedHat are available from `http://haskell.org/~petersen/rpms/i386/`

If you're running the unstable version of Debian GNU/Linux system, you can download and install hmake with a command like `apt-get install hmake`, or download the package file from: `http://ftp.debian.org/debian/pool/main/h/hmake/` (The package is not yet available for the stable version of Debian.)

(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

Use

      $ 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.

Notes

`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.

For hi to work on the Windows/Cygwin platform, you must export the SHELL environment variable before starting the interpreter.

The system-wide hmakerc configuration file lives in:

        /usr/local/lib/hmake/$MACHINE/hmakerc

(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:

        $HOME/.hmakerc/$MACHINE

Normally, a user will simply use the system-wide hmakerc. If you want to make any customisations, for instance to add a new compiler or change the default, you first need to create a personal hmakerc file with hmake-config new. Only the person who installs hmake can change the system-wide hmakerc.

### Contacts

Please send bug reports, bug fixes, and suggestions for improvements to `Malcolm.Wallace@cs.york.ac.uk`

Copyright

hmake is based on code from hbcmake and nhc13make, which are both
© copyright to Thomas Hallgren, 1991-1997,
with additions and modifications © copyright to Malcolm Wallace, 1998-2005.
Hmake interactive (hi) is © copyright to Malcolm Wallace, 2000.
Hmake-config is © copyright to Malcolm Wallace, 2002-2005.

You may use, re-distribute, or modify this software under the terms of this licence.

Some library code is incorporated from cpphs, which is © copyright to Malcolm Wallace, 2004, and distributed under a separate licence, the LGPL.

The latest updates to this software are available on the WWW from `http://www.haskell.org/hmake/` (main site)
`http://www.cs.york.ac.uk/fp/hmake/` (mirror)

Information last updated: 10th March 2005
York Functional Programming Group
Malcolm.Wallace@cs.york.ac.uk