ghc-9.12.1: The GHC API
Copyright(c) The University of Glasgow 2001
LicenseBSD-style (see the file LICENSE)
MaintainerJeffrey Young <jeffrey.young@iohk.io> Luite Stegeman <luite.stegeman@iohk.io> Sylvain Henry <sylvain.henry@iohk.io> Josh Meredith <josh.meredith@iohk.io>
Stabilityexperimental
Safe HaskellNone
LanguageGHC2021

GHC.StgToJS.Linker.Linker

Description

GHCJS linker, collects dependencies from the object files which contain linkable units with dependency information

Synopsis

Documentation

jsLink Source #

Arguments

:: JSLinkConfig 
-> StgToJSConfig 
-> Logger 
-> TmpFs 
-> ArchiveCache 
-> FilePath

output file/directory

-> LinkPlan 
-> IO () 

link and write result to disk (jsexe directory)

embedJsFile :: Logger -> DynFlags -> TmpFs -> UnitEnv -> FilePath -> FilePath -> IO () Source #

Embed a JS file into a JS object .o file

JS files may contain option pragmas of the form: //#OPTIONS: One of those is //#OPTIONS:CPP. When it is set, we append some common CPP definitions to the file and call cpp on it.

Other options (e.g. EMCC additional flags for link time) are stored in the JS object header. See JSOptions.

staticInitStat :: StaticInfo -> JStat Source #

Initialize a global object.

All global objects have to be declared (staticInfoDecl) first.

staticDeclStat :: StaticInfo -> JStat Source #

declare and do first-pass init of a global object (create JS object for heap objects)

mkExportedFuns :: UnitId -> FastString -> [FastString] -> [ExportedFun] Source #

Given a UnitId, a module name, and a set of symbols in the module, package these into an ExportedFun.

mkExportedModFuns :: Module -> [FastString] -> [ExportedFun] Source #

Given a Module and a set of symbols in the module, package these into an ExportedFun.

data LinkSpec Source #

Constructors

LinkSpec 

Fields

Instances

Instances details
Outputable LinkSpec Source # 
Instance details

Defined in GHC.StgToJS.Linker.Linker

Methods

ppr :: LinkSpec -> SDoc Source #

data LinkPlan Source #

Constructors

LinkPlan 

Fields

Instances

Instances details
Outputable LinkPlan Source # 
Instance details

Defined in GHC.StgToJS.Linker.Types

Methods

ppr :: LinkPlan -> SDoc Source #

incrementLinkPlan :: LinkPlan -> LinkPlan -> (LinkPlan, LinkPlan) Source #

Given a base link plan (assumed to be already linked) and a new link plan, compute `(diff, total)` link plans.

  • diff is the incremental link plan to get from base to total
  • total is the total link plan as if base and new were linked at once