B.7. hmake

From the hmake home page, "hmake is an intelligent compilation management tool for Haskell programs. It automatically extracts dependencies between source modules, and issues the appropriate compiler commands to rebuild only those that have changed, given just the name of the program or module that you want to build. Yes, you need never write a Makefile again!" hmake also does a good job of handling the variety of compilers that might be installed on a user's system. It maintains a list of compilers and can switch between them according to a flag. It also has a default compiler.

hmake is particularly interesting to us because it is written in Haskell and handles the task of compiling Haskell tools quite well. One shortcoming is that it is not extensible on a per-project basis: it is difficult to add support for new preprocessors without editing the hmake code itself. It does, however, perform a lot of the tasks that Distribution.Build will ultimately have to perform, and we hope to reuse some of the code.

Another interesting feature of hmake is the Haskell Interactive tool (hi). hi "is, an interpreter-like environment that you can wrap over any common Haskell compiler to achieve an interactive development style." This is interesting because it would be nice to have a generic /usr/bin/haskell which would use the default compiler to interpret Haskell scripts.