@@ -7,12 +7,13 @@ Maintainer : The Idris Community.
8{-# LANGUAGE CPP #-}
8{-# LANGUAGE CPP #-}
9module IRTS.System( getDataFileName
9module IRTS.System( getDataFileName
13 , getLibFlags
11 , getLibFlags
14 , getIdrisLibDir
13 , getIdrisLibDir
15 , getIdrisDocDir
14 , getIdrisDocDir
16 , getIncFlags
17 , getIncFlags
17 , getEnvFlags
18 , getEnvFlags
@@ -32,22 +33,25 @@ import Paths_idris (version)
32import Paths_idris
33import Paths_idris
35−overrideIdrisDirWith :: String -- ^ Sub directory in `getDataDir` location.
36+getIdrisDataDir :: IO String
36− -> String -- ^ Environment variable to get new location from.
37+getIdrisDataDir = do
38−overrideIdrisDirWith fp envVar = do
39− envValue <- lookupEnv envVar
38+ envValue <- lookupEnv "TARGET"
40 case envValue of
39 case envValue of
41 Nothing -> do
40 Nothing -> do
42 ddir <- getDataDir
41 ddir <- getDataDir
43− return (ddir </> fp)
42+ return ddir
44 Just ddir -> return ddir
43 Just ddir -> return ddir
45+overrideIdrisSubDirWith :: String -- ^ Sub directory in `getDataDir` location.
46+ -> String -- ^ Environment variable to get new location from.
46−overrideIdrisLibDirWith :: String -> IO FilePath
47+ -> IO FilePath
47−overrideIdrisLibDirWith = overrideIdrisDirWith "libs"
48+overrideIdrisSubDirWith fp envVar = do
48−
49+ envValue <- lookupEnv envVar
49−overrideIdrisDocDirWith :: String -> IO FilePath
50+ case envValue of
50−overrideIdrisDocDirWith = overrideIdrisDirWith "docs"
51+ Nothing -> do
52+ ddir <- getIdrisDataDir
54+ Just ddir -> return ddir
52getCC :: IO String
56getCC :: IO String
53getCC = fromMaybe "gcc" <$> lookupEnv "IDRIS_CC"
57getCC = fromMaybe "gcc" <$> lookupEnv "IDRIS_CC"
@@ -55,8 +59,6 @@ getCC = fromMaybe "gcc" <$> lookupEnv "IDRIS_CC"
55getEnvFlags :: IO [String]
59getEnvFlags :: IO [String]
56getEnvFlags = maybe [] (splitOn " ") <$> lookupEnv "IDRIS_CFLAGS"
60getEnvFlags = maybe [] (splitOn " ") <$> lookupEnv "IDRIS_CFLAGS"
58−getTargetDir :: IO String
59−getTargetDir = overrideIdrisLibDirWith "TARGET"
61#if defined(freebsd_HOST_OS) || defined(dragonfly_HOST_OS)\
63#if defined(freebsd_HOST_OS) || defined(dragonfly_HOST_OS)\
62 || defined(openbsd_HOST_OS) || defined(netbsd_HOST_OS)
64 || defined(openbsd_HOST_OS) || defined(netbsd_HOST_OS)
@@ -73,14 +75,21 @@ gmpLib = ["-lgmp"]
73gmpLib = []
75gmpLib = []
76−getLibFlags = do dir <- getDataDir
78+getLibFlags = do dir <- getIdrisCRTSDir
77− return $ ["-L" ++ (dir </> "rts"),
79+ return $ ["-L" ++ dir,
78 "-lidris_rts"] ++ extraLib ++ gmpLib ++ ["-lpthread"]
80 "-lidris_rts"] ++ extraLib ++ gmpLib ++ ["-lpthread"]
80−getIdrisLibDir = addTrailingPathSeparator <$> overrideIdrisLibDirWith "IDRIS_LIBRARY_PATH"
82+getIdrisLibDir = addTrailingPathSeparator <$> overrideIdrisSubDirWith "libs" "IDRIS_LIBRARY_PATH"
84+getIdrisDocDir = addTrailingPathSeparator <$> overrideIdrisSubDirWith "docs" "IDRIS_DOC_PATH"
87+ ddir <- getIdrisDataDir
82−getIdrisDocDir = addTrailingPathSeparator <$> overrideIdrisDocDirWith "IDRIS_DOC_PATH"
88+ return $ addTrailingPathSeparator (ddir </> "jsrts")
91+ ddir <- getIdrisDataDir
92+ return $ addTrailingPathSeparator (ddir </> "rts")
85−getIncFlags = do dir <- getDataDir
94+getIncFlags = do dir <- getIdrisCRTSDir
86− return $ ("-I" ++ dir </> "rts") : extraInclude
95+ return $ ("-I" ++ dir) : extraInclude