benmachine edited this page Mar 30, 2013 · 1 revision

Imported from Trac wiki; be wary of outdated information or markup mishaps.


Cabal does not currently do any of its own dependency tracking, it relies on ghc --make for this. Many desirable features in Cabal rely on this capability.

Saizan's GSoC project aimed to create a dependency framework for use in Cabal. This page describes the plan for integration.


Instead of directly integrating the new framework into Cabal the plan is to develop things in an external usable hbuild tool and eventually to completely replace the building code in Cabal with this new system.

Development milestones

hmake / ghc --make

The first major milestone is to make a tool with the use case and rough feature set of hmake or ghc --make (though not with all of ghc's command line options!), supporting parallel builds. Specifically that means cases like:

$ hbuild -j 4 -i src Foo.Bar Foo.Baz

and it will look for source files to compile those modules, including chasing pre-processors. But essentially zero configuration. No equivalent of the .cabal file.


The next major milestone should be to integrate configuration into the dependency framework. This involves getting configuration from the .cabal file which provides extra targets like libraries and executables. It also involves making sure things are rebuilt as appropriate when configuration setting change.


The code is available via darcs and can be built using cabal.

darcs get --partial http://code.haskell.org/hbuild/