X-Git-Url: http://git.megacz.com/?p=ghc-prim.git;a=blobdiff_plain;f=Setup.hs;h=5e736ab6ee099992b92311fbe54e24bac0405d37;hp=03223632a19f13258f82b885b9e83a329a7341c5;hb=HEAD;hpb=b06a625e0b602a5c0a6f67d1b7b6b1666b2eeb7a diff --git a/Setup.hs b/Setup.hs index 0322363..5e736ab 100644 --- a/Setup.hs +++ b/Setup.hs @@ -9,13 +9,13 @@ import Data.Maybe import Distribution.PackageDescription import Distribution.Simple import Distribution.Simple.LocalBuildInfo +import Distribution.Simple.Program import Distribution.Simple.Utils import Distribution.Text import System.Cmd import System.FilePath import System.Exit import System.Directory -import Control.Exception (try) main :: IO () main = do let hooks = simpleUserHooks { @@ -25,8 +25,9 @@ main = do let hooks = simpleUserHooks { $ buildHook simpleUserHooks, makefileHook = build_primitive_sources $ makefileHook simpleUserHooks, - haddockHook = build_primitive_sources - $ haddockHook simpleUserHooks } + haddockHook = addPrimModuleForHaddock + $ build_primitive_sources + $ haddockHook simpleUserHooks } defaultMainWithHooks hooks type Hook a = PackageDescription -> LocalBuildInfo -> UserHooks -> a -> IO () @@ -40,6 +41,13 @@ addPrimModule f pd lbi uhs x = lbi' = lbi { localPkgDescr = lpd } f pd' lbi' uhs x +addPrimModuleForHaddock :: Hook a -> Hook a +addPrimModuleForHaddock f pd lbi uhs x = + do let pc = withPrograms lbi + pc' = userSpecifyArgs "haddock" ["GHC/Prim.hs"] pc + lbi' = lbi { withPrograms = pc' } + f pd lbi' uhs x + addPrimModuleToPD :: PackageDescription -> PackageDescription addPrimModuleToPD pd = case library pd of @@ -76,5 +84,7 @@ maybeUpdateFile source target = do r <- rawSystem "cmp" ["-s" {-quiet-}, source, target] case r of ExitSuccess -> removeFile source - ExitFailure _ -> do try (removeFile target); renameFile source target + ExitFailure _ -> do exists <- doesFileExist target + when exists $ removeFile target + renameFile source target