X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=libraries%2Fcabal-bin.hs;h=ed72a1e6e78cbcf3428a0643effd0c24480c45fa;hb=d92b83b91324d24a8caf243a1eedd070cc455b6d;hp=85341c299de60894cc03b6c92808d14cd4fbb162;hpb=e47ddd4edb7e57b5a93a5fdd00ce18809010ee33;p=ghc-hetmet.git diff --git a/libraries/cabal-bin.hs b/libraries/cabal-bin.hs index 85341c2..ed72a1e 100644 --- a/libraries/cabal-bin.hs +++ b/libraries/cabal-bin.hs @@ -1,6 +1,7 @@ -module Cabal (main) where +module Main (main) where +import Control.Monad import Data.Maybe import Distribution.PackageDescription import Distribution.PackageDescription.Parse @@ -19,9 +20,16 @@ setupProg = "./Setup" main :: IO () main = do + unprocessedArgs <- getArgs let verbosity = verbose + case unprocessedArgs of + ghc : packageConf : args -> + doit verbosity ghc packageConf args + _ -> die "Bad args" + +doit :: Verbosity -> FilePath -> FilePath -> [String] -> IO () +doit verbosity ghc packageConf args = do exists <- doesFileExist setupProg - args <- getArgs if exists then rawSystemExit verbosity setupProg args else do gpdFile <- defaultPackageDesc verbosity @@ -34,5 +42,18 @@ main = do _ | packageName pd == PackageName "Cabal" -> -- Cabal is special...*sigh* Simple.defaultMainArgs args - | otherwise -> die "cabal: Don't know what to do!" + | otherwise -> runSetup verbosity ghc packageConf args + +runSetup :: Verbosity -> FilePath -> FilePath -> [String] -> IO () +runSetup verbosity ghc packageConf args = do + -- Don't bother building Setup if we are cleaning. If we need to + -- build Setup in order to build, and Setup isn't built already, + -- then there shouldn't be anything to clean anyway. + unless cleaning $ + rawSystemExit verbosity ghc ["-package-conf", packageConf, + "--make", "Setup", "-o", "Setup"] + rawSystemExit verbosity "./Setup" args + where cleaning = case args of + "clean" : _ -> True + _ -> False