ghc-9.8.0.20230929: 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
LanguageHaskell2010

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 
-> 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 .o file

The JS file is merely copied into a .o file with an additional header ("//Javascript") in order to be recognized later on.

JS files may contain option pragmas of the form: //#OPTIONS: For now, only the CPP option is supported. If the CPP option is set, we append some common CPP definitions to the file and call cpp on it.

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