+ | 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