Hierarchical modules and compilation output redirection

Martin Norbäck d95mback@dtek.chalmers.se
15 Oct 2002 17:49:44 +0200


tis 2002-10-15 klockan 17.18 skrev Simon Marlow:
> > However it won't work since ghc wll put the compilation output of both
> > modules in OUTPUT_DIR/Module.o and subsequently fail to link.
> 
> Perhaps -odir should append the full module name as a directory (i.e. the default behaviour would be a special case where -odir is ".").

At least it should be made to work with hierarchical modules with the
same last name. Perhaps -odir should be made relative to the location of
the source file (unless an absolute path is specified, then you have to
do something else).

Or have -opre and be able to specify a directory there. (i.e -opre
objs/).

> It sounds like what you want is a way to specify a general mapping function from module names to object file names, perhaps in Haskell.  Something like
> 
>   $ ghc -omap "\m -> $ARCHITECTURE ++ \
>                      map (\x -> if x == '.' then '/' else x) m ++ \
>                      \".o\""
> 
> I'm only kidding, but we could implement this if we wanted :-)
> 
> How about having a make rule which just moves the object file to the required place after compilation?

Well, that's a possibility, but then I can't use --make and reuse the
already-compiled object files when using the modules for another
project. No biggie of course.

All this is of course due to using the --make feature of ghc instead of
using a proper Makefile with dependancies.

I've found that using --make speeds the compilation up by a great deal,
so it would be nice to be able to continue using that.

-omap is maybe a bit to generic, but it would be fun.

Regards,

	Martin