Remove the need to explicitly flatten the dynflags
[ghc-hetmet.git] / compiler / main / DriverPipeline.hs
index 464aa28..1c29c7f 100644 (file)
@@ -461,15 +461,9 @@ doLink dflags stop_phase o_files
   | otherwise
   = case ghcLink dflags of
         NoLink     -> return ()
-        LinkBinary -> linkBinary dflags o_files link_pkgs
+        LinkBinary -> linkBinary dflags o_files []
         LinkDynLib -> linkDynLib dflags o_files []
         other      -> panicBadLink other
-  where
-   -- Always link in the haskell98 package for static linking.  Other
-   -- packages have to be specified via the -package flag.
-    link_pkgs
-     | dopt Opt_AutoLinkPackages dflags = [haskell98PackageId]
-     | otherwise                        = []
 
 
 -- ---------------------------------------------------------------------------
@@ -700,30 +694,27 @@ runPhase (Unlit sf) _stop hsc_env _basename _suff input_fn get_output_fn maybe_l
 
 runPhase (Cpp sf) _stop hsc_env _basename _suff input_fn get_output_fn maybe_loc
   = do let dflags0 = hsc_dflags hsc_env
-       let dflags0' = flattenExtensionFlags dflags0
-       src_opts <- liftIO $ getOptionsFromFile dflags0' input_fn
+       src_opts <- liftIO $ getOptionsFromFile dflags0 input_fn
        (dflags1, unhandled_flags, warns)
            <- liftIO $ parseDynamicNoPackageFlags dflags0 src_opts
        checkProcessArgsResult unhandled_flags
-       let dflags1' = flattenExtensionFlags dflags1
 
-       if not (xopt Opt_Cpp dflags1') then do
+       if not (xopt Opt_Cpp dflags1) then do
            -- we have to be careful to emit warnings only once.
-           unless (dopt Opt_Pp dflags1') $ handleFlagWarnings dflags1' warns
+           unless (dopt Opt_Pp dflags1) $ handleFlagWarnings dflags1 warns
 
            -- no need to preprocess CPP, just pass input file along
            -- to the next phase of the pipeline.
            return (HsPp sf, dflags1, maybe_loc, input_fn)
         else do
-            output_fn <- liftIO $ get_output_fn dflags1' (HsPp sf) maybe_loc
-            liftIO $ doCpp dflags1' True{-raw-} False{-no CC opts-} input_fn output_fn
+            output_fn <- liftIO $ get_output_fn dflags1 (HsPp sf) maybe_loc
+            liftIO $ doCpp dflags1 True{-raw-} False{-no CC opts-} input_fn output_fn
             -- re-read the pragmas now that we've preprocessed the file
             -- See #2464,#3457
-            src_opts <- liftIO $ getOptionsFromFile dflags0' output_fn
+            src_opts <- liftIO $ getOptionsFromFile dflags0 output_fn
             (dflags2, unhandled_flags, warns)
                 <- liftIO $ parseDynamicNoPackageFlags dflags0 src_opts
-            let dflags2' = flattenExtensionFlags dflags2
-            unless (dopt Opt_Pp dflags2') $ handleFlagWarnings dflags2' warns
+            unless (dopt Opt_Pp dflags2) $ handleFlagWarnings dflags2 warns
             -- the HsPp pass below will emit warnings
             checkProcessArgsResult unhandled_flags
 
@@ -734,11 +725,10 @@ runPhase (Cpp sf) _stop hsc_env _basename _suff input_fn get_output_fn maybe_loc
 
 runPhase (HsPp sf) _stop hsc_env basename suff input_fn get_output_fn maybe_loc
   = do let dflags = hsc_dflags hsc_env
-           dflags' = flattenExtensionFlags dflags
        if not (dopt Opt_Pp dflags) then
            -- no need to preprocess, just pass input file along
            -- to the next phase of the pipeline.
-          return (Hsc sf, dflags', maybe_loc, input_fn)
+          return (Hsc sf, dflags, maybe_loc, input_fn)
         else do
             let hspp_opts = getOpts dflags opt_F
             let orig_fn = basename <.> suff
@@ -752,14 +742,13 @@ runPhase (HsPp sf) _stop hsc_env basename suff input_fn get_output_fn maybe_loc
                            )
 
             -- re-read pragmas now that we've parsed the file (see #3674)
-            src_opts <- liftIO $ getOptionsFromFile dflags' output_fn
+            src_opts <- liftIO $ getOptionsFromFile dflags output_fn
             (dflags1, unhandled_flags, warns)
                 <- liftIO $ parseDynamicNoPackageFlags dflags src_opts
-            let dflags1' = flattenExtensionFlags dflags1
-            handleFlagWarnings dflags1' warns
+            handleFlagWarnings dflags1 warns
             checkProcessArgsResult unhandled_flags
 
-            return (Hsc sf, dflags1', maybe_loc, output_fn)
+            return (Hsc sf, dflags1, maybe_loc, output_fn)
 
 -----------------------------------------------------------------------------
 -- Hsc phase
@@ -907,14 +896,13 @@ runPhase (Hsc src_flavour) stop hsc_env basename suff input_fn get_output_fn _ma
 runPhase CmmCpp _stop hsc_env _basename _suff input_fn get_output_fn maybe_loc
   = do
        let dflags = hsc_dflags hsc_env
-           dflags' = flattenExtensionFlags dflags
-       output_fn <- liftIO $ get_output_fn dflags' Cmm maybe_loc
-       liftIO $ doCpp dflags' False{-not raw-} True{-include CC opts-} input_fn output_fn
-       return (Cmm, dflags', maybe_loc, output_fn)
+       output_fn <- liftIO $ get_output_fn dflags Cmm maybe_loc
+       liftIO $ doCpp dflags False{-not raw-} True{-include CC opts-} input_fn output_fn
+       return (Cmm, dflags, maybe_loc, output_fn)
 
 runPhase Cmm stop hsc_env basename _ input_fn get_output_fn maybe_loc
   = do
-        let dflags = ensureFlattenedExtensionFlags $ hsc_dflags hsc_env
+        let dflags = hsc_dflags hsc_env
         let hsc_lang = hscMaybeAdjustTarget dflags stop HsSrcFile (hscTarget dflags)
         let next_phase = hscNextPhase dflags HsSrcFile hsc_lang
         output_fn <- liftIO $ get_output_fn dflags next_phase maybe_loc
@@ -1872,17 +1860,10 @@ doCpp dflags raw include_cc_opts input_fn output_fn = do
                        , SysTools.FileOption "" output_fn
                        ])
 
-cHaskell1Version :: String
-cHaskell1Version = "5" -- i.e., Haskell 98
-
 hsSourceCppOpts :: [String]
 -- Default CPP defines in Haskell source
 hsSourceCppOpts =
-        [ "-D__HASKELL1__="++cHaskell1Version
-        , "-D__GLASGOW_HASKELL__="++cProjectVersionInt
-        , "-D__HASKELL98__"
-        , "-D__CONCURRENT_HASKELL__"
-        ]
+        [ "-D__GLASGOW_HASKELL__="++cProjectVersionInt ]
 
 
 -- -----------------------------------------------------------------------------