packages feed

sqlcipher-1.0.1.1: Setup.hs

module Main where

import Distribution.Simple
import Distribution.Simple.Setup
import Distribution.Simple.Utils       (rawSystemExit)
import Distribution.PackageDescription
import System.Directory                (doesFileExist, withCurrentDirectory)
import Control.Monad                   (unless)
import qualified Distribution.Verbosity as V


type PreSDistHook = (Args -> SDistFlags -> IO HookedBuildInfo)


updatePreSDistHook :: (PreSDistHook -> PreSDistHook) -> UserHooks -> UserHooks
updatePreSDistHook update hooks@UserHooks{ preSDist = old }  = hooks { preSDist = update old }


configureSQLCipher :: PreSDistHook -> PreSDistHook
configureSQLCipher originalHook args flags@SDistFlags{ sDistVerbosity = verbosity } = do
    withCurrentDirectory "sqlcipher" $
        unlessFileExist "sqlite3.c" $ do
            let verbosity' = fromFlagOrDefault V.normal verbosity
            rawSystemExit verbosity' "./configure" 
                [ "--disable-tcl"
                , "--enable-tempstore"
                , "CFLAGS=-DSQLITE_HAS_CODEC"
                , "LDFLAGS=-lcrypto"]
            rawSystemExit verbosity' "make" []
    originalHook args flags
  where 
    unlessFileExist filePath action = doesFileExist filePath >>= flip unless action


main :: IO ()
main = defaultMainWithHooks $ updatePreSDistHook configureSQLCipher autoconfUserHooks