{-# LANGUAGE CPP #-} module IRTS.System(getTargetDir,getCC,getLibFlags,getIdrisLibDir, getIncFlags,getMvn,getExecutablePom) where import Util.System import Control.Applicative ((<$>)) import Data.Maybe (fromMaybe) import System.FilePath ((), addTrailingPathSeparator) import System.Environment import Paths_idris getCC :: IO String getCC = fromMaybe "gcc" <$> environment "IDRIS_CC" mvnCommand :: String #ifdef mingw32_HOST_OS mvnCommand = "mvn.bat" #else mvnCommand = "mvn" #endif getMvn :: IO String getMvn = fromMaybe mvnCommand <$> environment "IDRIS_MVN" environment :: String -> IO (Maybe String) environment x = catchIO (do e <- getEnv x return (Just e)) (\_ -> return Nothing) getTargetDir :: IO String getTargetDir = environment "TARGET" >>= maybe getDataDir return #if defined(FREEBSD) || defined(DRAGONFLY) extraLib = " -L/usr/local/lib" #else extraLib = "" #endif #ifdef IDRIS_GMP gmpLib = " -lgmp" #else gmpLib = "" #endif getLibFlags = do dir <- getDataDir return $ "-L" ++ (dir "rts") ++ " -lidris_rts" ++ extraLib ++ gmpLib ++ " -lpthread" getIdrisLibDir = do dir <- getDataDir return $ addTrailingPathSeparator dir #if defined(FREEBSD) || defined(DRAGONFLY) extraInclude = " -I/usr/local/include" #else extraInclude = "" #endif getIncFlags = do dir <- getDataDir return $ "-I" ++ dir "rts" ++ extraInclude getExecutablePom = do dir <- getDataDir return $ dir "java" "executable_pom.xml"