[project @ 2001-07-24 04:47:06 by ken]
[ghc-hetmet.git] / ghc / compiler / main / DriverFlags.hs
index 0f8e551..b3cb69f 100644 (file)
@@ -1,7 +1,7 @@
 {-# OPTIONS -#include "hschooks.h" #-}
 
 -----------------------------------------------------------------------------
--- $Id: DriverFlags.hs,v 1.60 2001/06/26 16:32:03 rrt Exp $
+-- $Id: DriverFlags.hs,v 1.63 2001/07/24 04:47:06 ken Exp $
 --
 -- Driver flags
 --
@@ -302,13 +302,19 @@ dynamic_flags = [
   ,  ( "opta",         HasArg (addOpt_a) )
 
        ------ HsCpp opts ---------------------------------------------------
-       -- These options used to put ticks around their arguments for unknown
-       -- reasons. These quotes are stripped by the shell executing system()
-       -- on Unix, but not on Windows, where it therefore goes on to disturb
-       -- gcc. Hence they are now gone; if they need to be replaced later on
-       -- Unix, there will need to be #ifdefery.
+       -- With a C compiler whose system() doesn't use a UNIX shell (i.e.
+       -- mingwin gcc), -D and -U args must *not* be quoted, as the quotes
+       -- will be interpreted as part of the arguments, and not stripped;
+       -- on all other systems, quoting is necessary, to avoid interpretation
+       -- of shell metacharacters in the arguments (e.g. green-card's
+       -- -DBEGIN_GHC_ONLY='}-' trick).
+#ifndef mingw32_TARGET_OS
+  ,  ( "D",            Prefix (\s -> addOpt_P ("-D'"++s++"'") ) )
+  ,  ( "U",            Prefix (\s -> addOpt_P ("-U'"++s++"'") ) )
+#else
   ,  ( "D",            Prefix (\s -> addOpt_P ("-D"++s) ) )
   ,  ( "U",            Prefix (\s -> addOpt_P ("-U"++s) ) )
+#endif
 
        ------ Debugging ----------------------------------------------------
   ,  ( "dstg-stats",   NoArg (writeIORef v_StgStats True) )
@@ -466,7 +472,7 @@ buildStaticHscOpts = do
 
 machdepCCOpts 
    | prefixMatch "alpha"   cTARGETPLATFORM  
-       = return ( ["-static"], [] )
+       = return ( ["-static", "-Xlinker -noprefix_recognition"], [] )
 
    | prefixMatch "hppa"    cTARGETPLATFORM  
         -- ___HPUX_SOURCE, not _HPUX_SOURCE, is #defined if -ansi!
@@ -499,10 +505,10 @@ machdepCCOpts
                    )
 
    | prefixMatch "mips"    cTARGETPLATFORM
-       = return ( ["static"], [] )
+       = return ( ["-static"], [] )
 
    | prefixMatch "powerpc" cTARGETPLATFORM || prefixMatch "rs6000" cTARGETPLATFORM
-       = return ( ["static"], ["-finhibit-size-directive"] )
+       = return ( ["-static"], ["-finhibit-size-directive"] )
 
    | otherwise
        = return ( [], [] )