Tidy and trim the type environment in mkBootModDetails
[ghc-hetmet.git] / compiler / main / SysTools.lhs
index a4222a7..26c2f1b 100644 (file)
@@ -7,11 +7,11 @@
 -----------------------------------------------------------------------------
 
 \begin{code}
-{-# OPTIONS_GHC -w #-}
+{-# 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/WorkingConventions#Warnings
+--     http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
 -- for details
 
 module SysTools (
@@ -266,9 +266,6 @@ initSysTools mbMinusB dflags
                -- later on; although gcc_args are in NATIVE format,
                -- gcc can cope
                --      (see comments with declarations of global variables)
-               --
-               -- The quotes round the -B argument are in case TopDir
-               -- has spaces in it
 
              perl_path | am_installed = installed_bin cGHC_PERL
                        | otherwise    = cGHC_PERL
@@ -538,12 +535,20 @@ runWindres dflags args = do
   mb_env <- getGccEnv gcc_args
   runSomethingFiltered dflags id "Windres" windres 
         -- we must tell windres where to find gcc: it might not be on PATH
-        (Option ("--preprocessor=" ++ gcc ++ " " ++
-                                      unwords (map showOpt gcc_args) ++
-                 " -E -xc -DRC_INVOKED")
-         : args)
+        (Option ("--preprocessor=" ++ 
+                 unwords (map quote (gcc : map showOpt gcc_args ++
+                                     ["-E", "-xc", "-DRC_INVOKED"])))
+        -- -- use-temp-file is required for windres to interpret the
+        -- quoting in the preprocessor arg above correctly.  Without
+        -- this, windres calls the preprocessor with popen, which gets
+        -- the quoting wrong (discovered by experimentation and
+        -- reading the windres sources).  See #1828.
+        : Option "--use-temp-file"
+        : args)
         -- we must use the PATH workaround here too, since windres invokes gcc
         mb_env
+  where
+        quote x = '\"' : x ++ "\""
 
 touch :: DynFlags -> String -> String -> IO ()
 touch dflags purpose arg =
@@ -856,7 +861,6 @@ data BuildMessage
 #endif
 
 showOpt (FileOption pre f) = pre ++ platformPath f
-showOpt (Option "") = ""
 showOpt (Option s)  = s
 
 traceCmd :: DynFlags -> String -> String -> IO () -> IO ()