Skip to content

build does not respect --with-gcc option

The build still does not respect the --with-gcc option, despite the patches that closed #2966 (closed).

To reproduce on OS X: replace gcc, which is a symlink to the actual compiler, with a symlink to a script that errors out: {{{ #!/bin/bash echo "Uh oh. You shouldn't be here!" exit 1 }}}

Then run

gwright-macbook> ./configure --with-gcc=/usr/bin/gcc-4.2
gwright-macbook> make

where /usr/bin/gcc-4.2 is the actual gcc binary.

The build fails with:

ghc-prim-0.2.0.0: cannot find libHSghc-prim-0.2.0.0.a on library path (ignoring)
"inplace/bin/ghc-cabal" configure --with-ghc="/Users/gwright/tmp/ghc-7-branch/ghc/inplace/bin/dummy-ghc" --with-ghc-pkg="/Users/gwright/tmp/ghc-7-branch/ghc/inplace/bin/ghc-pkg" --with-gcc="/usr/bin/gcc-4.2" --configure-option=--with-cc="/usr/bin/gcc-4.2"  --enable-library-profiling --enable-library-for-ghci --configure-option=CFLAGS=" -m64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5 -fno-stack-protector  " --configure-option=LDFLAGS=" -m64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5  " --configure-option=CPPFLAGS=" @CONF_CPP_OPTS_STAGE1@  " -- dist-install libraries/integer-gmp
Configuring integer-gmp-0.2.0.2...
checking build system type... i386-apple-darwin10.5.0
checking host system type... i386-apple-darwin10.5.0
checking target system type... i386-apple-darwin10.5.0
checking for gcc... /usr/bin/gcc-4.2
checking for C compiler default output file name... 
configure: error: C compiler cannot create executables
See `config.log' for more details.
make[1]: *** [libraries/integer-gmp/dist-install/package-data.mk] Error 77
make: *** [all] Error 2

From the configure output, we can see that sometimes the specified compiler is found, but other times /usr/bin/gcc is picked off the PATH, in violation of your mother's rule, "Don't put that in your mouth, you don't know where it's been."

I've been able to get the build to complete with /usr/bin/gcc linked to the above script by patching aclocal.m4, compiler/Makefile.local and rts/ghc.mk, as well as passing

SRC_HC_OPTS += -pgmP /usr/bin/gcc-4.2 -optP-E -optP-undef -optP-traditional
SRC_HC_OPTS += -pgma /usr/bin/gcc-4.2
SRC_HC_OPTS += -pgmc /usr/bin/gcc-4.2
SRC_HC_OPTS += -pgml /usr/bin/gcc-4.2

in build.mk.

What I've done is unlikely a minimal fix. If the -pgmX options shouldn't be passed through SRC_HC_OPTS, I probably need to make a lot of fiddly changes. On the other hand, if we do allow passing the -pgmX options through SRC_HC_OPTS, we run into the problem in ticket #4821 (closed), which is has a kludgy solution.

Should the SRC_HC_OPTS be left alone and the path to the compiler be passed other ways?

Trac metadata
Trac field Value
Version 7.0.1
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Build System
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information