hubris-0.0.3: Setup.hs
{-# LANGUAGE NamedFieldPuns #-}
import Distribution.Simple
import Distribution.Simple.Setup
import Distribution.Simple.LocalBuildInfo
import Distribution.Simple.Utils
import qualified Distribution.PackageDescription as D
import Distribution.Verbosity
import System.Directory
import System.Process
import Maybe
import qualified Distribution.ModuleName as Modname
main = do
includeDir <- readProcess "ruby" ["-rrbconfig", "-e", "print RbConfig::CONFIG['archdir']"] ""
defaultMainWithHooks (hooks includeDir)
hooks includeDir = simpleUserHooks
{
preConf = \arg flags -> do
-- probably a nicer way of getting that directory...
createDirectoryIfMissing True "dist/build/autogen"
-- FILTHY HACK
writeFile "dist/build/autogen/Includes.hs" ("module Includes where\nextraIncludeDirs=[\"" ++ includeDir++"\"]") -- show (configExtraIncludeDirs flags))
return D.emptyHookedBuildInfo,
confHook = \ info flags -> (confHook simpleUserHooks) info (flags { configSharedLib = Flag True, configExtraIncludeDirs = [includeDir] }),
sDistHook = \ pkg lbi hooks flags -> let lib = fromJust $ D.library pkg
modules = filter (/= Modname.fromString "Includes") $ D.exposedModules lib
pkg' = pkg { D.library = Just $ lib { D.exposedModules = modules } }
in sDistHook simpleUserHooks pkg' lbi hooks flags
}