ghc-9.14.1: GHC/Linker/External.hs
-- | External ("system") linker
module GHC.Linker.External
( LinkerConfig(..)
, runLink
)
where
import GHC.Prelude
import GHC.Utils.TmpFs
import GHC.Utils.Logger
import GHC.Utils.Error
import GHC.Utils.CliOption
import GHC.SysTools.Process
import GHC.Linker.Config
-- | Run the external linker
runLink :: Logger -> TmpFs -> LinkerConfig -> [Option] -> IO ()
runLink logger tmpfs cfg args = traceSystoolCommand logger "linker" $ do
let all_args = linkerOptionsPre cfg ++ args ++ linkerOptionsPost cfg
-- on Windows, mangle environment variables to account for a bug in Windows
-- Vista
mb_env <- getGccEnv all_args
runSomethingResponseFile logger tmpfs (linkerTempDir cfg) (linkerFilter cfg)
"Linker" (linkerProgram cfg) all_args mb_env