• Sylvain Henry's avatar
    Hadrian: refactor GMP in-tree build support (#17756) · d7029cc0
    Sylvain Henry authored
    * Hadrian doesn't use integer-gmp/config.mk file anymore to determine if
      building GMP in-tree is required.
    
      "config.mk" is created by Cabal when the integer-gmp package is
      configured and this file is still untracked by Hadrian. This led to a
      tricky configure "race" because "config.mk" is built by the
      "setup-config" rule, but this rule is also used to find dependencies,
      in particular the "ghc-gmp.h" header, but the creation of this file
      was depending (without being tracked) on "config.mk".
    
      Now Hadrian only builds in-tree GMP if `--with-intree-gmp` is passed
      to the top-level configure script.
    
    * in-tree GMP isn't built once for all in a fixed stage (Stage1)
      anymore. It is built per stage which is required if we build a
      cross-compiler
    
    * switching between in-tree and external GMP is now supported without
      having to clean the build directory first.
    
    * "wrappers.c" now includes "ghc-gmp.h" instead of "ghc.h". It
      helps ensuring that the build system generates "ghc-gmp.h".
    
    * build in-tree GMP in "<root>/stageN/gmp/gmpbuild" and produce useful
      artefacts (libgmp.a, gmp.h, objs/*.o) in "<root>/stageN/gmp"
    d7029cc0
Gmp.hs 6.56 KB