+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
-----------------------------------------------------------------------------
--
-- Makefile Dependency Generation
import qualified GHC
import GHC ( Session, ModSummary(..) )
import DynFlags
-import Util ( escapeSpaces, splitFilename, joinFileExt )
+import Util
import HscTypes ( HscEnv, IsBootInterface, msObjFilePath, msHsFilePath )
import SysTools ( newTempName )
import qualified SysTools
import SrcLoc
import Data.List
import CmdLineParser
+import FastString
-#if __GLASGOW_HASKELL__ <= 408
-import Panic ( catchJust, ioErrors )
-#endif
import ErrUtils ( debugTraceMsg, putMsg )
import Data.IORef ( IORef, readIORef, writeIORef )
import Control.Exception
import System.Exit ( ExitCode(..), exitWith )
import System.Directory
+import System.FilePath
import System.IO
import SYSTEM_IO_ERROR ( isEOFError )
import Control.Monad ( when )
-----------------------------
writeDependency :: Handle -> [FilePath] -> FilePath -> IO ()
-- (writeDependency h [t1,t2] dep) writes to handle h the dependency
--- t1 t2 : dep
+-- t1 t2 : dep
writeDependency hdl targets dep
- = hPutStrLn hdl (unwords (map escapeSpaces targets) ++ " : "
- ++ escapeSpaces dep)
+ = hPutStrLn hdl (unwords (map forOutput targets) ++ " : " ++ forOutput dep)
+ where forOutput = escapeSpaces . reslash Forwards . normalise
-----------------------------
insertSuffixes
-- Lots of other things will break first!
insertSuffixes file_name extras
- = file_name : [ basename `joinFileExt` (extra ++ "_" ++ suffix) | extra <- extras ]
+ = file_name : [ basename <.> (extra ++ "_" ++ suffix) | extra <- extras ]
where
- (basename, suffix) = splitFilename file_name
+ (basename, suffix) = case splitExtension file_name of
+ -- Drop the "." from the extension
+ (b, s) -> (b, drop 1 s)
-----------------------------------------------------------------
= return ()
| null cycles
- = putMsg dflags (ptext SLIT("No module cycles"))
+ = putMsg dflags (ptext (sLit "No module cycles"))
| otherwise
- = putMsg dflags (hang (ptext SLIT("Module cycles found:")) 2 pp_cycles)
+ = putMsg dflags (hang (ptext (sLit "Module cycles found:")) 2 pp_cycles)
where
cycles :: [[ModSummary]]
cycles = [ c | CyclicSCC c <- GHC.topSortModuleGraph True mod_summaries Nothing ]
- pp_cycles = vcat [ (ptext SLIT("---------- Cycle") <+> int n <+> ptext SLIT("----------"))
+ pp_cycles = vcat [ (ptext (sLit "---------- Cycle") <+> int n <+> ptext (sLit "----------"))
$$ pprCycle c $$ text ""
| (n,c) <- [1..] `zip` cycles ]
pp_ms summary = text mod_str <> text (take (20 - length mod_str) (repeat ' '))
<+> (pp_imps empty (ms_imps summary) $$
- pp_imps (ptext SLIT("{-# SOURCE #-}")) (ms_srcimps summary))
+ pp_imps (ptext (sLit "{-# SOURCE #-}")) (ms_srcimps summary))
where
mod_str = moduleNameString (moduleName (ms_mod summary))
pp_imps what lms
= case [m | L _ m <- lms, m `elem` cycle_mods] of
[] -> empty
- ms -> what <+> ptext SLIT("imports") <+>
+ ms -> what <+> ptext (sLit "imports") <+>
pprWithCommas ppr ms
-----------------------------------------------------------------