bitset-1.4.2: Setup.hs
#!/usr/bin/env runhaskell
{-# LANGUAGE NamedFieldPuns #-}
{-# OPTIONS_GHC -Wall -Werror #-}
import System.Directory (removeFile)
import System.FilePath ((</>))
import Distribution.PackageDescription (PackageDescription)
import Distribution.Simple (UserHooks(..),
defaultMainWithHooks, simpleUserHooks)
import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..))
import Distribution.Simple.Program (gccProgram, lookupProgram, runProgram)
import Distribution.Simple.Setup (BuildFlags)
import Distribution.Simple.Utils (die, rawSystemStdout, writeFileAtomic)
import Distribution.Verbosity (silent)
main :: IO ()
main = defaultMainWithHooks
simpleUserHooks { buildHook = mkDerivedGmpConstants }
where
mkDerivedGmpConstants :: PackageDescription
-> LocalBuildInfo
-> UserHooks
-> BuildFlags
-> IO ()
mkDerivedGmpConstants pkg_descr lbi userHooks flags =
case lookupProgram gccProgram (withPrograms lbi) of
Just gcc ->
let path = "src" </> "mkDerivedGmpConstants" in do
runProgram silent gcc
["bin" </> "mkDerivedGmpConstants.c", "-o", path]
output <- rawSystemStdout silent path []
writeFileAtomic ("cbits" </> "GmpDerivedConstants.h") output
removeFile path
buildHook simpleUserHooks pkg_descr lbi userHooks flags
Nothing -> die "Failed to find GCC!"