import Distribution.Simple
import Distribution.Simple.Setup
import Distribution.Simple.Program
import Distribution.Simple.Program.Types
import Distribution.Simple.LocalBuildInfo
import Distribution.PackageDescription
cc_flags = ["-stdlib=libc++", "-o", "cbits/hsstring.o", "-c", "cbits/hsstring.cc"]
main :: IO ()
main = defaultMainWithHooks simpleUserHooks {
buildHook = buildCPlusPlus
}
buildCPlusPlus :: PackageDescription -> LocalBuildInfo -> UserHooks -> BuildFlags -> IO ()
buildCPlusPlus pkg buildInfo hooks flags = do
let verb = fromFlag (buildVerbosity flags)
clang <- findProgramLocation verb "clang++"
let clang' = case clang of
Just x -> x
Nothing -> error "clang++ not on path"
runProgram verb (simpleConfiguredProgram "clang++" (FoundOnSystem clang')) cc_flags
buildHook simpleUserHooks pkg buildInfo hooks flags