Rework CC/CC_STAGE0 handling in `configure.ac`
authorHerbert Valerio Riedel <hvr@gnu.org>
Sat, 16 Apr 2016 16:12:09 +0000 (18:12 +0200)
committerBen Gamari <ben@smart-cactus.org>
Sat, 16 Apr 2016 16:12:46 +0000 (18:12 +0200)
commit865602e0beb8e30ea1e1edf7db90f24088badb9e
treebbda9ab6adebd8b41a95f4f2c4760aab9c04b34e
parentf4e659121960eb81d5478f0b20d4cf6f4c0ed0d9
Rework CC/CC_STAGE0 handling in `configure.ac`

Rather than using the non-standard/idiomatic `--with-{gcc,clang}=...`
scheme use the `CC=...` style scheme.

The basic idea is to have Autoconf's CC/CFLAG/CPPFLAG apply to
stage{1,2,3}, while having a separate _STAGE0 set of env-vars
denote the bootstrap-toolchain flags/programs.

This should be simpler, less confusing, and somewhat more in line with
Autoconf's idioms (allowing us to reuse more of Autoconf rather than
(re)inventing our own confusing non-standard m4 macros to do stuff that
Autoconf could almost do already for us)

Morever, expose CC_STAGE0 as a so-called "precious" variable.

So now we can better control which bootstrapping gcc is used
(by default the one used by the stage0 ghc, unless CC_STAGE0 is
overriden)

```
Some influential environment variables:
  CC_STAGE0   C compiler command (bootstrap)
  CC          C compiler command
  CFLAGS      C compiler flags
  ...

Use these variables to override the choices made by `configure' or to
help it to find libraries and programs with nonstandard names/locations.
```

Test Plan: I've tested that cross-compiling with
`--target=powerpc-linux-gnu` still works, and tried a few variants of
settting `CC=` and `CC_STAGE0=`; `./validate` passed as well

Reviewers: erikd, austin, bgamari, simonmar

Reviewed By: simonmar

Subscribers: Phyx, thomie

Differential Revision: https://phabricator.haskell.org/D2078
aclocal.m4
bindisttest/ghc.mk
configure.ac
distrib/configure.ac.in
includes/ghc.mk
mk/config.mk.in
rts/ghc.mk
rules/shell-wrapper.mk