I am currently working on an alternative implementation of the STM monad and would like to keep my work as isolated as possible.  To that end, I have tried to keep all my files separate in a confined package.  The package consists of haskell files which are exported to the programmer, a C-- file which is used by the haskell functions, and a C file, which is called from some of the C-- primitives.  Inside my C file, I need to call a couple of functions that exist in the RTS, such as "dirty_TVAR" from (rts/sm/Storage.h).  Is there a good way to include this header file in my C file?  I would like to be able to list rts/sm in my cabal file under Include-Dirs.  I'm wondering if there is something analogous to an environment variable or anchor names (from SML/NJ compilation manager) that can tell me where the GHC source directory root is.  As an example, I would like to do something to the effect of:

library
  Include-Dirs: $GHC_ROOT/rts, $GHC_ROOT/rts/sm

where $GHC_ROOT would tell cabal where to find the ghc source directory in the file system.  I tried giving a relative path (which as expected does not work), giving the following warning:

Warning: 'include-dirs: ../../rts' is a relative path outside of the source

tree. This will not work when generating a tarball with 'sdist'.


I can give an absolute path for my machine and everything compiles just fine, but this is obviously not portable.  Any help would be much appreciated.


-Matt