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