module Clr.Inline.Cabal (ensureFSharp, ensureCSharp) where
import Clr.Host.Config
import Clr.Inline.Config
import Distribution.Simple
import Distribution.Simple.LocalBuildInfo
import Distribution.Simple.Program
import Distribution.Verbosity as Verbosity
ensureFSharp :: UserHooks -> UserHooks
ensureFSharp userHooks =
userHooks {confHook = check fsharpCompiler (confHook userHooks)}
ensureCSharp :: UserHooks -> UserHooks
ensureCSharp userHooks =
userHooks {confHook = check csharpCompiler (confHook userHooks)}
fsharpCompiler, csharpCompiler :: Program
csharpCompiler = simpleProgram (configCSharpPath defaultConfig)
fsharpCompiler = simpleProgram (configFSharpPath defaultConfig)
check pgm base gh cf = do
lbi <- base gh cf
_ <- requireProgram Verbosity.normal pgm (withPrograms lbi)
return lbi