From 467e0c4d99b31d8467b4dd96fd863b9fab139299 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Sat, 17 May 2008 01:58:52 +0000 Subject: [PATCH] Move the register-inplace special-case stuff into the ghc-prim package --- Setup.hs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Setup.hs b/Setup.hs index d6836e4..3c0051d 100644 --- a/Setup.hs +++ b/Setup.hs @@ -17,6 +17,8 @@ import Control.Exception (try) main :: IO () main = do let hooks = defaultUserHooks { + regHook = addPrimModule + $ regHook defaultUserHooks, buildHook = build_primitive_sources $ buildHook defaultUserHooks, makefileHook = build_primitive_sources @@ -27,6 +29,25 @@ main = do let hooks = defaultUserHooks { type Hook a = PackageDescription -> LocalBuildInfo -> UserHooks -> a -> IO () +addPrimModule :: Hook a -> Hook a +addPrimModule f pd lbi uhs x = + do let -- I'm not sure which one of these we actually need to change. + -- It seems bad that there are two. + pd' = addPrimModuleToPD pd + lpd = addPrimModuleToPD (localPkgDescr lbi) + lbi' = lbi { localPkgDescr = lpd } + f pd' lbi' uhs x + +addPrimModuleToPD :: PackageDescription -> PackageDescription +addPrimModuleToPD pd = + case library pd of + Just lib -> + let ems = "GHC.Prim" : exposedModules lib + lib' = lib { exposedModules = ems } + in pd { library = Just lib' } + Nothing -> + error "Expected a library, but none found" + build_primitive_sources :: Hook a -> Hook a build_primitive_sources f pd lbi uhs x = do when (compilerFlavor (compiler lbi) == GHC) $ do -- 1.7.10.4