Adding a "release" setting in (and some other build system questions)

Ömer Sinan Ağacan omeragacan at
Thu Jan 28 23:50:38 UTC 2016

I'm trying to figure out how to generate a release build. I thought it should
be "perf" setting, but then I realized ghc-stage1 is called with -O (instead of
-O2) when building stage2 with perf setting. So either perf is not the release
setting, or I need stage3 which is probably compiled with stage2 using -O2?

In any case, it'd be great to document this process of generating a release
build in If it's "perf" setting, then maybe we can rename it
to "release" or at least add a comment saying that that's the release build and
you should wait until stage3 is done.

Another thing that always confuses me is these settings:

    SRC_HC_OPTS        = -O -H64m
    GhcStage1HcOpts    = -O
    GhcStage2HcOpts    = -O2
    GhcLibHcOpts       = -O2

As far as I can see, there's no documentation about these in the source tree. I
figured that `GhcStage1HcOpts` is passed to system GHC when compiling stage1,
and `GhcStage2Hcopts` is passed to ghc-stage1 when compiling stage 2. The lib
one is obvious, and it's passed to stage 1 as libs are built using stage 1. But
I still don't understand how is `SRC_HC_OPTS` is used, and what is used when
building stage 3.

More information about the ghc-devs mailing list