using the GHC parser and renamer

Simon Peyton-Jones
Thu, 25 Jan 2001 04:41:31 -0800


I'm sorry not to have replied to your earlier message; I've been
away at POPL etc.  Incidentally, for implementation-related
things, better to use glasgow-haskell-bugs (albeit it's not actually a
rather than glasgow-haskell-users.

GHC 4.08 (which is the place from which you got your code, I think)
uses a "driver" written in perl to coordinate its operations.  The
runs cpp, then GHC itself (a binary called 'hsc'), then gcc, then as,
then ld.
Run ghc-4.08 with "-v" to see what it does.

My bet is that you are running your bits-of-ghc-plus-bits-of-your-own
binary directly.  So it's not getting all the command-line flags it
(nor are they documented, because it's an internal interface).

| 	Main.hs:1:
| 		Could not find interface file for 'Prelude'
| 		in the directories ./*.hi

It's not looking in the right directories because it hasn't been told
to do so by the command-line flags.  If you run ghc-4.08 -v you'll
see how the driver communicates which directctories to look in.

| 	Main.hs:3:
| 		Bad interface file::  ./ParseAndRenameFile.hi
| 		./ParseAndRenameFile.hi:1  Interface file=20
| 	version error; Expected 0
| 	found version 408

The version number it expects to find is again communicated by
a command line flag.  For your purposes you may not care, so
one option is to just remove the test.  Or ghc-4.08 -v will show
you what the driver is saying to hsc.

Incidentally, Tim Sheard at OGI is building a modular front end for
Haskell, in the spirit of Mark Jones's Typing Haskell in Haskell paper.
It might be worth asking him whether it's in a borrow-able state,
it's probably less of a monster than GHC.