Skip to content
  • Herbert Valerio Riedel's avatar
    Rework CC/CC_STAGE0 handling in `configure.ac` · 865602e0
    Herbert Valerio Riedel authored and Ben Gamari's avatar Ben Gamari committed
    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
    865602e0