ghc-9.14.0.20251128: The GHC API
Safe HaskellNone
LanguageGHC2021

GHC.Driver.MakeAction

Synopsis

Documentation

data MakeAction #

Constructors

MakeAction !(RunMakeM a) !(MVar (Maybe a)) 

data MakeEnv #

Environment used when compiling a module

Constructors

MakeEnv 

Running the pipelines

runAllPipelines :: WorkerLimit -> MakeEnv -> [MakeAction] -> IO () #

Run the given actions and then wait for them all to finish.

runParPipelines #

Arguments

:: WorkerLimit

How to limit work parallelism

-> HscEnv

The basic HscEnv which is augmented with specific info for each module

-> (GhcMessage -> AnyGhcDiagnostic) 
-> Maybe Messager

Optional custom messager to use to report progress

-> [MakeAction]

The build plan for all the module nodes

-> IO () 

Build and run a pipeline

Worker limit

data WorkerLimit #

This describes what we use to limit the number of jobs, either we limit it ourselves to a specific number or we have an external parallelism semaphore limit it for us.

Constructors

NumProcessorsLimit Int 
JSemLimit SemaphoreName

Semaphore name to use

Instances

Instances details
Eq WorkerLimit # 
Instance details

Defined in GHC.Driver.MakeAction

Utility

withLoggerHsc :: Int -> MakeEnv -> (HscEnv -> IO a) -> IO a #

withParLog :: TVar LogQueueQueue -> Int -> ((Logger -> Logger) -> IO b) -> IO b #

withLocalTmpFS :: TmpFs -> (TmpFs -> IO a) -> IO a #