#!/usr/local/bin/runhaskell
\begin{code}
import Distribution.Simple
import Distribution.Verbosity
import Distribution.Simple.LocalBuildInfo
import Distribution.PackageDescription
import Distribution.Simple.GHC as GHC
import Distribution.Simple.PreProcess
main = defaultMainWithHooks simpleUserHooks {runTests = buildTestProg}
buildTestProg :: [String] -> Bool -> PackageDescription -> LocalBuildInfo -> IO ()
buildTestProg _ _ pkgDescr lbi = do
let newPkg = withTest pkgDescr
preprocessSources newPkg lbi False normal [("hsc",ppHsc2hs)]
GHC.build (withTest pkgDescr) lbi normal
withTest :: PackageDescription -> PackageDescription
withTest pkg@PackageDescription {library = Just lib}
= pkg {executables = [testProg],
library = Nothing}
where
testProg = Executable {exeName = "Test",
modulePath = "examples/Test.hs",
buildInfo = alterBuildInfo (libBuildInfo lib)}
alterBuildInfo :: BuildInfo -> BuildInfo
alterBuildInfo bi = bi {options = (GHC,["-threaded"]) : options bi}
\end{code}