[GHC] #8498: gcc hardcoded in build scripts! (ignores the --with-gcc= flag in configure)

GHC ghc-devs at haskell.org
Sat Nov 2 22:16:44 UTC 2013


#8498: gcc hardcoded in build scripts! (ignores the --with-gcc= flag in configure)
------------------------------------+---------------------------------
       Reporter:  carter            |             Owner:
           Type:  bug               |            Status:  new
       Priority:  high              |         Milestone:  7.8.1
      Component:  Compiler          |           Version:  7.7
       Keywords:                    |  Operating System:  MacOS X
   Architecture:  Unknown/Multiple  |   Type of failure:  None/Unknown
     Difficulty:  Unknown           |         Test Case:
     Blocked By:                    |          Blocking:
Related Tickets:                    |
------------------------------------+---------------------------------
 NB: this may be a dupe of another issue, but reporting is separately for
 now

 i'm on OS X 10.8 (mountain lion) with xcode 5, ghc comit
 23fb7f3b7987d7b3fa445e54680a8a00a37e714d,

 I've got a gcc-4.8 installed, though gcc in my path is actually clang (as
 is typical for xcode 5),
 so I configured as {{{ ./configure --with-gcc=gcc-4.8 }}}

 and then I noticed as i'm building, some warnings that mean clang is being
 called rather than gcc!

 heres a relevant snippet of the build transcript

 {{{
 cp" utils/hsc2hs/template-hsc.h inplace/lib/template-hsc.h
 "/usr/bin/ghc" -hisuf hi -osuf  o -hcsuf hc -static  -H64m -O -fasm
 -package process -package containers -package-db
 libraries/bootstrapping.conf   -i -iutils/deriveConstants/.
 -iutils/deriveConstants/dist/build
 -iutils/deriveConstants/dist/build/autogen
 -Iutils/deriveConstants/dist/build
 -Iutils/deriveConstants/dist/build/autogen         -no-user-package-db
 -rtsopts      -odir utils/deriveConstants/dist/build -hidir
 utils/deriveConstants/dist/build -stubdir utils/deriveConstants/dist/build
 -c utils/deriveConstants/./DeriveConstants.hs -o
 utils/deriveConstants/dist/build/DeriveConstants.o
 "inplace/bin/mkdirhier" utils/deriveConstants/dist/build/tmp//.
 "inplace/bin/mkdirhier" rts/dist/build//.
 gcc -E  -m64 -undef -traditional -P -Iincludes -Iincludes/dist -Iincludes
 /dist-derivedconstants/header -Iincludes/dist-ghcconstants/header
 -Icompiler/stage1 -x c compiler/prelude/primops.txt.pp | grep -v '^#pragma
 GCC' > compiler/stage1/build/primops.txt
 compiler/prelude/primops.txt.pp:35:55: warning: missing terminating '
 character [-Winvalid-pp-token]
 -- The default attribute values which apply if you don't specify
                                                       ^
 compiler/prelude/primops.txt.pp:1310:19: warning: missing terminating '
 character [-Winvalid-pp-token]
          difference doesn't fit in an {\tt Int\#}.}
                          ^
 compiler/prelude/primops.txt.pp:1591:41: warning: missing terminating '
 character [-Winvalid-pp-token]
 -- not really the right type, but we don't know about pairs here.  The
                                         ^
 compiler/prelude/primops.txt.pp:1620:15: warning: missing terminating '
 character [-Winvalid-pp-token]
         -- but we don't want to tell the strictness
                      ^
 compiler/prelude/primops.txt.pp:1634:30: warning: missing terminating '
 character [-Winvalid-pp-token]
 -- must be *precise* - we don't want the strictness analyser turning
                              ^
 compiler/prelude/primops.txt.pp:1690:14: warning: missing terminating '
 character [-Winvalid-pp-token]
 -- NB: retry#'s strictness information specifies it to return bottom.
              ^
 compiler/prelude/primops.txt.pp:1811:47: warning: missing terminating '
 character [-Winvalid-pp-token]
     Otherwise, store value arg as {\tt MVar\#}'s new contents, and return
 with integer 1.}
                                               ^
 compiler/prelude/primops.txt.pp:1906:21: warning: missing terminating '
 character [-Winvalid-pp-token]
         {\tt RealWorld}; it's only used in the type system, to
 parameterise {\tt State\#}. }
                            ^
 compiler/prelude/primops.txt.pp:2084:67: warning: missing terminating '
 character [-Winvalid-pp-token]
    -- why return the value?  So that we can control sharing of seq'd
                                                                   ^
 compiler/prelude/primops.txt.pp:2087:13: warning: missing terminating '
 character [-Winvalid-pp-token]
    -- we don't want to inline x, so better to represent it as
             ^
 compiler/prelude/primops.txt.pp:2108:48: warning: missing terminating '
 character [-Winvalid-pp-token]
 --   `the processor containing the expression v'; it is not evaluated
                                                ^
 compiler/prelude/primops.txt.pp:2206:20: warning: missing terminating '
 character [-Winvalid-pp-token]
         {These aren't nearly as wired in as Etc...}
                    ^
 compiler/prelude/primops.txt.pp:2236:57: warning: missing terminating '
 character [-Winvalid-pp-token]
           * It does not claim to be a {\it data} type, and that's
 important for
                                                                ^
 compiler/prelude/primops.txt.pp:2240:4: warning: missing terminating '
 character [-Winvalid-pp-token]
         It's also used to instantiate un-constrained type variables after
 type
           ^
 compiler/prelude/primops.txt.pp:2278:86: warning: missing terminating '
 character [-Winvalid-pp-token]
         used when you want to write a program that you know is well-typed,
 but where Haskell's
 ^
 compiler/prelude/primops.txt.pp:2301:28: warning: missing terminating '
 character [-Winvalid-pp-token]
         have to do with GHC's internal representation details (for the
 congnoscenti, data values
                            ^
 compiler/prelude/primops.txt.pp:2307:76: warning: missing terminating '
 character [-Winvalid-pp-token]
 -- NB. It is tempting to think that casting a value to a type that it
 doesn't have is safe
 ^
 compiler/prelude/primops.txt.pp:2308:22: warning: missing terminating '
 character [-Winvalid-pp-token]
 -- as long as you don't "do anything" with the value in its cast form,
 such as seq on it.  This
                      ^
 compiler/prelude/primops.txt.pp:2309:7: warning: missing terminating '
 character [-Winvalid-pp-token]
 -- isn't the case: the compiler can insert seqs itself, and if these
 happen at the wrong type,
       ^
 compiler/prelude/primops.txt.pp:2344:17: warning: missing terminating '
 character [-Winvalid-pp-token]
      the newtype's concrete type to the abstract type. But it also works
 in
                 ^
 compiler/prelude/primops.txt.pp:2367:67: warning: missing terminating '
 character [-Winvalid-pp-token]
      {\tt instance Coercible b b' => Coercible (D a b c) (D a b' c')}
                                                                   ^
 compiler/prelude/primops.txt.pp:2389:43: warning: missing terminating '
 character [-Winvalid-pp-token]
      you need to set the role of {\tt Set}'s type parameter to Nominal.


 }}}

 notice the hard coded gcc call

 {{{ gcc -E  -m64 -undef -traditional -P -Iincludes -Iincludes/dist
 -Iincludes/dist-derivedconstants/header -Iincludes/dist-
 ghcconstants/header  -Icompiler/stage1 -x c
 compiler/prelude/primops.txt.pp | grep -v '^#pragma GCC' >
 compiler/stage1/build/primops.txt }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8498>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list