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 }