packages feed

morfeusz-0.4.1: Setup.hs

import Control.Monad (forM_)
import System.FilePath
import System.Directory
import System.Info (os)
import Distribution.Simple
import Distribution.Simple.Setup
import qualified Distribution.Simple.Configure as C

import Setup.Configure

morfPath :: String
morfPath = "libmorfeusz"

morfLibSrc :: String
morfLibSrc = "libmorfeusz.so"

morfLibs :: [String]
morfLibs = ["libmorfeusz.so.0", "libmorfeusz.so"]

-- | We need to copy the libmorfeusz.so file before the configuration phase.
conf desc cfg = do
    if (null (configExtraLibDirs cfg) && os == "linux")
        then do
            path <- sharedPath desc cfg
            createDirectoryIfMissing True path
            forM_ morfLibs $ \lib -> do
                copyFile (morfPath </> morfLibSrc) (path </> lib)
            C.configure desc $ cfg { configExtraLibDirs = [path] }
        else do
            C.configure desc cfg

main :: IO ()
main = defaultMainWithHooks $ simpleUserHooks { confHook = conf }