on master help sign in
Add feature to add compiler flags from environment with IDRIS_CFLAGS
ac80229Niklas Larsson
src/IRTS/CodegenC.hs+2−1
@@ -73,11 +73,12 @@ codegenC' defs out exec incs objs libs flags exports iface dbg
73 comp <- getCC
73 comp <- getCC
74 libFlags <- getLibFlags
74 libFlags <- getLibFlags
75 incFlags <- getIncFlags
75 incFlags <- getIncFlags
76+ envFlags <- getEnvFlags
76 let args = [gccDbg dbg] ++
77 let args = [gccDbg dbg] ++
77 gccFlags iface ++
78 gccFlags iface ++
78 -- # Any flags defined here which alter the RTS API must also be added to config.mk
79 -- # Any flags defined here which alter the RTS API must also be added to config.mk
79 ["-DHAS_PTHREAD", "-DIDRIS_ENABLE_STATS", "-msse2",
80 ["-DHAS_PTHREAD", "-DIDRIS_ENABLE_STATS", "-msse2",
80− "-I."] ++ objs ++ ["-x", "c"] ++
81+ "-I."] ++ objs ++ ["-x", "c"] ++ envFlags ++
81 (if (exec == Executable) then [] else ["-c"]) ++
82 (if (exec == Executable) then [] else ["-c"]) ++
82 [tmpn] ++
83 [tmpn] ++
83 (if not iface then concatMap words libFlags else []) ++
84 (if not iface then concatMap words libFlags else []) ++
src/IRTS/System.hs+8−1
@@ -1,8 +1,9 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2module IRTS.System(getDataFileName, getDataDir, getTargetDir,getCC,getLibFlags,getIdrisLibDir,
2module IRTS.System(getDataFileName, getDataDir, getTargetDir,getCC,getLibFlags,getIdrisLibDir,
3− getIncFlags,getMvn,getExecutablePom, version) where
3+ getIncFlags, getEnvFlags, getMvn,getExecutablePom, version) where
4
4
5import Util.System
5import Util.System
6+import Data.List.Split
6
7
7import Control.Applicative ((<$>))
8import Control.Applicative ((<$>))
8import Data.Maybe (fromMaybe)
9import Data.Maybe (fromMaybe)
@@ -19,6 +20,12 @@ import Paths_idris
19getCC :: IO String
20getCC :: IO String
20getCC = fromMaybe "gcc" <$> environment "IDRIS_CC"
21getCC = fromMaybe "gcc" <$> environment "IDRIS_CC"
21
22
23+getEnvFlags :: IO [String]
24+getEnvFlags = do flags <- environment "IDRIS_CFLAGS"
25+ case flags of
26+ Nothing -> return $ []
27+ Just s -> return $ splitOn " " s
28+
22mvnCommand :: String
29mvnCommand :: String
23#ifdef mingw32_HOST_OS
30#ifdef mingw32_HOST_OS
24mvnCommand = "mvn.bat"
31mvnCommand = "mvn.bat"