From 895a3866798bccf9aec6da980c64fe6e6c2b9bb3 Mon Sep 17 00:00:00 2001
From: Cheng Shao <terrorjack@type.dance>
Date: Thu, 3 Oct 2024 16:46:15 +0000
Subject: [PATCH] hadrian/compiler: flip on support for shared libs & ghci for
 wasm

This commit flips on the support for shared libs and ghci for the wasm
target, given all required support logic has been added in previous
commits.

(cherry picked from commit 652e72394b715abc931b1104a4b683bb16909695)
---
 compiler/GHC/Platform.hs                                    | 1 -
 hadrian/src/Oracles/Flag.hs                                 | 3 +--
 hadrian/src/Oracles/Setting.hs                              | 6 ++++--
 hadrian/src/Settings/Builders/RunTest.hs                    | 2 +-
 .../driver/T20696/T20696-static.stderr-wasm32-unknown-wasi  | 3 +++
 5 files changed, 9 insertions(+), 6 deletions(-)
 create mode 100644 testsuite/tests/driver/T20696/T20696-static.stderr-wasm32-unknown-wasi

diff --git a/compiler/GHC/Platform.hs b/compiler/GHC/Platform.hs
index 42f2aa041e3..da74d324e54 100644
--- a/compiler/GHC/Platform.hs
+++ b/compiler/GHC/Platform.hs
@@ -253,7 +253,6 @@ platformHasRTSLinker p = case archOS_arch (platformArchOS p) of
   ArchRISCV64       -> False
   ArchLoongArch64   -> False
   ArchJavaScript    -> False
-  ArchWasm32        -> False
   _                 -> True
 
 
diff --git a/hadrian/src/Oracles/Flag.hs b/hadrian/src/Oracles/Flag.hs
index af4e268fb85..2ca3d0f0507 100644
--- a/hadrian/src/Oracles/Flag.hs
+++ b/hadrian/src/Oracles/Flag.hs
@@ -110,11 +110,10 @@ platformSupportsSharedLibs :: Action Bool
 -- FIXME: This is querying about the target but is named "platformXXX", targetSupportsSharedLibs would be better
 platformSupportsSharedLibs = do
     windows       <- isWinTarget
-    wasm          <- anyTargetArch [ ArchWasm32 ]
     ppc_linux     <- (&&) <$> anyTargetArch [ ArchPPCĂ‚ ] <*> anyTargetOs [ OSLinux ]
     solaris       <- (&&) <$> anyTargetArch [ ArchX86 ] <*> anyTargetOs [ OSSolaris2 ]
     javascript    <- anyTargetArch     [ ArchJavaScript ]
-    return $ not (windows || wasm || javascript || ppc_linux || solaris)
+    return $ not (windows || javascript || ppc_linux || solaris)
 
 -- | Does the target support threaded RTS?
 targetSupportsThreadedRts :: Action Bool
diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs
index e742b49717c..41ed3eae1a2 100644
--- a/hadrian/src/Oracles/Setting.hs
+++ b/hadrian/src/Oracles/Setting.hs
@@ -196,12 +196,14 @@ ghcWithInterpreter :: Action Bool
 ghcWithInterpreter = do
     goodOs <- anyTargetOs [ OSMinGW32, OSLinux, OSSolaris2 -- TODO "cygwin32"?,
                           , OSFreeBSD, OSDragonFly, OSNetBSD, OSOpenBSD
-                          , OSDarwin, OSKFreeBSD ]
+                          , OSDarwin, OSKFreeBSD
+                          , OSWasi ]
     goodArch <- (||) <$>
                 anyTargetArch [ ArchX86, ArchX86_64, ArchPPC
                               , ArchAArch64, ArchS390X
                               , ArchPPC_64 ELF_V1, ArchPPC_64 ELF_V2
-                              , ArchRISCV64 ]
+                              , ArchRISCV64
+                              , ArchWasm32 ]
                               <*> isArmTarget
     return $ goodOs && goodArch
 
diff --git a/hadrian/src/Settings/Builders/RunTest.hs b/hadrian/src/Settings/Builders/RunTest.hs
index 8d47882f1cd..81e2b22c76c 100644
--- a/hadrian/src/Settings/Builders/RunTest.hs
+++ b/hadrian/src/Settings/Builders/RunTest.hs
@@ -141,7 +141,7 @@ inTreeCompilerArgs stg = do
     -- 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"]
+    let rtsLinker = not $ arch `elem` ["powerpc", "powerpc64", "powerpc64le", "s390x", "riscv64", "loongarch64", "javascript"]
 
     return TestCompilerArgs{..}
 
diff --git a/testsuite/tests/driver/T20696/T20696-static.stderr-wasm32-unknown-wasi b/testsuite/tests/driver/T20696/T20696-static.stderr-wasm32-unknown-wasi
new file mode 100644
index 00000000000..54d5ad5bddc
--- /dev/null
+++ b/testsuite/tests/driver/T20696/T20696-static.stderr-wasm32-unknown-wasi
@@ -0,0 +1,3 @@
+[1 of 3] Compiling C                ( C.hs, C.o, C.dyn_o )
+[2 of 3] Compiling B                ( B.hs, B.o )
+[3 of 3] Compiling A                ( A.hs, A.o )
-- 
GitLab