summaryrefslogtreecommitdiff
path: root/hadrian
diff options
context:
space:
mode:
authorRodrigo Mesquita <rodrigo.m.mesquita@gmail.com>2023-05-08 16:19:11 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-05-11 04:12:07 -0400
commitc17bb82f1cc66cb819acbfc7727a6b366097a323 (patch)
tree6c06bd797e954a4a1a4c12fe00623f1362f7c597 /hadrian
parent40c7daed0c971e58e86a8189f82f72e9213af8b6 (diff)
downloadhaskell-c17bb82f1cc66cb819acbfc7727a6b366097a323.tar.gz
Move "target has RTS linker" out of settings
We move the "target has RTS linker" information out of configure into a predicate in GHC, and remove this option from the settings file where it is unnecessary -- it's information statically known from the platform. Note that previously we would consider `powerpc`s and `s390x`s other than `powerpc-ibm-aix*` and `s390x-ibm-linux` to have an RTS linker, but the RTS linker supports neither platform. Closes #23361
Diffstat (limited to 'hadrian')
-rw-r--r--hadrian/bindist/Makefile1
-rw-r--r--hadrian/bindist/config.mk.in1
-rw-r--r--hadrian/cfg/system.config.in1
-rw-r--r--hadrian/src/Oracles/Setting.hs2
-rw-r--r--hadrian/src/Rules/Generate.hs1
-rw-r--r--hadrian/src/Settings/Builders/RunTest.hs5
6 files changed, 4 insertions, 7 deletions
diff --git a/hadrian/bindist/Makefile b/hadrian/bindist/Makefile
index 3f18720253..37e7504969 100644
--- a/hadrian/bindist/Makefile
+++ b/hadrian/bindist/Makefile
@@ -116,7 +116,6 @@ lib/settings : config.mk
@echo ',("target has GNU nonexec stack", "$(TargetHasGnuNonexecStack)")' >> $@
@echo ',("target has .ident directive", "$(TargetHasIdentDirective)")' >> $@
@echo ',("target has subsections via symbols", "$(TargetHasSubsectionsViaSymbols)")' >> $@
- @echo ',("target has RTS linker", "$(TargetHasRTSLinker)")' >> $@
@echo ',("target has libm", "$(TargetHasLibm)")' >> $@
@echo ',("Unregisterised", "$(GhcUnregisterised)")' >> $@
@echo ',("LLVM target", "$(LLVMTarget_CPP)")' >> $@
diff --git a/hadrian/bindist/config.mk.in b/hadrian/bindist/config.mk.in
index a134a00bd7..c98e25e58e 100644
--- a/hadrian/bindist/config.mk.in
+++ b/hadrian/bindist/config.mk.in
@@ -253,7 +253,6 @@ TargetWordBigEndian = @TargetWordBigEndian@
TargetHasGnuNonexecStack = @TargetHasGnuNonexecStack@
TargetHasIdentDirective = @TargetHasIdentDirective@
TargetHasSubsectionsViaSymbols = @TargetHasSubsectionsViaSymbols@
-TargetHasRTSLinker = @TargetHasRTSLinker@
TargetHasLibm = @TargetHasLibm@
TablesNextToCode = @TablesNextToCode@
diff --git a/hadrian/cfg/system.config.in b/hadrian/cfg/system.config.in
index 57c57aa057..17465d2fb4 100644
--- a/hadrian/cfg/system.config.in
+++ b/hadrian/cfg/system.config.in
@@ -173,7 +173,6 @@ target-word-big-endian = @TargetWordBigEndian@
target-has-gnu-nonexec-stack = @TargetHasGnuNonexecStack@
target-has-ident-directive = @TargetHasIdentDirective@
target-has-subsections-via-symbols = @TargetHasSubsectionsViaSymbols@
-target-has-rts-linker = @TargetHasRTSLinker@
target-has-libm = @TargetHasLibm@
target-arm-version = @ARM_ISA@
diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs
index bf49bd1fe0..0ff3174673 100644
--- a/hadrian/src/Oracles/Setting.hs
+++ b/hadrian/src/Oracles/Setting.hs
@@ -79,7 +79,6 @@ data Setting = BuildArch
| TargetOsHaskell
| TargetArmVersion
| TargetWordSize
- | TargetHasRtsLinker
| BourneShell
-- TODO: Reduce the variety of similar flags (e.g. CPP and non-CPP versions).
@@ -181,7 +180,6 @@ setting key = lookupSystemConfig $ case key of
TargetArchHaskell -> "target-arch-haskell"
TargetOsHaskell -> "target-os-haskell"
TargetWordSize -> "target-word-size"
- TargetHasRtsLinker -> "target-has-rts-linker"
BourneShell -> "bourne-shell"
bootIsStage0 :: Stage -> Stage
diff --git a/hadrian/src/Rules/Generate.hs b/hadrian/src/Rules/Generate.hs
index 6aa9f19b47..32a35e9048 100644
--- a/hadrian/src/Rules/Generate.hs
+++ b/hadrian/src/Rules/Generate.hs
@@ -448,7 +448,6 @@ generateSettings = do
, ("target has GNU nonexec stack", expr $ lookupSystemConfig "target-has-gnu-nonexec-stack")
, ("target has .ident directive", expr $ lookupSystemConfig "target-has-ident-directive")
, ("target has subsections via symbols", expr $ lookupSystemConfig "target-has-subsections-via-symbols")
- , ("target has RTS linker", expr $ lookupSystemConfig "target-has-rts-linker")
, ("target has libm", expr $ lookupSystemConfig "target-has-libm")
, ("Unregisterised", expr $ yesNo <$> flag GhcUnregisterised)
, ("LLVM target", getSetting LlvmTarget)
diff --git a/hadrian/src/Settings/Builders/RunTest.hs b/hadrian/src/Settings/Builders/RunTest.hs
index 5e1e16d5aa..b526294f40 100644
--- a/hadrian/src/Settings/Builders/RunTest.hs
+++ b/hadrian/src/Settings/Builders/RunTest.hs
@@ -134,7 +134,10 @@ inTreeCompilerArgs stg = do
libdir <- System.FilePath.normalise . (top -/-)
<$> stageLibPath stg
- rtsLinker <- (== "YES") <$> setting TargetHasRtsLinker
+ -- For this information, we need to query ghc --info, however, that would
+ -- require building ghc, which we don't want to do here. Therefore, the
+ -- logic from `platformHasRTSLinker` is duplicated here.
+ let rtsLinker = not $ arch `elem` ["powerpc", "powerpc64", "powerpc64le", "s390x", "riscv64", "loongarch64", "javascript", "wasm32"]
return TestCompilerArgs{..}