X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FSysTools.lhs;h=26c2f1b132f7172b244837094fb5ffe2bb57bd8a;hb=5d536b42c88dbe9523c4b0c799a0e46c2d984aa6;hp=2d4333ca05ad7f385008918b27d02954433c0e19;hpb=1c3d4480c8751665e71e344b71a844ca4191acc5;p=ghc-hetmet.git diff --git a/compiler/main/SysTools.lhs b/compiler/main/SysTools.lhs index 2d4333c..26c2f1b 100644 --- a/compiler/main/SysTools.lhs +++ b/compiler/main/SysTools.lhs @@ -7,6 +7,13 @@ ----------------------------------------------------------------------------- \begin{code} +{-# 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 + module SysTools ( -- Initialisation initSysTools, @@ -259,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 @@ -531,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 = @@ -849,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 ()