Remove all target-specific portions of Config.hs
authorJohn Ericson <git@JohnEricson.me>
Wed, 27 Mar 2019 04:27:01 +0000 (00:27 -0400)
committerBen Gamari <ben@smart-cactus.org>
Tue, 14 May 2019 20:41:19 +0000 (16:41 -0400)
commite529c65eacf595006dd5358491d28c202d673732
tree0498cb0a7023c491c240d64069e2442073e83d77
parentf9e4ea401121572d799b9db56f24aa1abdf5edf8
Remove all target-specific portions of Config.hs

1. If GHC is to be multi-target, these cannot be baked in at compile
   time.

2. Compile-time flags have a higher maintenance than run-time flags.

3. The old way makes build system implementation (various bootstrapping
   details) with the thing being built. E.g. GHC doesn't need to care
   about which integer library *will* be used---this is purely a crutch
   so the build system doesn't need to pass flags later when using that
   library.

4. Experience with cross compilation in Nixpkgs has shown things work
   nicer when compiler's can *optionally* delegate the bootstrapping the
   package manager. The package manager knows the entire end-goal build
   plan, and thus can make top-down decisions on bootstrapping. GHC can
   just worry about GHC, not even core library like base and ghc-prim!
14 files changed:
compiler/cmm/CLabel.hs
compiler/coreSyn/CorePrep.hs
compiler/deSugar/DsForeign.hs
compiler/ghc.mk
compiler/llvmGen/LlvmCodeGen/Base.hs
compiler/main/CodeOutput.hs
compiler/main/DriverPipeline.hs
compiler/main/DynFlags.hs
compiler/main/GhcMake.hs
compiler/main/SysTools.hs
compiler/nativeGen/AsmCodeGen.hs
compiler/nativeGen/PIC.hs
hadrian/src/Rules/Generate.hs
includes/ghc.mk