Add GHC.Prim to exposedModules in the Haddock 0.x hook
authorDavid Waern <david.waern@gmail.com>
Sun, 9 Dec 2007 17:39:31 +0000 (17:39 +0000)
committerDavid Waern <david.waern@gmail.com>
Sun, 9 Dec 2007 17:39:31 +0000 (17:39 +0000)
Please merge to the stable branch

Setup.hs

index 2ad48a4..30d4af1 100644 (file)
--- a/Setup.hs
+++ b/Setup.hs
@@ -11,6 +11,8 @@ import Distribution.PackageDescription
 import Distribution.Simple
 import Distribution.Simple.LocalBuildInfo
 import Distribution.Simple.Utils
+import Distribution.Simple.Program
+import Distribution.Version
 import System.Cmd
 import System.FilePath
 import System.Exit
@@ -24,7 +26,8 @@ main = do let hooks = defaultUserHooks {
                   makefileHook = build_primitive_sources
                                $ makefileHook defaultUserHooks,
                   haddockHook = build_primitive_sources
-                               $ haddockHook defaultUserHooks }
+                              $ add_prim
+                              $ haddockHook defaultUserHooks }
           defaultMainWithHooks hooks
 
 type Hook a = PackageDescription -> LocalBuildInfo -> UserHooks -> a -> IO ()
@@ -48,6 +51,23 @@ build_primitive_sources f pd lbi uhs x
           maybeUpdateFile primopwrappers_tmp primopwrappers
       f pd lbi uhs x
 
+add_prim_to_pd pd = pd { library = Just lib' }
+  where
+    lib' = case library pd of
+      Just lib -> lib { exposedModules = "GHC.Prim" : exposedModules lib }
+      Nothing  -> error "Expected a library"
+
+add_prim :: Hook a -> Hook a
+add_prim f pd lbi uhs x = do
+  let mbHaddockProg = lookupProgram haddockProgram (withPrograms lbi)
+  case mbHaddockProg of
+    Nothing -> f pd lbi uhs x
+    Just haddockProg -> do
+      let
+        Just version = programVersion haddockProg
+        pd' = if version < Version [2,0] [] then add_prim_to_pd pd else pd
+      f pd' lbi uhs x
+
 -- Replace a file only if the new version is different from the old.
 -- This prevents make from doing unnecessary work after we run 'setup makefile'
 maybeUpdateFile :: FilePath -> FilePath -> IO ()