X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FSysTools.lhs;h=26c2f1b132f7172b244837094fb5ffe2bb57bd8a;hb=a8984a8784090c853a27e832f31e8dd157d01216;hp=92b88255523d242aeff01dd136b39dc6c8179559;hpb=5cbd9a995ce01f5850d7dd9e5fe3fbba6744acaf;p=ghc-hetmet.git diff --git a/compiler/main/SysTools.lhs b/compiler/main/SysTools.lhs index 92b8825..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 @@ -528,11 +532,23 @@ runWindres :: DynFlags -> [Option] -> IO () runWindres dflags args = do let (gcc,gcc_args) = pgm_c dflags windres = pgm_windres dflags - runSomething dflags "Windres" windres - (Option ("--preprocessor=" ++ gcc ++ unwords (map showOpt gcc_args) ++ - " -E -xc -DRC_INVOKED") - : args) + 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=" ++ + 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 = @@ -845,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 ()