[Yhc] Location of generated files

Stefan O'Rear stefanor at cox.net
Mon Jul 2 16:19:08 EDT 2007


On Mon, Jul 02, 2007 at 08:41:31PM +0100, Neil Mitchell wrote:
> Hi,
> 
> I'd like to change where Yhc puts generated files. I propose:
> 
> Every module gets assigned a "root" directory:
> * foo/Main.hs has a root of "foo".
> * foo/System/Cmd.hs, module System.Cmd, has a root of "foo".
> * foo/System/Cmd.hs, module Cmd, has a root of "foo/System".
> 
> (Note that this is already done when searching for imports)
> 
> Every file with <ext> (where ext is one of hi, hbc,ycr,yca) will be created 
> in:
> 
> * foo/Main.hs leads to foo/<dir-ext>/Main.<ext>
> * foo/System/Cmd.hs, module System.Cmd, leads to 
> foo/<dir-ext>/System.Cmd.<ext>
> 
> By default, <dir-ext> is "obj" for all extensions. The flag objdir
> will allow the default <dir-ext> to be changed. The flag <ext>dir will
> allow the location of <ext> files to be changed. For example
> --hidir=hi would put all the hi files in foo/hi/Main.hi. --objdir=bar
> will put all generated files in foo/bar/*.*.
> 
> There is exactly one exception to this rule:
> 
> foo/Foo.hs, module Main, creates foo/Foo.hbc, in all circumstances.
> 
> Comments? If the argument you use relies on some other compiler
> (GCC/GHC) doing something different, please say _why_ that compilers
> behaviour is preferable.
> 
> The reason for this change is that I have written a low-level Make
> library, and therefore want to port Yhc to use this. I could
> re-implement the existing behaviour, but once you sit down and take a
> close look at the existing behaviour, it starts to look more and more
> silly. The existing make facilities are around ~22Kb of source, the
> new one will have a separate well defined library of ~7Kb, and a Yhc
> specific part of ~3Kb. For free we will get minimal compilation, cycle
> detection (and breaking using hand written .hi files), minimal file
> tests etc.
> 
> As part of this move to a new make architecture, I want Yhc to be able
> to compile the base library by simply invoking yhc *.hs, I want
> linking of .yca files to work better, and I want world peace.
> 
> I also hope that once the Make library has been tested in the context
> of Yhc, it can be shoved in the direction of the Cabal people.

This sounds like a very reasonable proposal, and I will take it for my
project as well.

My only concern is that some projects have obj/ dirs containing very
important sources (3D object models, etc) so we will need to be a bit
careful in the implementation of clean.

Also, when you say 3kb yhc-specific - how much of that relates to
invoking yhc, and how much is for building yhc?

Stefan


More information about the Yhc mailing list