X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fmain%2FSysTools.lhs;h=2d4333ca05ad7f385008918b27d02954433c0e19;hp=e098dd9eabce8cf301e895694ebe4014d38f95b5;hb=1c3d4480c8751665e71e344b71a844ca4191acc5;hpb=2ebe8addfaae2bc65e6b87ad369928b02053014f diff --git a/compiler/main/SysTools.lhs b/compiler/main/SysTools.lhs index e098dd9..2d4333c 100644 --- a/compiler/main/SysTools.lhs +++ b/compiler/main/SysTools.lhs @@ -17,6 +17,7 @@ module SysTools ( runMangle, runSplit, -- [Option] -> IO () runAs, runLink, -- [Option] -> IO () runMkDLL, + runWindres, touch, -- String -> String -> IO () copy, @@ -196,6 +197,10 @@ initSysTools mbMinusB dflags | am_installed = installed_bin cGHC_MANGLER_PGM | otherwise = inplace cGHC_MANGLER_DIR_REL cGHC_MANGLER_PGM + windres_path + | am_installed = installed_bin "bin/windres" + | otherwise = "windres" + ; let dflags0 = defaultDynFlags #ifndef mingw32_HOST_OS -- check whether TMPDIR is set in the environment @@ -326,7 +331,8 @@ initSysTools mbMinusB dflags pgm_l = (ld_prog,ld_args), pgm_dll = (mkdll_prog,mkdll_args), pgm_T = touch_path, - pgm_sysman = top_dir ++ "/ghc/rts/parallel/SysMan" + pgm_sysman = top_dir ++ "/ghc/rts/parallel/SysMan", + pgm_windres = windres_path -- Hans: this isn't right in general, but you can -- elaborate it in the same way as the others } @@ -518,6 +524,20 @@ runMkDLL dflags args = do mb_env <- getGccEnv (args0++args) runSomethingFiltered dflags id "Make DLL" p args1 mb_env +runWindres :: DynFlags -> [Option] -> IO () +runWindres dflags args = do + let (gcc,gcc_args) = pgm_c dflags + windres = pgm_windres dflags + 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) + -- we must use the PATH workaround here too, since windres invokes gcc + mb_env + touch :: DynFlags -> String -> String -> IO () touch dflags purpose arg = runSomething dflags purpose (pgm_T dflags) [FileOption "" arg]