-----------------------------------------------------------------------------
--- $Id: DriverPipeline.hs,v 1.90 2001/07/17 14:48:04 rrt Exp $
+-- $Id: DriverPipeline.hs,v 1.91 2001/07/19 14:23:16 rrt Exp $
--
-- GHC Driver
--
cmdline_include_paths <- readIORef v_Include_paths
pkg_include_dirs <- getPackageIncludePath
- let include_paths = map (\p -> "-I"++p) (cmdline_include_paths
- ++ pkg_include_dirs)
+ let include_paths = foldr (\ x xs -> "-I" : x : xs) []
+ (cmdline_include_paths ++ pkg_include_dirs)
verb <- getVerbFlag
(md_c_flags, _) <- machdepCCOpts
run_phase cc_phase basename suff input_fn output_fn
| cc_phase == Cc || cc_phase == HCc
= do cc_opts <- getOpts opt_c
- cmdline_include_dirs <- readIORef v_Include_paths
+ cmdline_include_paths <- readIORef v_Include_paths
let hcc = cc_phase == HCc
-- .c files; this is the Value Add(TM) that using
-- ghc instead of gcc gives you :)
pkg_include_dirs <- getPackageIncludePath
- let include_paths = map (\p -> "-I"++p) (cmdline_include_dirs
- ++ pkg_include_dirs)
+ let include_paths = foldr (\ x xs -> "-I" : x : xs) []
+ (cmdline_include_paths ++ pkg_include_dirs)
mangle <- readIORef v_Do_asm_mangling
(md_c_flags, md_regd_c_flags) <- machdepCCOpts
-- pick up whatever happens to be lying around in the path,
-- possibly including those from a cygwin install on the target,
-- which is exactly what we're trying to avoid.
- ; let gcc_path | am_installed = installed_bin ("gcc -B\"" ++ installed "gcc-lib\\\"")
+ ; let gcc_path | am_installed = installed_bin ("gcc -B\"" ++ installed "gcc-lib/\"")
| otherwise = cGCC
- -- The trailing "\\" is absolutely essential; gcc seems
+ -- The trailing "/" is absolutely essential; gcc seems
-- to construct file names simply by concatenating to this
- -- -B path with no extra slash.
- -- We use "\\" rather than "/" because gcc_path is in NATIVE format
+ -- -B path with no extra slash
+ -- We use "/" rather than "\\" because otherwise "\\\" is mangled
+ -- later on; although gcc_path is 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
-- On Win32 we don't want to rely on #!/bin/perl, so we prepend
-- a call to Perl to get the invocation of split and mangle
- ; let split_path = perl_path ++ " " ++ split_script
- mangle_path = perl_path ++ " " ++ mangle_script
+ ; let split_path = perl_path ++ " \"" ++ split_script ++ "\""
+ mangle_path = perl_path ++ " \"" ++ mangle_script ++ "\""
; let mkdll_path = cMKDLL
#else