Reorder the CPP flags so -optP can override the platform defines
[ghc-hetmet.git] / compiler / main / DriverPipeline.hs
index 7dc9e14..9128538 100644 (file)
@@ -1328,12 +1328,14 @@ runPhase_MoveBinary dflags input_fn dep_packages
                 let behaviour' = concatMap (\x -> if x=='\\' then "\\\\" else [x]) behaviour
                 renameFile input_fn wrapped_executable
                 let rtsDetails = (getPackageDetails (pkgState dflags) rtsPackageId);
+                    (md_c_flags, _) = machdepCCOpts dflags
                 SysTools.runCc dflags
                   ([ SysTools.FileOption "" ((head (libraryDirs rtsDetails)) ++ "/dyn-wrapper.c")
                    , SysTools.Option ("-DBEHAVIOUR=\"" ++ behaviour' ++ "\"")
                    , SysTools.Option "-o"
-                   , SysTools.FileOption "" input_fn
-                   ] ++ map (SysTools.FileOption "-I") (includeDirs rtsDetails))
+                   , SysTools.FileOption "" input_fn] ++
+                   map (SysTools.FileOption "-I") (includeDirs rtsDetails) ++
+                   map Option md_c_flags)
                 return True
           _ -> return True
     | otherwise = return True
@@ -1842,9 +1844,9 @@ doCpp dflags raw include_cc_opts input_fn output_fn = do
     cpp_prog       ([SysTools.Option verb]
                     ++ map SysTools.Option include_paths
                     ++ map SysTools.Option hsSourceCppOpts
+                    ++ map SysTools.Option target_defs
                     ++ map SysTools.Option hscpp_opts
                     ++ map SysTools.Option cc_opts
-                    ++ map SysTools.Option target_defs
                     ++ [ SysTools.Option     "-x"
                        , SysTools.Option     "c"
                        , SysTools.Option     input_fn