Hi Just for completeness, I came up with a proposal that would solve all this, but in a very non-cabal style way.
Taking an example of happy, every generated file (File.hs) would have as its first line: {-# ORIGIN happy sourcefile.y -options -to -happy #-} Then you just modify all haskell generating tools to output this (easy) and suddenly the whole problem of preprocessors goes away. I realise its not the "cabal" style way of doing it - since the information gets put in the generated files etc - but it is pretty simple. You can also add to the file Happy.y: {-# GENERATE happy sourcefile.y -options -to -happy #-} To complete the other side of the generation. Thanks Neil On 11/6/06, Duncan Coutts <[EMAIL PROTECTED]> wrote:
I think this kind of build system feature ought to go into Cabal so it can be used more widely and without people needing Makefiles. I admit that we're not there yet with how easy it is to generate source files. Duncan On Mon, 2006-11-06 at 21:12 +0000, Frederik Eaton wrote: > Hello, > > I have a proposal for ghc. I think that it should take a new option, > say "--make-command". This will specify a command to be run whenever a > source file is read in by ghc. The command will be passed an argument, > which is the name of the source file. The idea is that the command can > be used to create auto-generated "source" files when ghc needs them. > > The purpose of this would be the following. Suppose I have a source > file, say Source.hs, which is generated from some template, say > Source.hs.in. If I edit Source.hs.in, and compile my program with 'ghc > --make', then the copy of Source.hs which ghc uses will be out of > date. That's because ghc doesn't know about the fact that Source.hs is > generated from Source.hs.in. If I use ghc, then I'll have to remember > to manually generate a new version of Source.hs every time I modify > Source.hs.in. > > But under the present proposal, I would simply write a Makefile with > the rules for generating Source.hs, and then pass --make-command=make > to ghc. For instance, my Makefile might say: > > Source.hs: Source.hs.in > $(TAC) < $< > $@ > > Then every time I run ghc, and Source.hs is out of date, an up-to-date > version of Source.hs will be generated automatically - because ghc > will call 'make Source.hs' before reading it in. > > Does this sound like a good idea? > > Frederik > _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users