Renames functions and constructors to fit their new ability for dynamic linking
[ghc-hetmet.git] / compiler / main / DynFlags.hs
index b992228..7f3c491 100644 (file)
@@ -361,7 +361,7 @@ data GhcLink        -- What to do in the link step, if there is one
   = NoLink             -- Don't link at all
   | LinkBinary         -- Link object code into a binary
   | LinkInMemory        -- Use the in-memory dynamic linker
-  | MkDLL              -- Make a DLL
+  | LinkDynLib         -- Link objects into a dynamic lib (DLL on Windows, DSO on ELF platforms)
   deriving Eq
 
 isNoLink :: GhcLink -> Bool
@@ -561,13 +561,14 @@ data Option
 updOptLevel :: Int -> DynFlags -> DynFlags
 -- Set dynflags appropriate to the optimisation level
 updOptLevel n dfs
-  = dfs2{ optLevel = n }
+  = dfs2{ optLevel = final_n }
   where
+   final_n = max 0 (min 2 n)   -- Clamp to 0 <= n <= 2
    dfs1 = foldr (flip dopt_unset) dfs  remove_dopts
    dfs2 = foldr (flip dopt_set)   dfs1 extra_dopts
 
-   extra_dopts  = [ f | (ns,f) <- optLevelFlags, n `elem` ns ]
-   remove_dopts = [ f | (ns,f) <- optLevelFlags, n `notElem` ns ]
+   extra_dopts  = [ f | (ns,f) <- optLevelFlags, final_n `elem` ns ]
+   remove_dopts = [ f | (ns,f) <- optLevelFlags, final_n `notElem` ns ]
        
 optLevelFlags :: [([Int], DynFlag)]
 optLevelFlags
@@ -873,7 +874,7 @@ dynamic_flags = [
        -------- Linking ----------------------------------------------------
   ,  ( "c"             , NoArg (upd $ \d -> d{ ghcLink=NoLink } ))
   ,  ( "no-link"       , NoArg (upd $ \d -> d{ ghcLink=NoLink } )) -- Dep.
-  ,  ( "-mk-dll"       , NoArg (upd $ \d -> d{ ghcLink=MkDLL } ))
+  ,  ( "shared"                , NoArg (upd $ \d -> d{ ghcLink=LinkDynLib } ))
 
        ------- Libraries ---------------------------------------------------
   ,  ( "L"             , Prefix addLibraryPath )