Merge branch 'master' of http://darcs.haskell.org/ghc into ghc-generics
authorJose Pedro Magalhaes <jpm@cs.uu.nl>
Mon, 9 May 2011 12:04:37 +0000 (14:04 +0200)
committerJose Pedro Magalhaes <jpm@cs.uu.nl>
Mon, 9 May 2011 12:04:37 +0000 (14:04 +0200)
1  2 
compiler/main/DynFlags.hs

@@@ -108,7 -108,6 +108,6 @@@ import Data.Cha
  import Data.List
  import Data.Map (Map)
  import qualified Data.Map as Map
- import Distribution.System
  import System.FilePath
  import System.IO        ( stderr, hPutChar )
  
@@@ -321,6 -320,7 +320,6 @@@ data ExtensionFla
     | Opt_TemplateHaskell
     | Opt_QuasiQuotes
     | Opt_ImplicitParams
 -   | Opt_Generics                     -- "Derivable type classes"
     | Opt_ImplicitPrelude
     | Opt_ScopedTypeVariables
     | Opt_UnboxedTuples
     | Opt_DeriveFunctor
     | Opt_DeriveTraversable
     | Opt_DeriveFoldable
 +   | Opt_DeriveGeneric            -- Allow deriving Generic/1
 +   | Opt_DefaultSignatures        -- Allow extra signatures for defmeths
 +   | Opt_Generics                 -- Old generic classes, now deprecated
  
     | Opt_TypeSynonymInstances
     | Opt_FlexibleContexts
@@@ -807,12 -804,12 +806,12 @@@ defaultDynFlags mySettings 
  
          log_action = \severity srcSpan style msg ->
                          case severity of
-                           SevOutput -> printOutput (msg style)
-                           SevInfo   -> printErrs (msg style)
-                           SevFatal  -> printErrs (msg style)
+                           SevOutput -> printSDoc msg style
+                           SevInfo   -> printErrs msg style
+                           SevFatal  -> printErrs msg style
                            _         -> do 
                                  hPutChar stderr '\n'
-                                 printErrs ((mkLocMessage srcSpan msg) style)
+                                 printErrs (mkLocMessage srcSpan msg) style
                       -- careful (#2302): printErrs prints in UTF-8, whereas
                       -- converting to string first and using hPutStr would
                       -- just emit the low 8 bits of each unicode char.
@@@ -1104,18 -1101,7 +1103,7 @@@ parseDynamicFlags_ dflags0 args pkg_fla
            = runCmdLine (processArgs flag_spec args') dflags0
    when (not (null errs)) $ ghcError $ errorsToGhcException errs
  
-   let (pic_warns, dflags2)
-         | not (cTargetArch == X86_64 && (cTargetOS == Linux || cTargetOS == OSX)) &&
-           (not opt_Static || opt_PIC) &&
-           hscTarget dflags1 == HscLlvm
-         = ([L noSrcSpan $ "Warning: -fllvm is incompatible with -fPIC and "
-                        ++ "-dynamic on this platform;\n"
-                        ++ "         using "
-                        ++ showHscTargetFlag defaultObjectTarget ++ " instead"],
-                 dflags1{ hscTarget = defaultObjectTarget })
-         | otherwise = ([], dflags1)
-   return (dflags2, leftover, pic_warns ++ warns)
+   return (dflags1, leftover, warns)
  
  
  {- **********************************************************************
@@@ -1640,8 -1626,7 +1628,8 @@@ xFlags = 
    ( "ParallelArrays",                   Opt_ParallelArrays, nop ),
    ( "TemplateHaskell",                  Opt_TemplateHaskell, checkTemplateHaskellOk ),
    ( "QuasiQuotes",                      Opt_QuasiQuotes, nop ),
 -  ( "Generics",                         Opt_Generics, nop ),
 +  ( "Generics",                         Opt_Generics,
 +    \ _ -> deprecate "it does nothing; look into -XDefaultSignatures and -XDeriveGeneric for generic programming support." ),
    ( "ImplicitPrelude",                  Opt_ImplicitPrelude, nop ),
    ( "RecordWildCards",                  Opt_RecordWildCards, nop ),
    ( "NamedFieldPuns",                   Opt_RecordPuns, nop ),
    ( "DeriveFunctor",                    Opt_DeriveFunctor, nop ),
    ( "DeriveTraversable",                Opt_DeriveTraversable, nop ),
    ( "DeriveFoldable",                   Opt_DeriveFoldable, nop ),
 +  ( "DeriveGeneric",                    Opt_DeriveGeneric, nop ),
 +  ( "DefaultSignatures",                Opt_DefaultSignatures, nop ),
    ( "TypeSynonymInstances",             Opt_TypeSynonymInstances, nop ),
    ( "FlexibleContexts",                 Opt_FlexibleContexts, nop ),
    ( "FlexibleInstances",                Opt_FlexibleInstances, nop ),
@@@ -1865,7 -1848,6 +1853,7 @@@ glasgowExtsFlags = 
             , Opt_DeriveFunctor
             , Opt_DeriveFoldable
             , Opt_DeriveTraversable
 +           , Opt_DeriveGeneric
             , Opt_FlexibleContexts
             , Opt_FlexibleInstances
             , Opt_ConstrainedClassMethods
@@@ -2055,21 -2037,28 +2043,28 @@@ setObjTarget l = updM se
         = case l of
           HscC
            | cGhcUnregisterised /= "YES" ->
-              do addWarn ("Compiler not unregisterised, so ignoring " ++
-                          showHscTargetFlag l)
+              do addWarn ("Compiler not unregisterised, so ignoring " ++ flag)
                  return dflags
           HscAsm
            | cGhcWithNativeCodeGen /= "YES" ->
               do addWarn ("Compiler has no native codegen, so ignoring " ++
-                          showHscTargetFlag l)
+                          flag)
                  return dflags
           HscLlvm
            | cGhcUnregisterised == "YES" ->
-              do addWarn ("Compiler unregisterised, so ignoring " ++
-                          showHscTargetFlag l)
+              do addWarn ("Compiler unregisterised, so ignoring " ++ flag)
+                 return dflags
+           | not ((arch == ArchX86_64) && (os == OSLinux || os == OSDarwin)) &&
+             (not opt_Static || opt_PIC)
+             ->
+              do addWarn ("Ignoring " ++ flag ++ " as it is incompatible with -fPIC and -dynamic on this platform")
                  return dflags
           _ -> return $ dflags { hscTarget = l }
       | otherwise = return dflags
+      where platform = targetPlatform dflags
+            arch = platformArch platform
+            os   = platformOS   platform
+            flag = showHscTargetFlag l
  
  setOptLevel :: Int -> DynFlags -> DynP DynFlags
  setOptLevel n dflags