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 |