Skip to content

Remove make-based build system

I couldn't find an issue tracking the removal of the make-based build system, so here it is.

If you are still using it, why? Are there still things unsupported by Hadrian?


Hadrian issues

Make-removal milestone

What needs to be supported/done according to the answers:

  • reuse validate build artifacts: sh validate --no-clean and then make TEST=T2324 WAY=normal stage=1
  • cwd-aware Hadrian (#16667, !999)
  • link with a modified RTS without recompiling. Tamar's use cases:
    • out-of-tree RTS: relink the stage=2 compiler with a different RTS without recompiling (especially without recompiling Hadrian): make re2 GhcDebugged=YES -j11 -C \~/ghc/ghc/
    • in-tree RTS: build stage2 ghc; modify RTS; build stage2:lib:rts; how to link current stage2:ghc-bin artifacts against latest RTS? "build stage2:exe:ghc-bin sounds like it'll build the transitive dependencies as well. In which case base will get rebuilt followed by the entire stage=2 compiler again."
  • only recreate a single file: make stage=2 -W libraries/Win32/dist-install/build/System/Win32/Info/Computer.o && make re2 \~/ghc/ghc/
  • introspection (#17637)
    • query the build system to check what dependencies a file has: make stage=2 -n -W rts/linker/CacheFlush.c
    • Ask the build system how a particular file was created: make stage=2 -n libraries/Win32/dist-install/build/System/Win32/Info/Computer.o
  • Docs: Put the documentation from Hadrian's github wiki in the tree (#16165 (closed))
  • Docs: Up to date documentation (especially transition from the legacy build system)
Edited by Ben Gamari
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information