
Dear friends, I'm trying to implement a new codegen for ghc, starting by using the ghc api to compile modules to STG/Cmm. In order to support importing Prelude, I also need the STG/Cmm representations of wired-in packages like base, ghc-prim, etc, and I guess that means I need to re-compile them. I can roughly think of two approaches: * Load the `ModIface` of wired-in packages, which are tidied Core modules, and convert to STG/Cmm * Get the library sources from ghc repo and launch a regular compilation. I haven't succeeded in either approach. For the first one, I haven't found a way to convert `ModIface` of external package to regular compilation targets; for the second one, regular "cabal installs" won't do the trick, seems compiling wired-in packages require quite some magic. What is the preferred way of re-compiling wired-in packages and retrieving their STG/Cmm representations? Thank a lot. Cheers, Shao Cheng

Hi, Am Montag, den 24.04.2017, 21:31 +0800 schrieb Shao Cheng:
I'm trying to implement a new codegen for ghc, starting by using the ghc api to compile modules to STG/Cmm. In order to support importing Prelude, I also need the STG/Cmm representations of wired-in packages like base, ghc-prim, etc, and I guess that means I need to re-compile them.
I did just that recently, see https://github.com/nomeata/veggies for how I did it, in particular boot.sh.
* Load the `ModIface` of wired-in packages, which are tidied Core modules, and convert to STG/Cmm
What won’t work; the interface does not contain all the core, but only those of inlineable functions.
I haven't succeeded in either approach. For the first one, I haven't found a way to convert `ModIface` of external package to regular compilation targets; for the second one, regular "cabal installs" won't do the trick, seems compiling wired-in packages require quite some magic.
Less than you would think! Use "ghc --make Setup.hs && ./Cabal" instead of the cabal tool, though. Greetings, Joachim -- Joachim “nomeata” Breitner mail@joachim-breitner.de • https://www.joachim-breitner.de/ XMPP: nomeata@joachim-breitner.de • OpenPGP-Key: 0xF0FBF51F Debian Developer: nomeata@debian.org
participants (2)
-
Joachim Breitner
-
Shao Cheng