on 5259edc help sign in
Idris-dev/src/IRTS/System.hs
72 lines 1.9 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 = maybe [] (splitOn " ") <$> environment "IDRIS_CFLAGS"
26mvnCommand :: String
27#ifdef mingw32_HOST_OS
28mvnCommand = "mvn.bat"
29#else
30mvnCommand = "mvn"
31#endif
33getMvn :: IO String
34getMvn = fromMaybe mvnCommand <$> environment "IDRIS_MVN"
36environment :: String -> IO (Maybe String)
37environment x = catchIO (Just <$> getEnv x)
38 (\_ -> return Nothing)
40getTargetDir :: IO String
41getTargetDir = environment "TARGET" >>= maybe getDataDir return
43#if defined(FREEBSD) || defined(DRAGONFLY)
44extraLib = ["-L/usr/local/lib"]
45#else
46extraLib = []
47#endif
49#ifdef IDRIS_GMP
50gmpLib = ["-lgmp"]
51#else
52gmpLib = []
53#endif
55getLibFlags = do dir <- getDataDir
56 return $ ["-L" ++ (dir </> "rts"),
57 "-lidris_rts"] ++ extraLib ++ gmpLib ++ ["-lpthread"]
59getIdrisLibDir = do libPath <- environment "IDRIS_LIBRARY_PATH"
60 dir <- maybe getDataDir return libPath
61 return $ addTrailingPathSeparator dir
63#if defined(FREEBSD) || defined(DRAGONFLY)
64extraInclude = ["-I/usr/local/include"]
65#else
66extraInclude = []
67#endif
68getIncFlags = do dir <- getDataDir
69 return $ ("-I" ++ dir </> "rts") : extraInclude
71getExecutablePom = do dir <- getDataDir
72 return $ dir </> "java" </> "executable_pom.xml"