See: https://github.com/evancz/Elm/issues/120
Add build-hook to Setup.hs so that elm-doc gets build and executed before library or elm exec gets built.
Add preprocessor to Elm.cabal so LoadLibraries.hs can load docs.json from the build folder instead of installed folder
Add touch to Setup.hs otherwise LoadLibraries.hs doesn't get recompiled. This is non-portable, but I can't find a portable way (see Setup.hs for details)
cabal clean && cabal install now works
(tested on ghc 7.4.1)
Move Build.hs (which builds elm-runtime.js) into a cabal build step (in compiler folder)
The elm exec and runtime should never get out of sync
Having a separate Build.hs file also causes problems when using cabal-dev
Moving elm-runtime.js into the dist/ folder also shows that it's generated (and cabal clean will remove it)
Similar for types.json (although whether this should be part of the build step, I don't know)