X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Setup.hs;h=7cf9bfd7caf9fa164c3f88420e5d42fcdfce7c83;hb=dc3ea0d9917409c2f1cc90a4a8d629b3ee4d4ba5;hp=79c60e9024ee78e476bead1fd64e194eb510feee;hpb=f127e5aecaf1890bca3b2ef4aad6dac6b0aefe9a;p=ghc-base.git diff --git a/Setup.hs b/Setup.hs index 79c60e9..7cf9bfd 100644 --- a/Setup.hs +++ b/Setup.hs @@ -1,58 +1,6 @@ -{- -We need to do some ugly hacks here as base mix of portable and -unportable stuff, as well as home to some GHC magic. --} - module Main (main) where -import Control.Monad -import Data.List -import Distribution.PackageDescription import Distribution.Simple -import Distribution.Simple.LocalBuildInfo -import Distribution.Simple.Utils -import System.Cmd -import System.FilePath main :: IO () -main = do let hooks = defaultUserHooks { - buildHook = build_primitive_sources - $ filter_modules_hook - $ buildHook defaultUserHooks, - makefileHook = build_primitive_sources - $ filter_modules_hook - $ makefileHook defaultUserHooks, - haddockHook = build_primitive_sources - $ filter_modules_hook - $ haddockHook defaultUserHooks, - instHook = filter_modules_hook - $ instHook defaultUserHooks } - defaultMainWithHooks hooks - -type Hook a = PackageDescription -> LocalBuildInfo -> UserHooks -> a -> IO () - -build_primitive_sources :: Hook a -> Hook a -build_primitive_sources f pd lbi uhs x - = do when (compilerFlavor (compiler lbi) == GHC) $ do - let genprimopcode = joinPath ["..", "..", "utils", - "genprimopcode", "genprimopcode"] - primops = joinPath ["..", "..", "compiler", "prelude", - "primops.txt"] - primhs = joinPath ["GHC", "Prim.hs"] - primopwrappers = joinPath ["GHC", "PrimopWrappers.hs"] - maybeExit $ system (genprimopcode ++ " --make-haskell-source < " - ++ primops ++ " > " ++ primhs) - maybeExit $ system (genprimopcode ++ " --make-haskell-wrappers < " - ++ primops ++ " > " ++ primopwrappers) - f pd lbi uhs x - -filter_modules_hook :: Hook a -> Hook a -filter_modules_hook f pd lbi uhs x - = let lib' = case library pd of - Just lib -> - let ems = filter ("GHC.Prim" /=) (exposedModules lib) - in lib { exposedModules = ems } - Nothing -> error "Expected a library" - pd' = pd { library = Just lib' } - in f pd' lbi uhs x - +main = defaultMainWithHooks defaultUserHooks