remove foo.exe.manifest when --embed-manifest is on
[ghc-hetmet.git] / compiler / main / DriverPipeline.hs
index 53ace5c..3daa76e 100644 (file)
@@ -993,6 +993,13 @@ runPhase cc_phase _stop hsc_env _basename _suff input_fn get_output_fn maybe_loc
         -- This is a temporary hack.
                        ++ ["-mcpu=v9"]
 #endif
+#if defined(darwin_TARGET_OS) && defined(i386_TARGET_ARCH)
+                          -- By default, gcc on OS X will generate SSE
+                          -- instructions, which need things 16-byte aligned,
+                          -- but we don't 16-byte align things. Thus drop
+                          -- back to generic i686 compatibility. Trac #2983.
+                       ++ ["-march=i686"]
+#endif
                       ++ (if hcc && mangle
                             then md_regd_c_flags
                             else [])
@@ -1071,8 +1078,8 @@ runPhase SplitMangle _stop hsc_env _basename _suff input_fn _get_output_fn maybe
            dflags' = dflags { splitInfo = Just (split_s_prefix, n_files) }
 
        -- Remember to delete all these files
-       addFilesToClean [ split_s_prefix ++ "__" ++ show n ++ ".s"
-                       | n <- [1..n_files]]
+       addFilesToClean dflags' [ split_s_prefix ++ "__" ++ show n ++ ".s"
+                               | n <- [1..n_files]]
 
        return (SplitAs, dflags', maybe_loc, "**splitmangle**")
          -- we don't use the filename
@@ -1143,6 +1150,16 @@ runPhase SplitAs _stop hsc_env _basename _suff _input_fn get_output_fn maybe_loc
         let assemble_file n
               = SysTools.runAs dflags
                          (map SysTools.Option as_opts ++
+#ifdef sparc_TARGET_ARCH
+        -- We only support SparcV9 and better because V8 lacks an atomic CAS
+        -- instruction so we have to make sure that the assembler accepts the
+        -- instruction set. Note that the user can still override this
+        -- (e.g., -mcpu=ultrasparc). GCC picks the "best" -mcpu flag
+        -- regardless of the ordering.
+        --
+        -- This is a temporary hack.
+                          [ SysTools.Option "-mcpu=v9" ] ++
+#endif
                           [ SysTools.Option "-c"
                           , SysTools.Option "-o"
                           , SysTools.FileOption "" (split_obj n)
@@ -1503,6 +1520,8 @@ maybeCreateManifest dflags exe_filename = do
         -- no FileOptions here: windres doesn't like seeing
         -- backslashes, apparently
 
+  removeFile manifest_filename
+
   return [rc_obj_filename]
 #endif