Another round of External Core fixes
[ghc-hetmet.git] / compiler / main / DriverPipeline.hs
index 1f81249..59535f0 100644 (file)
@@ -32,7 +32,7 @@ import Finder
 import HscTypes
 import Outputable
 import Module
-import UniqFM          ( eltsUFM )
+import LazyUniqFM              ( eltsUFM )
 import ErrUtils
 import DynFlags
 import StaticFlags     ( v_Ld_inputs, opt_Static, WayName(..) )
@@ -45,6 +45,7 @@ import Maybes         ( expectJust )
 import ParserCoreUtils ( getCoreModuleName )
 import SrcLoc          ( unLoc )
 import SrcLoc          ( Located(..) )
+import FastString
 
 import Control.Exception as Exception
 import Data.IORef      ( readIORef, writeIORef, IORef )
@@ -835,6 +836,13 @@ runPhase cc_phase _stop dflags _basename _suff input_fn get_output_fn maybe_loc
 
        pkg_extra_cc_opts <- getPackageExtraCcOpts dflags pkgs
 
+#ifdef darwin_TARGET_OS
+        pkg_framework_paths <- getPackageFrameworkPath dflags pkgs
+        let cmdline_framework_paths = frameworkPaths dflags
+        let framework_paths = map ("-F"++) 
+                        (cmdline_framework_paths ++ pkg_framework_paths)
+#endif
+
        let split_objs = dopt Opt_SplitObjs dflags
            split_opt | hcc && split_objs = [ "-DUSE_SPLIT_MARKERS" ]
                      | otherwise         = [ ]
@@ -907,6 +915,9 @@ runPhase cc_phase _stop dflags _basename _suff input_fn get_output_fn maybe_loc
                             else [])
                       ++ [ verb, "-S", "-Wimplicit", cc_opt ]
                       ++ [ "-D__GLASGOW_HASKELL__="++cProjectVersionInt ]
+#ifdef darwin_TARGET_OS
+                       ++ framework_paths
+#endif
                       ++ cc_opts
                       ++ split_opt
                       ++ include_paths
@@ -1615,6 +1626,5 @@ hscMaybeAdjustTarget dflags stop _ current_hsc_lang
                -- otherwise, stick to the plan
                 | otherwise = current_hsc_lang
 
-v_Split_info :: IORef (String, Int)
 GLOBAL_VAR(v_Split_info, ("",0), (String,Int))
        -- The split prefix and number of files