on abc2002 help sign in
Idris-dev/src/IRTS/System.hs
68 lines 1.7 kB history raw
1{-# LANGUAGE CPP #-}
2module IRTS.System(getDataFileName, getDataDir, getTargetDir,getCC,getLibFlags,getIdrisLibDir,
3 getIncFlags,getMvn,getExecutablePom, version) where
5import Util.System
7import Control.Applicative ((<$>))
8import Data.Maybe (fromMaybe)
9import System.FilePath ((</>), addTrailingPathSeparator)
10import System.Environment
12#ifdef FREESTANDING
13import Target_idris
14import Paths_idris (version)
15#else
16import Paths_idris
17#endif
19getCC :: IO String
20getCC = fromMaybe "gcc" <$> environment "IDRIS_CC"
22mvnCommand :: String
23#ifdef mingw32_HOST_OS
24mvnCommand = "mvn.bat"
25#else
26mvnCommand = "mvn"
27#endif
29getMvn :: IO String
30getMvn = fromMaybe mvnCommand <$> environment "IDRIS_MVN"
32environment :: String -> IO (Maybe String)
33environment x = catchIO (do e <- getEnv x
34 return (Just e))
35 (\_ -> return Nothing)
37getTargetDir :: IO String
38getTargetDir = environment "TARGET" >>= maybe getDataDir return
40#if defined(FREEBSD) || defined(DRAGONFLY)
41extraLib = " -L/usr/local/lib"
42#else
43extraLib = ""
44#endif
46#ifdef IDRIS_GMP
47gmpLib = " -lgmp"
48#else
49gmpLib = ""
50#endif
52getLibFlags = do dir <- getDataDir
53 return $ "-L" ++ (dir </> "rts") ++
54 " -lidris_rts" ++ extraLib ++ gmpLib ++ " -lpthread"
56getIdrisLibDir = do dir <- getDataDir
57 return $ addTrailingPathSeparator dir
59#if defined(FREEBSD) || defined(DRAGONFLY)
60extraInclude = " -I/usr/local/include"
61#else
62extraInclude = ""
63#endif
64getIncFlags = do dir <- getDataDir
65 return $ "-I" ++ dir </> "rts" ++ extraInclude
67getExecutablePom = do dir <- getDataDir
68 return $ dir </> "java" </> "executable_pom.xml"