X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FSysTools.lhs;h=26c2f1b132f7172b244837094fb5ffe2bb57bd8a;hb=e517644d3a3272f4306654d0f50db28c664a9a8b;hp=a4222a7577bc56f61b518027b679c883674369ba;hpb=17b297d97d327620ed6bfab942f8992b2446f1bf;p=ghc-hetmet.git diff --git a/compiler/main/SysTools.lhs b/compiler/main/SysTools.lhs index a4222a7..26c2f1b 100644 --- a/compiler/main/SysTools.lhs +++ b/compiler/main/SysTools.lhs @@ -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 ()