on d280640 help sign in
Idris-dev/src/IRTS/System.hs
53 lines 1.4 kB history raw
1{-# LANGUAGE CPP #-}
2module IRTS.System(getDataFileName, getDataDir, getTargetDir,getCC,getLibFlags,getIdrisLibDir,
3 getIncFlags, getEnvFlags, version) where
5import Data.List.Split
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
19overrideDataDirWith :: String -> IO FilePath
20overrideDataDirWith envVar = do envValue <- lookupEnv envVar
21 maybe getDataDir return envValue
23getCC :: IO String
24getCC = fromMaybe "gcc" <$> lookupEnv "IDRIS_CC"
26getEnvFlags :: IO [String]
27getEnvFlags = maybe [] (splitOn " ") <$> lookupEnv "IDRIS_CFLAGS"
29getTargetDir :: IO String
30getTargetDir = overrideDataDirWith "TARGET"
32#if defined(FREEBSD) || defined(DRAGONFLY)
33extraLib = ["-L/usr/local/lib"]
34extraInclude = ["-I/usr/local/include"]
35#else
36extraLib = []
37extraInclude = []
38#endif
40#ifdef IDRIS_GMP
41gmpLib = ["-lgmp"]
42#else
43gmpLib = []
44#endif
46getLibFlags = do dir <- getDataDir
47 return $ ["-L" ++ (dir </> "rts"),
48 "-lidris_rts"] ++ extraLib ++ gmpLib ++ ["-lpthread"]
50getIdrisLibDir = addTrailingPathSeparator <$> overrideDataDirWith "IDRIS_LIBRARY_PATH"
52getIncFlags = do dir <- getDataDir
53 return $ ("-I" ++ dir </> "rts") : extraInclude