{-# Language PatternGuards #-} module CabalCargs.Format ( format ) where import CabalCargs.CompilerArgs (CompilerArgs(..)) import CabalCargs.Formatting (Formatting(..)) import Data.Maybe (maybeToList) import Data.List (foldl') format :: Formatting -> CompilerArgs -> [String] format :: Formatting -> CompilerArgs -> [String] format Formatting Ghc CompilerArgs cargs = [[String]] -> [String] forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [ [String] -> [String] formatHsSourceDirs ([String] -> [String]) -> [String] -> [String] forall a b. (a -> b) -> a -> b $ CompilerArgs -> [String] hsSourceDirs CompilerArgs cargs , CompilerArgs -> [String] ghcOptions CompilerArgs cargs , (String -> String) -> [String] -> [String] forall a b. (a -> b) -> [a] -> [b] map (String "-X" String -> String -> String forall a. [a] -> [a] -> [a] ++) (CompilerArgs -> [String] defaultExtensions CompilerArgs cargs) , (String -> String) -> [String] -> [String] forall a b. (a -> b) -> [a] -> [b] map (String "-X" String -> String -> String forall a. [a] -> [a] -> [a] ++) (CompilerArgs -> [String] defaultLanguage CompilerArgs cargs) , (String -> String) -> [String] -> [String] forall a b. (a -> b) -> [a] -> [b] map (String "-optP" String -> String -> String forall a. [a] -> [a] -> [a] ++) (CompilerArgs -> [String] cppOptions CompilerArgs cargs) , (String -> String) -> [String] -> [String] forall a b. (a -> b) -> [a] -> [b] map (String "-optc" String -> String -> String forall a. [a] -> [a] -> [a] ++) (CompilerArgs -> [String] ccOptions CompilerArgs cargs) , (String -> String) -> [String] -> [String] forall a b. (a -> b) -> [a] -> [b] map (String "-L" String -> String -> String forall a. [a] -> [a] -> [a] ++) (CompilerArgs -> [String] extraLibDirs CompilerArgs cargs) , (String -> String) -> [String] -> [String] forall a b. (a -> b) -> [a] -> [b] map (String "-l" String -> String -> String forall a. [a] -> [a] -> [a] ++) (CompilerArgs -> [String] extraLibraries CompilerArgs cargs) , [String] -> [String] formatIncludeDirs ([String] -> [String]) -> [String] -> [String] forall a b. (a -> b) -> a -> b $ CompilerArgs -> [String] includeDirs CompilerArgs cargs , [String] -> [String] forall {t :: * -> *}. Foldable t => t String -> [String] formatIncludes ([String] -> [String]) -> [String] -> [String] forall a b. (a -> b) -> a -> b $ CompilerArgs -> [String] includes CompilerArgs cargs , [String] -> [String] formatBuildDepends ([String] -> [String]) -> [String] -> [String] forall a b. (a -> b) -> a -> b $ CompilerArgs -> [String] buildDepends CompilerArgs cargs , [String] -> (String -> [String]) -> Maybe String -> [String] forall b a. b -> (a -> b) -> Maybe a -> b maybe [] (\String db -> [String "-clear-package-db", String "-global-package-db", String "-package-db=" String -> String -> String forall a. [a] -> [a] -> [a] ++ String db]) (CompilerArgs -> Maybe String packageDB CompilerArgs cargs) , [String] -> [String] formatHsSourceDirs ([String] -> [String]) -> [String] -> [String] forall a b. (a -> b) -> a -> b $ CompilerArgs -> [String] autogenHsSourceDirs CompilerArgs cargs , [String] -> [String] formatIncludeDirs ([String] -> [String]) -> [String] -> [String] forall a b. (a -> b) -> a -> b $ CompilerArgs -> [String] autogenIncludeDirs CompilerArgs cargs , [String] -> [String] forall {t :: * -> *}. Foldable t => t String -> [String] formatIncludes ([String] -> [String]) -> [String] -> [String] forall a b. (a -> b) -> a -> b $ CompilerArgs -> [String] autogenIncludes CompilerArgs cargs ] where formatBuildDepends :: [String] -> [String] formatBuildDepends [] = [] formatBuildDepends [String] deps = (String -> String) -> [String] -> [String] forall a b. (a -> b) -> [a] -> [b] map (String "-package=" String -> String -> String forall a. [a] -> [a] -> [a] ++) [String] deps formatHsSourceDirs :: [String] -> [String] formatHsSourceDirs = (String -> String) -> [String] -> [String] forall a b. (a -> b) -> [a] -> [b] map (String "-i" String -> String -> String forall a. [a] -> [a] -> [a] ++) formatIncludeDirs :: [String] -> [String] formatIncludeDirs = (String -> String) -> [String] -> [String] forall a b. (a -> b) -> [a] -> [b] map (String "-I" String -> String -> String forall a. [a] -> [a] -> [a] ++) formatIncludes :: t String -> [String] formatIncludes t String incs = [String] -> [String] forall a. [a] -> [a] reverse ([String] -> [String]) -> [String] -> [String] forall a b. (a -> b) -> a -> b $ ([String] -> String -> [String]) -> [String] -> t String -> [String] forall b a. (b -> a -> b) -> b -> t a -> b forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl' [String] -> String -> [String] addInclude [] t String incs where addInclude :: [String] -> String -> [String] addInclude [String] incs String inc = (String "-optP" String -> String -> String forall a. [a] -> [a] -> [a] ++ String inc) String -> [String] -> [String] forall a. a -> [a] -> [a] : (String "-optP-include") String -> [String] -> [String] forall a. a -> [a] -> [a] : [String] incs format Formatting Hdevtools CompilerArgs cargs = ((String -> String) -> [String] -> [String] forall a b. (a -> b) -> [a] -> [b] map (String "-g" String -> String -> String forall a. [a] -> [a] -> [a] ++) (Formatting -> CompilerArgs -> [String] format Formatting Ghc CompilerArgs cargs)) [String] -> [String] -> [String] forall a. [a] -> [a] -> [a] ++ [String] socket where socket :: [String] socket = [String] -> (String -> [String]) -> Maybe String -> [String] forall b a. b -> (a -> b) -> Maybe a -> b maybe [] (\String s -> [String "--socket=" String -> String -> String forall a. [a] -> [a] -> [a] ++ String s]) (CompilerArgs -> Maybe String hdevtoolsSocket CompilerArgs cargs) format Formatting Pure CompilerArgs cargs = [[String]] -> [String] forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [ CompilerArgs -> [String] hsSourceDirs CompilerArgs cargs , CompilerArgs -> [String] ghcOptions CompilerArgs cargs , CompilerArgs -> [String] defaultExtensions CompilerArgs cargs , CompilerArgs -> [String] defaultLanguage CompilerArgs cargs , CompilerArgs -> [String] cppOptions CompilerArgs cargs , CompilerArgs -> [String] cSources CompilerArgs cargs , CompilerArgs -> [String] ccOptions CompilerArgs cargs , CompilerArgs -> [String] extraLibDirs CompilerArgs cargs , CompilerArgs -> [String] extraLibraries CompilerArgs cargs , CompilerArgs -> [String] ldOptions CompilerArgs cargs , CompilerArgs -> [String] includeDirs CompilerArgs cargs , CompilerArgs -> [String] includes CompilerArgs cargs , CompilerArgs -> [String] buildDepends CompilerArgs cargs , Maybe String -> [String] forall a. Maybe a -> [a] maybeToList (Maybe String -> [String]) -> Maybe String -> [String] forall a b. (a -> b) -> a -> b $ CompilerArgs -> Maybe String packageDB CompilerArgs cargs , Maybe String -> [String] forall a. Maybe a -> [a] maybeToList (Maybe String -> [String]) -> Maybe String -> [String] forall a b. (a -> b) -> a -> b $ CompilerArgs -> Maybe String rootDir CompilerArgs cargs , CompilerArgs -> [String] autogenHsSourceDirs CompilerArgs cargs , CompilerArgs -> [String] autogenIncludeDirs CompilerArgs cargs , CompilerArgs -> [String] autogenIncludes CompilerArgs cargs , Maybe String -> [String] forall a. Maybe a -> [a] maybeToList (Maybe String -> [String]) -> Maybe String -> [String] forall a b. (a -> b) -> a -> b $ CompilerArgs -> Maybe String hdevtoolsSocket CompilerArgs cargs ]