{-# OPTIONS -fno-warn-incomplete-patterns #-}
-----------------------------------------------------------------------------
--- $Id: Main.hs,v 1.62 2001/03/28 11:01:19 simonmar Exp $
+-- $Id: Main.hs,v 1.67 2001/05/31 11:32:25 simonmar Exp $
--
-- GHC Driver program
--
import DriverMkDepend
import DriverUtil
import Panic
-import DriverPhases ( Phase(..), haskellish_file, objish_file )
+import DriverPhases ( Phase(..), haskellish_src_file, objish_file )
import CmdLineOpts
import TmpFiles
import Finder ( initFinder )
-----------------------------------------------------------------------------
-- ToDo:
--- -nohi doesn't work
-- new mkdependHS doesn't support all the options that the old one did (-X et al.)
-- time commands when run with -v
-- split marker
writeIORef v_Pgm_L (installed "unlit")
writeIORef v_Pgm_m (installed "ghc-asm")
writeIORef v_Pgm_s (installed "ghc-split")
+#if defined(mingw32_TARGET_OS) && defined(MINIMAL_UNIX_DEPS)
+ writeIORef v_Pgm_T (installed cTOUCH)
+#endif
else do writeIORef v_Path_usage (inplace (cGHC_DRIVER_DIR ++ "/ghc-usage.txt"))
writeIORef v_Pgm_L (inplace cGHC_UNLIT)
writeIORef v_Pgm_m (inplace cGHC_MANGLER)
writeIORef v_Pgm_s (inplace cGHC_SPLIT)
+#if defined(mingw32_TARGET_OS) && defined(MINIMAL_UNIX_DEPS)
+ writeIORef v_Pgm_T (inplace cTOUCH)
+#endif
-- read the package configuration
conf_file <- readIORef v_Path_package_config
-- mkdependHS is special
when (mode == DoMkDependHS) beginMkDependHS
+ -- -ohi sanity checking
+ ohi <- readIORef v_Output_hi
+ if (isJust ohi &&
+ (mode == DoMake || mode == DoInteractive || length srcs > 1))
+ then throwDyn (UsageError "-ohi can only be used when compiling a single source file")
+ else do
+
-- make/interactive require invoking the compilation manager
if (mode == DoMake) then beginMake srcs else do
if (mode == DoInteractive) then beginInteractive srcs else do
- -- sanity checking
+ -- -o sanity checking
o_file <- readIORef v_Output_file
- ohi <- readIORef v_Output_hi
- if length srcs > 1 && (isJust ohi || (isJust o_file && mode /= DoLink && mode /= DoMkDLL))
- then throwDyn (UsageError "can't apply -o or -ohi options to multiple source files")
+ if (length srcs > 1 && isJust o_file && mode /= DoLink && mode /= DoMkDLL)
+ then throwDyn (UsageError "can't apply -o to multiple source files")
else do
if null srcs then throwDyn (UsageError "no input files") else do
-- OPTIONS pragma that affects the compilation pipeline (eg. -fvia-C)
let (basename, suffix) = splitFilename src
- -- just preprocess
- pp <- if not (haskellish_file src) || mode == StopBefore Hsc
+ -- just preprocess (Haskell source only)
+ pp <- if not (haskellish_src_file src) || mode == StopBefore Hsc
then return src else do
phases <- genPipeline (StopBefore Hsc) stop_flag
False{-not persistent-} defaultHscLang src