| DoInteractive -- ghc --interactive
| DoLink -- [ the default ]
| DoEval String -- ghc -e
- deriving (Eq,Show)
+ deriving (Show)
GLOBAL_VAR(v_GhcMode, DoLink, GhcMode)
GLOBAL_VAR(v_GhcModeFlag, "", String)
writeIORef v_GhcMode m
writeIORef v_GhcModeFlag flag
+isInteractiveMode, isInterpretiveMode :: GhcMode -> Bool
+isMakeMode, isLinkMode, isCompManagerMode :: GhcMode -> Bool
+
+isInteractiveMode DoInteractive = True
+isInteractiveMode _ = False
+
+-- isInterpretiveMode: byte-code compiler involved
+isInterpretiveMode DoInteractive = True
+isInterpretiveMode (DoEval _) = True
+isInterpretiveMode _ = False
+
+isMakeMode DoMake = True
+isMakeMode _ = False
+
+isLinkMode DoLink = True
+isLinkMode DoMkDLL = True
+isLinkMode _ = False
+
isCompManagerMode DoMake = True
isCompManagerMode DoInteractive = True
isCompManagerMode (DoEval _) = True
show dir ++ " does not exist (used with " ++
show flg ++ " option.)"))
-GLOBAL_VAR(v_Object_suf, phaseInputExt Ln, String)
-GLOBAL_VAR(v_HC_suf, Nothing, Maybe String)
+GLOBAL_VAR(v_Object_suf, phaseInputExt StopLn, String)
+GLOBAL_VAR(v_HC_suf, phaseInputExt HCc, String)
GLOBAL_VAR(v_Hi_dir, Nothing, Maybe String)
GLOBAL_VAR(v_Hi_suf, "hi", String)
GLOBAL_VAR(v_Cmdline_frameworks, [], [String])
#endif
-addToOrDeleteDirList :: IORef [String] -> String -> IO ()
-addToOrDeleteDirList ref "" = writeIORef ref []
-addToOrDeleteDirList ref path = addToDirList ref path
-
addToDirList :: IORef [String] -> String -> IO ()
addToDirList ref path
= do paths <- readIORef ref
- shiny_new_ones <- splitUp path
- writeIORef ref (paths ++ filter notNull shiny_new_ones)
+ shiny_new_ones <- splitPathList path
+ writeIORef ref (paths ++ shiny_new_ones)
+
+
+splitPathList :: String -> IO [String]
+splitPathList s = do ps <- splitUp s; return (filter notNull ps)
-- empty paths are ignored: there might be a trailing
-- ':' in the initial list, for example. Empty paths can
-- cause confusion when they are translated into -I options
-- for passing to gcc.
where
- splitUp ::String -> IO [String]
#ifdef mingw32_TARGET_OS
-- 'hybrid' support for DOS-style paths in directory lists.
--