@@ -1,46 +1,24 @@
1−{-# LANGUAGE CPP #-}
2−module Util.System(tempfile,withTempdir,getTargetDir,getCC,
3− getLibFlags,getIdrisLibDir,getIncFlags,rmFile,
4− getMvn,getExecutablePom,catchIO) where
1+module Util.System(tempfile,withTempdir,rmFile,catchIO) where
52
63-- System helper functions.
74import Control.Monad (when)
8−import Control.Applicative ((<$>))
9−import Data.Maybe (fromMaybe)
105import Distribution.Text (display)
116import System.Directory (getTemporaryDirectory
127 , removeFile
138 , removeDirectoryRecursive
149 , createDirectoryIfMissing
1510 )
16−import System.FilePath ((</>), addTrailingPathSeparator, normalise)
17−import System.Environment
11+import System.FilePath ((</>), normalise)
1812import System.IO
1913import System.IO.Error
2014import Control.Exception as CE
2115
22−import Paths_idris
23−
2416catchIO :: IO a -> (IOError -> IO a) -> IO a
2517catchIO = CE.catch
2618
2719throwIO :: IOError -> IO a
2820throwIO = CE.throw
2921
30−
31−getCC :: IO String
32−getCC = fromMaybe "gcc" <$> environment "IDRIS_CC"
33−
34−mvnCommand :: String
35−#ifdef mingw32_HOST_OS
36−mvnCommand = "mvn.bat"
37−#else
38−mvnCommand = "mvn"
39−#endif
40−
41−getMvn :: IO String
42−getMvn = fromMaybe mvnCommand <$> environment "IDRIS_MVN"
43−
4422tempfile :: IO (FilePath, Handle)
4523tempfile = do dir <- getTemporaryDirectory
4624 openTempFile (normalise dir) "idris"
@@ -57,46 +35,8 @@ withTempdir subdir callback
5735 when removeLater $ removeDirectoryRecursive tmpDir
5836 return result
5937
60−environment :: String -> IO (Maybe String)
61−environment x = catchIO (do e <- getEnv x
62− return (Just e))
63− (\_ -> return Nothing)
64−
65−getTargetDir :: IO String
66−getTargetDir = environment "TARGET" >>= maybe getDataDir return
67−
6838rmFile :: FilePath -> IO ()
6939rmFile f = do putStrLn $ "Removing " ++ f
7040 catchIO (removeFile f)
7141 (\ioerr -> putStrLn $ "WARNING: Cannot remove file "
7242 ++ f ++ ", Error msg:" ++ show ioerr)
73−
74−#ifdef FREEBSD
75−extraLib = " -L/usr/local/lib"
76−#else
77−extraLib = ""
78−#endif
79−
80−#ifdef IDRIS_GMP
81−gmpLib = " -lgmp"
82−#else
83−gmpLib = ""
84−#endif
85−
86−getLibFlags = do dir <- getDataDir
87− return $ "-L" ++ (dir </> "rts") ++
88− " -lidris_rts" ++ extraLib ++ gmpLib ++ " -lpthread"
89−
90−getIdrisLibDir = do dir <- getDataDir
91− return $ addTrailingPathSeparator dir
92−
93−#ifdef FREEBSD
94−extraInclude = " -I/usr/local/include"
95−#else
96−extraInclude = ""
97−#endif
98−getIncFlags = do dir <- getDataDir
99− return $ "-I" ++ dir </> "rts" ++ extraInclude
100−
101−getExecutablePom = do dir <- getDataDir
102− return $ dir </> "java" </> "executable_pom.xml"