Title Cabal 'make-like' dependency framework
Student Andrea Vezzosi
Mentor Duncan Coutts
Abstract
This project intends to produce a working prototype of a make-style dependency analysis system to use in Cabal.

Cabal is working well as both a build and a packaging system for the community as it has supported the growing number of haskell libraries that we see on HackageDB, but it's limited in various ways because it relies on the compiler or hmake to sort out dependencies and build haskell modules:

   * No support for preprocessor chaining, so that one file could be preprocessed by more than one tool. This is blocking the cabalization of gtk2hs.
   * Sources are preprocessed without considering possibile dependencies, e.g. cpp #include or c2hs {import .. }.
   * The need to include and keep updated the Other-Modules field and the impossibility to automatically check that it's correct: forgetting a module means that we install a broken library and create a package with missing sources when using sdist.
   * Other issues are linked from the trac ticket: http://hackage.haskell.org/trac/hackage/ticket/15.

So the aim is to implement such a system as an extensible library and prove its usefulness in two isolated cases before using it in all of Cabal:

   * Initial YHC Cabal support.
   * Respect dependencies when preprocessing sources.

This will allow to test the system inside Cabal without destabilizing the support for other compilers, and provide immediate improvements to the library.