From: Ross Paterson Date: Mon, 4 Jun 2007 11:59:35 +0000 (+0000) Subject: --configure-option and --ghc-option are now provided by Cabal X-Git-Tag: 2007-09-13~13 X-Git-Url: http://git.megacz.com/?p=haskell-directory.git;a=commitdiff_plain;h=904ec18c744c63356da922cda31070827920836c --configure-option and --ghc-option are now provided by Cabal --- diff --git a/Setup.hs b/Setup.hs index 14b3bc1..7cf9bfd 100644 --- a/Setup.hs +++ b/Setup.hs @@ -1,58 +1,6 @@ - module Main (main) where -import Data.List import Distribution.Simple -import Distribution.PackageDescription -import Distribution.Setup -import Distribution.Simple.LocalBuildInfo -import System.Environment main :: IO () -main = do args <- getArgs - let (ghcArgs, args') = extractGhcArgs args - (_, args'') = extractConfigureArgs args' - hooks = defaultUserHooks { - buildHook = add_ghc_options ghcArgs - $ buildHook defaultUserHooks } - withArgs args'' $ defaultMainWithHooks hooks - -extractGhcArgs :: [String] -> ([String], [String]) -extractGhcArgs = extractPrefixArgs "--ghc-option=" - -extractConfigureArgs :: [String] -> ([String], [String]) -extractConfigureArgs = extractPrefixArgs "--configure-option=" - -extractPrefixArgs :: String -> [String] -> ([String], [String]) -extractPrefixArgs the_prefix args - = let f [] = ([], []) - f (x:xs) = case f xs of - (wantedArgs, otherArgs) -> - case removePrefix the_prefix x of - Just wantedArg -> - (wantedArg:wantedArgs, otherArgs) - Nothing -> - (wantedArgs, x:otherArgs) - in f args - -removePrefix :: String -> String -> Maybe String -removePrefix "" ys = Just ys -removePrefix _ "" = Nothing -removePrefix (x:xs) (y:ys) - | x == y = removePrefix xs ys - | otherwise = Nothing - -type Hook a = PackageDescription -> LocalBuildInfo -> UserHooks -> a -> IO () - -add_ghc_options :: [String] -> Hook a -> Hook a -add_ghc_options args f pd lbi uhs x - = do let lib' = case library pd of - Just lib -> - let bi = libBuildInfo lib - opts = options bi ++ [(GHC, args)] - bi' = bi { options = opts } - in lib { libBuildInfo = bi' } - Nothing -> error "Expected a library" - pd' = pd { library = Just lib' } - f pd' lbi uhs x - +main = defaultMainWithHooks defaultUserHooks