on cf47310 help sign in
Idris-dev/src/IRTS/System.hs
76 lines 2.1 kB history raw
1{-# LANGUAGE CPP #-}
2module IRTS.System(getDataFileName, getDataDir, getTargetDir,getCC,getLibFlags,getIdrisLibDir,
3 getIncFlags, getEnvFlags, getMvn,getExecutablePom, version) where
5import Util.System
6import Data.List.Split
8import Control.Applicative ((<$>))
9import Data.Maybe (fromMaybe)
10import System.FilePath ((</>), addTrailingPathSeparator)
11import System.Environment
13#ifdef FREESTANDING
14import Target_idris
15import Paths_idris (version)
16#else
17import Paths_idris
18#endif
20getCC :: IO String
21getCC = fromMaybe "gcc" <$> environment "IDRIS_CC"
23getEnvFlags :: IO [String]
24getEnvFlags = do flags <- environment "IDRIS_CFLAGS"
25 case flags of
26 Nothing -> return $ []
27 Just s -> return $ splitOn " " s
29mvnCommand :: String
30#ifdef mingw32_HOST_OS
31mvnCommand = "mvn.bat"
32#else
33mvnCommand = "mvn"
34#endif
36getMvn :: IO String
37getMvn = fromMaybe mvnCommand <$> environment "IDRIS_MVN"
39environment :: String -> IO (Maybe String)
40environment x = catchIO (do e <- getEnv x
41 return (Just e))
42 (\_ -> return Nothing)
44getTargetDir :: IO String
45getTargetDir = environment "TARGET" >>= maybe getDataDir return
47#if defined(FREEBSD) || defined(DRAGONFLY)
48extraLib = ["-L/usr/local/lib"]
49#else
50extraLib = []
51#endif
53#ifdef IDRIS_GMP
54gmpLib = ["-lgmp"]
55#else
56gmpLib = []
57#endif
59getLibFlags = do dir <- getDataDir
60 return $ ["-L" ++ (dir </> "rts"),
61 "-lidris_rts"] ++ extraLib ++ gmpLib ++ ["-lpthread"]
63getIdrisLibDir = do libPath <- environment "IDRIS_LIBRARY_PATH"
64 dir <- maybe getDataDir return libPath
65 return $ addTrailingPathSeparator dir
67#if defined(FREEBSD) || defined(DRAGONFLY)
68extraInclude = ["-I/usr/local/include"]
69#else
70extraInclude = []
71#endif
72getIncFlags = do dir <- getDataDir
73 return $ ("-I" ++ dir </> "rts") : extraInclude
75getExecutablePom = do dir <- getDataDir
76 return $ dir </> "java" </> "executable_pom.xml"