ghc-lib-parser-9.10.1.20250103: The GHC API, decoupled from GHC versions

Safe Haskell | Ignore
Language | GHC2021

GHC.Settings

Contents

- Accessors

Description

Run-time settings

Synopsis

- data Settings = Settings {
  - sGhcNameVersion :: !GhcNameVersion
  - sFileSettings :: !FileSettings
  - sTargetPlatform :: Platform
  - sToolSettings :: !ToolSettings
  - sPlatformMisc :: !PlatformMisc
  - sRawSettings :: [(String, String)]
  }
- data ToolSettings = ToolSettings {
  - toolSettings_ldSupportsCompactUnwind :: Bool
  - toolSettings_ldSupportsFilelist :: Bool
  - toolSettings_ldSupportsSingleModule :: Bool
  - toolSettings_mergeObjsSupportsResponseFiles :: Bool
  - toolSettings_ldIsGnuLd :: Bool
  - toolSettings_ccSupportsNoPie :: Bool
  - toolSettings_useInplaceMinGW :: Bool
  - toolSettings_arSupportsDashL :: Bool
  - toolSettings_pgm_L :: String
  - toolSettings_pgm_P :: (String, [Option])
  - toolSettings_pgm_F :: String
  - toolSettings_pgm_c :: String
  - toolSettings_pgm_cxx :: String
  - toolSettings_pgm_cpp :: (String, [Option])
  - toolSettings_pgm_a :: (String, [Option])
  - toolSettings_pgm_l :: (String, [Option])
  - toolSettings_pgm_lm :: Maybe (String, [Option])
  - toolSettings_pgm_windres :: String
  - toolSettings_pgm_ar :: String
  - toolSettings_pgm_otool :: String
  - toolSettings_pgm_install_name_tool :: String
  - toolSettings_pgm_ranlib :: String
  - toolSettings_pgm_lo :: (String, [Option])
  - toolSettings_pgm_lc :: (String, [Option])
  - toolSettings_pgm_las :: (String, [Option])
  - toolSettings_pgm_i :: String
  - toolSettings_opt_L :: [String]
  - toolSettings_opt_P :: [String]
  - toolSettings_opt_P_fingerprint :: Fingerprint
  - toolSettings_opt_F :: [String]
  - toolSettings_opt_c :: [String]
  - toolSettings_opt_cxx :: [String]
  - toolSettings_opt_a :: [String]
  - toolSettings_opt_l :: [String]
  - toolSettings_opt_lm :: [String]
  - toolSettings_opt_windres :: [String]
  - toolSettings_opt_lo :: [String]
  - toolSettings_opt_lc :: [String]
  - toolSettings_opt_las :: [String]
  - toolSettings_opt_i :: [String]
  - toolSettings_extraGccViaCFlags :: [String]
  }
- data FileSettings = FileSettings {
  - fileSettings_ghcUsagePath :: FilePath
  - fileSettings_ghciUsagePath :: FilePath
  - fileSettings_toolDir :: Maybe FilePath
  - fileSettings_topDir :: FilePath
  - fileSettings_globalPackageDatabase :: FilePath
  }
- data GhcNameVersion = GhcNameVersion {
  - ghcNameVersion_programName :: String
  - ghcNameVersion_projectVersion :: String
  }
- data Platform = Platform {
  - platformArchOS :: !ArchOS
  - platformWordSize :: !PlatformWordSize
  - platformByteOrder :: !ByteOrder
  - platformUnregisterised :: !Bool
  - platformHasGnuNonexecStack :: !Bool
  - platformHasIdentDirective :: !Bool
  - platformHasSubsectionsViaSymbols :: !Bool
  - platformIsCrossCompiling :: !Bool
  - platformLeadingUnderscore :: !Bool
  - platformTablesNextToCode :: !Bool
  - platformHasLibm :: !Bool
  - platform_constants :: !(Maybe PlatformConstants)
  }
- data PlatformMisc = PlatformMisc {
  - platformMisc_targetPlatformString :: String
  - platformMisc_ghcWithInterpreter :: Bool
  - platformMisc_libFFI :: Bool
  - platformMisc_llvmTarget :: String
  }
- dynLibSuffix :: GhcNameVersion -> String
- sProgramName :: Settings -> String
- sProjectVersion :: Settings -> String
- sGhcUsagePath :: Settings -> FilePath
- sGhciUsagePath :: Settings -> FilePath
- sToolDir :: Settings -> Maybe FilePath
- sTopDir :: Settings -> FilePath
- sGlobalPackageDatabasePath :: Settings -> FilePath
- sLdSupportsCompactUnwind :: Settings -> Bool
- sLdSupportsFilelist :: Settings -> Bool
- sMergeObjsSupportsResponseFiles :: Settings -> Bool
- sLdIsGnuLd :: Settings -> Bool
- sGccSupportsNoPie :: Settings -> Bool
- sUseInplaceMinGW :: Settings -> Bool
- sArSupportsDashL :: Settings -> Bool
- sPgm_L :: Settings -> String
- sPgm_P :: Settings -> (String, [Option])
- sPgm_F :: Settings -> String
- sPgm_c :: Settings -> String
- sPgm_cxx :: Settings -> String
- sPgm_cpp :: Settings -> (String, [Option])
- sPgm_a :: Settings -> (String, [Option])
- sPgm_l :: Settings -> (String, [Option])
- sPgm_lm :: Settings -> Maybe (String, [Option])
- sPgm_windres :: Settings -> String
- sPgm_ar :: Settings -> String
- sPgm_otool :: Settings -> String
- sPgm_install_name_tool :: Settings -> String
- sPgm_ranlib :: Settings -> String
- sPgm_lo :: Settings -> (String, [Option])
- sPgm_lc :: Settings -> (String, [Option])
- sPgm_las :: Settings -> (String, [Option])
- sPgm_i :: Settings -> String
- sOpt_L :: Settings -> [String]
- sOpt_P :: Settings -> [String]
- sOpt_P_fingerprint :: Settings -> Fingerprint
- sOpt_F :: Settings -> [String]
- sOpt_c :: Settings -> [String]
- sOpt_cxx :: Settings -> [String]
- sOpt_a :: Settings -> [String]
- sOpt_l :: Settings -> [String]
- sOpt_lm :: Settings -> [String]
- sOpt_windres :: Settings -> [String]
- sOpt_lo :: Settings -> [String]
- sOpt_lc :: Settings -> [String]
- sOpt_i :: Settings -> [String]
- sExtraGccViaCFlags :: Settings -> [String]
- sTargetPlatformString :: Settings -> String
- sGhcWithInterpreter :: Settings -> Bool
- sLibFFI :: Settings -> Bool

# Documentation

data Settings #

Constructors

Settings |

Fields

- sGhcNameVersion :: !GhcNameVersion
- sFileSettings :: !FileSettings
- sTargetPlatform :: Platform
- sToolSettings :: !ToolSettings
- sPlatformMisc :: !PlatformMisc
- sRawSettings :: [(String, String)]

data ToolSettings #

Settings for other executables GHC calls.

Probably should further split down by phase, or split between platform-specific and platform-agnostic.

Constructors

ToolSettings |

Fields

- toolSettings_ldSupportsCompactUnwind :: Bool
- toolSettings_ldSupportsFilelist :: Bool
- toolSettings_ldSupportsSingleModule :: Bool
- toolSettings_mergeObjsSupportsResponseFiles :: Bool
- toolSettings_ldIsGnuLd :: Bool
- toolSettings_ccSupportsNoPie :: Bool
- toolSettings_useInplaceMinGW :: Bool
- toolSettings_arSupportsDashL :: Bool
- toolSettings_pgm_L :: String
- toolSettings_pgm_P :: (String, [Option])

  The Haskell C preprocessor and default options (not added by -optP)

- toolSettings_pgm_F :: String
- toolSettings_pgm_c :: String
- toolSettings_pgm_cxx :: String
- toolSettings_pgm_cpp :: (String, [Option])

  The C preprocessor (distinct from the Haskell C preprocessor!)

- toolSettings_pgm_a :: (String, [Option])
- toolSettings_pgm_l :: (String, [Option])
- toolSettings_pgm_lm :: Maybe (String, [Option])

  N.B. On Windows we don't have a linker which supports object merging, hence the `Maybe`. See Note [Object merging] in GHC.Driver.Pipeline.Execute for details.

- toolSettings_pgm_windres :: String
- toolSettings_pgm_ar :: String
- toolSettings_pgm_otool :: String
- toolSettings_pgm_install_name_tool :: String
- toolSettings_pgm_ranlib :: String
- toolSettings_pgm_lo :: (String, [Option])

  LLVM: opt llvm optimiser

- toolSettings_pgm_lc :: (String, [Option])

  LLVM: llc static compiler

- toolSettings_pgm_las :: (String, [Option])

  LLVM: assembler

- toolSettings_pgm_i :: String
- toolSettings_opt_L :: [String]
- toolSettings_opt_P :: [String]
- toolSettings_opt_P_fingerprint :: Fingerprint

  cached Fingerprint of sOpt_P See Note [Repeated -optP hashing]

- toolSettings_opt_F :: [String]
- toolSettings_opt_c :: [String]
- toolSettings_opt_cxx :: [String]
- toolSettings_opt_a :: [String]
- toolSettings_opt_l :: [String]
- toolSettings_opt_lm :: [String]
- toolSettings_opt_windres :: [String]
- toolSettings_opt_lo :: [String]

  LLVM: llvm optimiser

- toolSettings_opt_lc :: [String]

  LLVM: llc static compiler

- toolSettings_opt_las :: [String]
- toolSettings_opt_i :: [String]

  iserv options

- toolSettings_extraGccViaCFlags :: [String]

data FileSettings #

Paths to various files and directories used by GHC, including those that provide more settings.

Constructors

FileSettings |

Fields

- fileSettings_ghcUsagePath :: FilePath
- fileSettings_ghciUsagePath :: FilePath
- fileSettings_toolDir :: Maybe FilePath
- fileSettings_topDir :: FilePath
- fileSettings_globalPackageDatabase :: FilePath

data GhcNameVersion #

Settings for what GHC this is.

Constructors

GhcNameVersion |

Fields

- ghcNameVersion_programName :: String
- ghcNameVersion_projectVersion :: String

data Platform #

Platform description

This is used to describe platforms so that we can generate code for them.

Constructors

Platform |

Fields

- platformArchOS :: !ArchOS

  Architecture and OS

- platformWordSize :: !PlatformWordSize

  Word size

- platformByteOrder :: !ByteOrder

  Byte order (endianness)

- platformUnregisterised :: !Bool
- platformHasGnuNonexecStack :: !Bool
- platformHasIdentDirective :: !Bool
- platformHasSubsectionsViaSymbols :: !Bool
- platformIsCrossCompiling :: !Bool
- platformLeadingUnderscore :: !Bool

  Symbols need underscore prefix

- platformTablesNextToCode :: !Bool

  Determines whether we will be compiling info tables that reside just before the entry code, or with an indirection to the entry code. See TABLES_NEXT_TO_CODE in rtsincludertsstorageInfoTables.h.

- platformHasLibm :: !Bool

  Some platforms require that we explicitly link against `libm` if any math-y things are used (which we assume to include all programs). See #14022.

- platform_constants :: !(Maybe PlatformConstants)

  Constants such as structure offsets, type sizes, etc.

#### Instances

Instances details

Read Platform # |
Instance details Defined in GHC.Platform Methods readsPrec :: Int -> ReadS Platform # readList :: ReadS [Platform] # readPrec :: ReadPrec Platform # readListPrec :: ReadPrec [Platform] #
Show Platform # |
Instance details Defined in GHC.Platform Methods showsPrec :: Int -> Platform -> ShowS # show :: Platform -> String # showList :: [Platform] -> ShowS #
Eq Platform # |
Instance details Defined in GHC.Platform Methods (==) :: Platform -> Platform -> Bool # (/=) :: Platform -> Platform -> Bool #
Ord Platform # |
Instance details Defined in GHC.Platform Methods compare :: Platform -> Platform -> Ordering # (<) :: Platform -> Platform -> Bool # (<=) :: Platform -> Platform -> Bool # (>) :: Platform -> Platform -> Bool # (>=) :: Platform -> Platform -> Bool # max :: Platform -> Platform -> Platform # min :: Platform -> Platform -> Platform #
OutputableP Platform CmmGraph # |
Instance details Defined in GHC.Cmm Methods pdoc :: Platform -> CmmGraph -> SDoc #
OutputableP Platform CmmInfoTable # |
Instance details Defined in GHC.Cmm Methods pdoc :: Platform -> CmmInfoTable -> SDoc #
OutputableP Platform CmmStatic # |
Instance details Defined in GHC.Cmm Methods pdoc :: Platform -> CmmStatic -> SDoc #
OutputableP Platform CmmTopInfo # |
Instance details Defined in GHC.Cmm Methods pdoc :: Platform -> CmmTopInfo -> SDoc #
OutputableP Platform CLabel # |
Instance details Defined in GHC.Cmm.CLabel Methods pdoc :: Platform -> CLabel -> SDoc #
OutputableP Platform InfoProvEnt # |
Instance details Defined in GHC.Cmm.CLabel Methods pdoc :: Platform -> InfoProvEnt -> SDoc #
OutputableP Platform CmmExpr # |
Instance details Defined in GHC.Cmm.Expr Methods pdoc :: Platform -> CmmExpr -> SDoc #
OutputableP Platform CmmLit # |
Instance details Defined in GHC.Cmm.Expr Methods pdoc :: Platform -> CmmLit -> SDoc #
OutputableP Platform ForeignTarget # |
Instance details Defined in GHC.Cmm.Node Methods pdoc :: Platform -> ForeignTarget -> SDoc #
OutputableP Platform (GenCmmStatics a) # |
Instance details Defined in GHC.Cmm Methods pdoc :: Platform -> GenCmmStatics a -> SDoc #
OutputableP Platform (CmmNode e x) # |
Instance details Defined in GHC.Cmm.Node Methods pdoc :: Platform -> CmmNode e x -> SDoc #
(OutputableP Platform d, OutputableP Platform info, OutputableP Platform i) => OutputableP Platform (GenCmmDecl d info i) # |
Instance details Defined in GHC.Cmm Methods pdoc :: Platform -> GenCmmDecl d info i -> SDoc #
OutputableP Platform (Block CmmNode C C) # |
Instance details Defined in GHC.Cmm.Node Methods pdoc :: Platform -> Block CmmNode C C -> SDoc #
OutputableP Platform (Block CmmNode C O) # |
Instance details Defined in GHC.Cmm.Node Methods pdoc :: Platform -> Block CmmNode C O -> SDoc #
OutputableP Platform (Block CmmNode O C) # |
Instance details Defined in GHC.Cmm.Node Methods pdoc :: Platform -> Block CmmNode O C -> SDoc #
OutputableP Platform (Block CmmNode O O) # |
Instance details Defined in GHC.Cmm.Node Methods pdoc :: Platform -> Block CmmNode O O -> SDoc #
OutputableP Platform (Graph CmmNode e x) # |
Instance details Defined in GHC.Cmm.Node Methods pdoc :: Platform -> Graph CmmNode e x -> SDoc #

data PlatformMisc #

Platform-specific settings formerly hard-coded in Config.hs.

These should probably be all be triaged whether they can be computed from other settings or belong in another another place (like `Platform` above).

Constructors

PlatformMisc |

Fields

- platformMisc_targetPlatformString :: String
- platformMisc_ghcWithInterpreter :: Bool
- platformMisc_libFFI :: Bool
- platformMisc_llvmTarget :: String

# Accessors

dynLibSuffix :: GhcNameVersion -> String #

Dynamic library suffix

sProgramName :: Settings -> String #

sProjectVersion :: Settings -> String #

sGhcUsagePath :: Settings -> FilePath #

sGhciUsagePath :: Settings -> FilePath #

sToolDir :: Settings -> Maybe FilePath #

sTopDir :: Settings -> FilePath #

sGlobalPackageDatabasePath :: Settings -> FilePath #

sLdSupportsCompactUnwind :: Settings -> Bool #

sLdSupportsFilelist :: Settings -> Bool #

sMergeObjsSupportsResponseFiles :: Settings -> Bool #

sLdIsGnuLd :: Settings -> Bool #

sGccSupportsNoPie :: Settings -> Bool #

sUseInplaceMinGW :: Settings -> Bool #

sArSupportsDashL :: Settings -> Bool #

sPgm_L :: Settings -> String #

sPgm_P :: Settings -> (String, [Option]) #

sPgm_F :: Settings -> String #

sPgm_c :: Settings -> String #

sPgm_cxx :: Settings -> String #

sPgm_cpp :: Settings -> (String, [Option]) #

sPgm_a :: Settings -> (String, [Option]) #

sPgm_l :: Settings -> (String, [Option]) #

sPgm_lm :: Settings -> Maybe (String, [Option]) #

sPgm_windres :: Settings -> String #

sPgm_ar :: Settings -> String #

sPgm_otool :: Settings -> String #

sPgm_install_name_tool :: Settings -> String #

sPgm_ranlib :: Settings -> String #

sPgm_lo :: Settings -> (String, [Option]) #

sPgm_lc :: Settings -> (String, [Option]) #

sPgm_las :: Settings -> (String, [Option]) #

sPgm_i :: Settings -> String #

sOpt_L :: Settings -> [String] #

sOpt_P :: Settings -> [String] #

sOpt_P_fingerprint :: Settings -> Fingerprint #

sOpt_F :: Settings -> [String] #

sOpt_c :: Settings -> [String] #

sOpt_cxx :: Settings -> [String] #

sOpt_a :: Settings -> [String] #

sOpt_l :: Settings -> [String] #

sOpt_lm :: Settings -> [String] #

sOpt_windres :: Settings -> [String] #

sOpt_lo :: Settings -> [String] #

sOpt_lc :: Settings -> [String] #

sOpt_i :: Settings -> [String] #

sExtraGccViaCFlags :: Settings -> [String] #

sTargetPlatformString :: Settings -> String #

sGhcWithInterpreter :: Settings -> Bool #

sLibFFI :: Settings -> Bool #