
Rodrigo Mesquita pushed to branch wip/romes/24212 at Glasgow Haskell Compiler / GHC Commits: db272f43 by Rodrigo Mesquita at 2025-07-10T22:11:19+01:00 Still work to do - - - - - 4 changed files: - compiler/GHC/Driver/DynFlags.hs - compiler/GHC/Driver/Session.hs - compiler/GHC/Settings.hs - compiler/GHC/Settings/IO.hs Changes: ===================================== compiler/GHC/Driver/DynFlags.hs ===================================== @@ -145,6 +145,7 @@ import GHC.Foreign (withCString, peekCString) import qualified Data.Set as Set import qualified GHC.LanguageExtensions as LangExt +import GHC.Toolchain.Target (Target) -- ----------------------------------------------------------------------------- -- DynFlags @@ -178,6 +179,7 @@ data DynFlags = DynFlags { toolSettings :: {-# UNPACK #-} !ToolSettings, platformMisc :: {-# UNPACK #-} !PlatformMisc, rawSettings :: [(String, String)], + rawTarget :: Target, tmpDir :: TempDir, llvmOptLevel :: Int, -- ^ LLVM optimisation level @@ -656,6 +658,7 @@ defaultDynFlags mySettings = targetPlatform = sTargetPlatform mySettings, platformMisc = sPlatformMisc mySettings, rawSettings = sRawSettings mySettings, + rawTarget = sRawTarget mySettings, tmpDir = panic "defaultDynFlags: uninitialized tmpDir", ===================================== compiler/GHC/Driver/Session.hs ===================================== @@ -3454,8 +3454,68 @@ compilerInfo dflags -- Next come the settings, so anything else can be overridden -- in the settings file (as "lookup" uses the first match for the -- key) - : map (fmap $ expandDirectories (topDir dflags) (toolDir dflags)) - (rawSettings dflags) + -- TODO: + -- : map (fmap $ ) + -- (rawSettings dflags) + : + [("C compiler command", query), + ("C compiler flags", "$(SettingsCCompilerFlags)"), + ("C++ compiler command", "$(SettingsCxxCompilerCommand)"), + ("C++ compiler flags", "$(SettingsCxxCompilerFlags)"), + ("C compiler link flags", "$(SettingsCCompilerLinkFlags)"), + ("C compiler supports -no-pie", "$(SettingsCCompilerSupportsNoPie)"), + ("CPP command", "$(SettingsCPPCommand)"), + ("CPP flags", "$(SettingsCPPFlags)"), + ("Haskell CPP command", "$(SettingsHaskellCPPCommand)"), + ("Haskell CPP flags", "$(SettingsHaskellCPPFlags)"), + ("JavaScript CPP command", "$(SettingsJavaScriptCPPCommand)"), + ("JavaScript CPP flags", "$(SettingsJavaScriptCPPFlags)"), + ("C-- CPP command", "$(SettingsCmmCPPCommand)"), + ("C-- CPP flags", "$(SettingsCmmCPPFlags)"), + ("C-- CPP supports -g0", "$(SettingsCmmCPPSupportsG0)"), + ("ld supports compact unwind", "$(LdHasNoCompactUnwind)"), + ("ld supports filelist", "$(LdHasFilelist)"), + ("ld supports single module", "$(LdHasSingleModule)"), + ("ld is GNU ld", "$(LdIsGNULd)"), + ("Merge objects command", "$(SettingsMergeObjectsCommand)"), + ("Merge objects flags", "$(SettingsMergeObjectsFlags)"), + ("Merge objects supports response files", "$(MergeObjsSupportsResponseFiles)"), + ("ar command", "$(SettingsArCommand)"), + ("ar flags", "$(ArArgs)"), + ("ar supports at file", "$(ArSupportsAtFile)"), + ("ar supports -L", "$(ArSupportsDashL)"), + ("ranlib command", "$(SettingsRanlibCommand)"), + ("otool command", "$(SettingsOtoolCommand)"), + ("install_name_tool command", "$(SettingsInstallNameToolCommand)"), + ("windres command", "$(SettingsWindresCommand)"), + ("unlit command", "$$topdir/../bin/$(CrossCompilePrefix)unlit"), + ("cross compiling", "$(CrossCompiling)"), + ("target platform string", "$(TARGETPLATFORM)"), + ("target os", "$(HaskellTargetOs)"), + ("target arch", "$(HaskellTargetArch)"), + ("target word size", "$(TargetWordSize)"), + ("target word big endian", "$(TargetWordBigEndian)"), + ("target has GNU nonexec stack", "$(TargetHasGnuNonexecStack)"), + ("target has .ident directive", "$(TargetHasIdentDirective)"), + ("target has subsections via symbols", "$(TargetHasSubsectionsViaSymbols)"), + ("target has libm", "$(TargetHasLibm)"), + ("Unregisterised", "$(GhcUnregisterised)"), + ("LLVM target", "$(LLVMTarget)"), + ("LLVM llc command", "$(SettingsLlcCommand)"), + ("LLVM opt command", "$(SettingsOptCommand)"), + ("LLVM llvm-as command", "$(SettingsLlvmAsCommand)"), + ("LLVM llvm-as flags", "$(SettingsLlvmAsFlags)"), + ("target RTS linker only supports shared libraries", "$(TargetRTSLinkerOnlySupportsSharedLibs)"), + ("Use interpreter", "$(GhcWithInterpreter)"), + ("Support SMP", "$(GhcWithSMP)"), + ("RTS ways", "$(GhcRTSWays)"), + ("Tables next to code", "$(TablesNextToCode)"), + ("Leading underscore", "$(LeadingUnderscore)"), + ("Use LibFFI", "$(UseLibffiForAdjustors)"), + ("RTS expects libdw", "$(GhcRtsWithLibdw)"), + ("Relative Global Package DB", "package.conf.d"), + ("base unit-id", "$(BaseUnitId)") + ] ++ [("Project version", projectVersion dflags), ("Project Git commit id", cProjectGitCommitId), ("Project Version Int", cProjectVersionInt), @@ -3513,8 +3573,8 @@ compilerInfo dflags showBool False = "NO" platform = targetPlatform dflags isWindows = platformOS platform == OSMinGW32 - expandDirectories :: FilePath -> Maybe FilePath -> String -> String - expandDirectories topd mtoold = expandToolDir mtoold . expandTopDir topd + expandDirectories = expandToolDir (toolDir dflags) . expandTopDir (topDir dflags) + query f = f (rawTarget dflags) -- Note [Special unit-ids] -- ~~~~~~~~~~~~~~~~~~~~~~~ ===================================== compiler/GHC/Settings.hs ===================================== @@ -74,6 +74,7 @@ import GHC.Utils.CliOption import GHC.Utils.Fingerprint import GHC.Platform import GHC.Unit.Types +import GHC.Toolchain.Target data Settings = Settings { sGhcNameVersion :: {-# UNPACk #-} !GhcNameVersion @@ -86,6 +87,10 @@ data Settings = Settings -- You shouldn't need to look things up in rawSettings directly. -- They should have their own fields instead. , sRawSettings :: [(String, String)] + + -- Store the target to print out information about the raw target description + -- (e.g. in --info) + , sRawTarget :: Target } data UnitSettings = UnitSettings { unitSettings_baseUnitId :: !UnitId } ===================================== compiler/GHC/Settings/IO.hs ===================================== @@ -239,6 +239,7 @@ initSettings top_dir = do } , sRawSettings = settingsList + , sRawTarget = target } getTargetPlatform :: Bool {-^ Does target have libm -} -> Target -> Platform View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/db272f43c702343f3941bc1716a823d5... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/db272f43c702343f3941bc1716a823d5... You're receiving this email because of your account on gitlab.haskell.org.