
I'd have expected -odir/-hidir to put files in directories relative to the source directories. Is that an unreasonable expectation?
No, it's not an unreasonable expectation, and in fact I've made that change in CVS. However the changes are too large to backport to 5.04.2, I'm afraid.
2) with static options not accepted in source file pragmas, I often end up compiling everything with the superset of options.
Shouldn't it be possible to fork a new copy of ghc with new static options for parts of a ghc --make run?
Which static options in particular do you need to change?
3) shouldn't there be a way of telling ghc --make about ways to generate the .hs/.lhs files it is looking for (aka suffix rules)?
The standard examples are happy, cpp, drift, ..
As Malcolm suggested, use hmake, or a Makefile (and suffer slower compile times, I'm afraid). I don't think we intend to implement this in GHC. Cheers, Simon