X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FDriverFlags.hs;h=0f91cb18a6b304caa42d7b58387daff3e8f812a1;hb=71846adaa7d9a913940f45fbf95b8038bd07f361;hp=28bb2857a990ca1406229b61334d4782eb74362b;hpb=38ef36af81c7fe05f12ead2bb3613cff208d81fe;p=ghc-hetmet.git diff --git a/ghc/compiler/main/DriverFlags.hs b/ghc/compiler/main/DriverFlags.hs index 28bb285..0f91cb1 100644 --- a/ghc/compiler/main/DriverFlags.hs +++ b/ghc/compiler/main/DriverFlags.hs @@ -1,9 +1,8 @@ ----------------------------------------------------------------------------- --- $Id: DriverFlags.hs,v 1.126 2003/09/24 13:04:50 simonmar Exp $ -- -- Driver flags -- --- (c) Simon Marlow 2000 +-- (c) The University of Glasgow 2000-2003 -- ----------------------------------------------------------------------------- @@ -15,7 +14,7 @@ module DriverFlags ( ) where #include "HsVersions.h" -#include "../includes/config.h" +#include "../includes/ghcconfig.h" import MkIface ( showIface ) import DriverState @@ -94,7 +93,7 @@ processOneArg action rest (dash_arg@('-':arg):args) = if rest /= "" then fio rest >> return args else case args of - [] -> unknownFlagErr dash_arg + [] -> missingArgErr dash_arg (arg1:args1) -> fio arg1 >> return args1 SepArg fio -> @@ -202,8 +201,11 @@ static_flags = , ( "smp" , NoArg (addNoDups v_Ways WaySMP) ) , ( "debug" , NoArg (addNoDups v_Ways WayDebug) ) , ( "ndp" , NoArg (addNoDups v_Ways WayNDP) ) + , ( "threaded" , NoArg (addNoDups v_Ways WayThreaded) ) -- ToDo: user ways + ------ RTS ways ----------------------------------------------------- + ------ Debugging ---------------------------------------------------- , ( "dppr-noprags", PassFlag (add v_Opt_C) ) , ( "dppr-debug", PassFlag (add v_Opt_C) ) @@ -252,12 +254,11 @@ static_flags = then do writeIORef v_Split_object_files True add v_Opt_C "-fglobalise-toplev-names" else hPutStrLn stderr - "warning: don't know how to split \ - \object files on this architecture" + "warning: don't know how to split object files on this architecture" ) ) ------- Include/Import Paths ---------------------------------------- - , ( "i" , OptPrefix (addToDirList v_Import_paths) ) + , ( "i" , OptPrefix (addToOrDeleteDirList v_Import_paths) ) , ( "I" , Prefix (addToDirList v_Include_paths) ) ------- Libraries --------------------------------------------------- @@ -280,13 +281,13 @@ static_flags = ------- Specific phases -------------------------------------------- , ( "pgmL" , HasArg setPgmL ) , ( "pgmP" , HasArg setPgmP ) - , ( "pgmP" , HasArg setPgmP ) , ( "pgmF" , HasArg setPgmF ) , ( "pgmc" , HasArg setPgmc ) , ( "pgmm" , HasArg setPgmm ) , ( "pgms" , HasArg setPgms ) , ( "pgma" , HasArg setPgma ) , ( "pgml" , HasArg setPgml ) + , ( "pgmdll" , HasArg setPgmDLL ) #ifdef ILX , ( "pgmI" , HasArg setPgmI ) , ( "pgmi" , HasArg setPgmi ) @@ -346,7 +347,7 @@ dynamic_flags = [ ------ Debugging ---------------------------------------------------- , ( "dstg-stats", NoArg (writeIORef v_StgStats True) ) - , ( "ddump-absC", NoArg (setDynFlag Opt_D_dump_absC) ) + , ( "ddump-cmm", NoArg (setDynFlag Opt_D_dump_cmm) ) , ( "ddump-asm", NoArg (setDynFlag Opt_D_dump_asm) ) , ( "ddump-cpranal", NoArg (setDynFlag Opt_D_dump_cpranal) ) , ( "ddump-deriv", NoArg (setDynFlag Opt_D_dump_deriv) ) @@ -356,7 +357,6 @@ dynamic_flags = [ , ( "ddump-inlinings", NoArg (setDynFlag Opt_D_dump_inlinings) ) , ( "ddump-occur-anal", NoArg (setDynFlag Opt_D_dump_occur_anal) ) , ( "ddump-parsed", NoArg (setDynFlag Opt_D_dump_parsed) ) - , ( "ddump-realC", NoArg (setDynFlag Opt_D_dump_realC) ) , ( "ddump-rn", NoArg (setDynFlag Opt_D_dump_rn) ) , ( "ddump-simpl", NoArg (setDynFlag Opt_D_dump_simpl) ) , ( "ddump-simpl-iterations", NoArg (setDynFlag Opt_D_dump_simpl_iterations) ) @@ -371,10 +371,11 @@ dynamic_flags = [ , ( "ddump-worker-wrapper", NoArg (setDynFlag Opt_D_dump_worker_wrapper) ) , ( "dshow-passes", NoArg (setVerbosity "2") ) , ( "ddump-rn-trace", NoArg (setDynFlag Opt_D_dump_rn_trace) ) + , ( "ddump-if-trace", NoArg (setDynFlag Opt_D_dump_if_trace) ) , ( "ddump-tc-trace", NoArg (setDynFlag Opt_D_dump_tc_trace) ) , ( "ddump-splices", NoArg (setDynFlag Opt_D_dump_splices) ) , ( "ddump-rn-stats", NoArg (setDynFlag Opt_D_dump_rn_stats) ) - , ( "ddump-stix", NoArg (setDynFlag Opt_D_dump_stix) ) + , ( "ddump-opt-cmm", NoArg (setDynFlag Opt_D_dump_opt_cmm) ) , ( "ddump-simpl-stats", NoArg (setDynFlag Opt_D_dump_simpl_stats) ) , ( "ddump-bcos", NoArg (setDynFlag Opt_D_dump_BCOs) ) , ( "dsource-stats", NoArg (setDynFlag Opt_D_source_stats) ) @@ -386,6 +387,7 @@ dynamic_flags = [ , ( "ddump-vect", NoArg (setDynFlag Opt_D_dump_vect) ) , ( "dcore-lint", NoArg (setDynFlag Opt_DoCoreLinting) ) , ( "dstg-lint", NoArg (setDynFlag Opt_DoStgLinting) ) + , ( "dcmm-lint", NoArg (setDynFlag Opt_DoCmmLinting) ) ------ Machine dependant (-m) stuff --------------------------- @@ -439,6 +441,7 @@ fFlags = [ ( "warn-duplicate-exports", Opt_WarnDuplicateExports ), ( "warn-hi-shadowing", Opt_WarnHiShadows ), ( "warn-incomplete-patterns", Opt_WarnIncompletePatterns ), + ( "warn-incomplete-record-updates", Opt_WarnIncompletePatternsRecUpd ), ( "warn-missing-fields", Opt_WarnMissingFields ), ( "warn-missing-methods", Opt_WarnMissingMethods ), ( "warn-missing-signatures", Opt_WarnMissingSigs ), @@ -461,6 +464,7 @@ fFlags = [ ( "allow-incoherent-instances", Opt_AllowIncoherentInstances ), ( "generics", Opt_Generics ), ( "strictness", Opt_Strictness ), + ( "full-laziness", Opt_FullLaziness ), ( "cse", Opt_CSE ), ( "ignore-interface-pragmas", Opt_IgnoreInterfacePragmas ), ( "omit-interface-pragmas", Opt_OmitInterfacePragmas ), @@ -545,7 +549,7 @@ setMainIs arg machdepCCOpts | prefixMatch "alpha" cTARGETPLATFORM - = return ( ["-static", "-w", "-mieee" + = return ( ["-w", "-mieee" #ifdef HAVE_THREADED_RTS_SUPPORT , "-D_REENTRANT" #endif @@ -557,7 +561,7 @@ machdepCCOpts | prefixMatch "hppa" cTARGETPLATFORM -- ___HPUX_SOURCE, not _HPUX_SOURCE, is #defined if -ansi! -- (very nice, but too bad the HP /usr/include files don't agree.) - = return ( ["-static", "-D_HPUX_SOURCE"], [] ) + = return ( ["-D_HPUX_SOURCE"], [] ) | prefixMatch "m68k" cTARGETPLATFORM -- -fno-defer-pop : for the .hc files, we want all the pushing/ @@ -618,14 +622,20 @@ machdepCCOpts -- for "normal" programs, but it doesn't support register variable -- declarations. -- -mdynamic-no-pic: - -- As we don't support haskell code in shared libraries anyway, - -- we might as well turn of PIC code generation and save space and time. - -- This is completely optional. - = return ( ["-no-cpp-precomp","-mdynamic-no-pic"], [] ) - - | prefixMatch "powerpc" cTARGETPLATFORM || prefixMatch "rs6000" cTARGETPLATFORM - = return ( ["-static"], ["-finhibit-size-directive"] ) - + -- Turn off PIC code generation to save space and time. + -- -fno-common: + -- Don't generate "common" symbols - these are unwanted + -- in dynamic libraries. + + = if opt_PIC + then return ( ["-no-cpp-precomp", "-fno-common"], + ["-fno-common"] ) + else return ( ["-no-cpp-precomp", "-mdynamic-no-pic"], + ["-mdynamic-no-pic"] ) + + | prefixMatch "powerpc" cTARGETPLATFORM && opt_PIC + = return ( ["-fPIC"], ["-fPIC"] ) + | otherwise = return ( [], [] ) @@ -650,7 +660,24 @@ setVerbosity n addCmdlineHCInclude a = updDynFlags (\s -> s{cmdlineHcIncludes = a : cmdlineHcIncludes s}) +-- ----------------------------------------------------------------------------- +-- Version and usage messages + showVersion :: IO () showVersion = do putStrLn (cProjectName ++ ", version " ++ cProjectVersion) exitWith ExitSuccess + +showGhcUsage = do + (ghc_usage_path,ghci_usage_path) <- getUsageMsgPaths + mode <- readIORef v_GhcMode + let usage_path + | mode == DoInteractive = ghci_usage_path + | otherwise = ghc_usage_path + usage <- readFile usage_path + dump usage + exitWith ExitSuccess + where + dump "" = return () + dump ('$':'$':s) = hPutStr stderr progName >> dump s + dump (c:s) = hPutChar stderr c >> dump s