summaryrefslogtreecommitdiff
path: root/rts/rts.cabal.in
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2021-07-12 17:26:47 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-07-27 04:47:51 -0400
commit2ce48fe9d1334dadf6fa1411238e52d65b66ba41 (patch)
tree1f48a9e2e2ae3350c3802875bef128327afdf593 /rts/rts.cabal.in
parent246f08ac032392f808c7aa53dd78a96d9b43e63f (diff)
downloadhaskell-2ce48fe9d1334dadf6fa1411238e52d65b66ba41.tar.gz
rts: Break up adjustor logic
Diffstat (limited to 'rts/rts.cabal.in')
-rw-r--r--rts/rts.cabal.in25
1 files changed, 22 insertions, 3 deletions
diff --git a/rts/rts.cabal.in b/rts/rts.cabal.in
index 22846ecc61..7c0f40dcfa 100644
--- a/rts/rts.cabal.in
+++ b/rts/rts.cabal.in
@@ -12,6 +12,8 @@ flag libdl
default: @CabalHaveLibdl@
flag ffi
default: @CabalHaveLibffi@
+flag libffi-adjustors
+ default: @CabalLibffiAdjustors@
flag need-pthread
default: @CabalNeedLibpthread@
flag libbfd
@@ -417,10 +419,27 @@ library
-- AutoApply is generated
AutoApply.cmm
- if arch(i386) || arch(ppc) || arch(ppc64)
- asm-sources: AdjustorAsm.S
+ -- Adjustor stuff
+ if flag(libffi-adjustors)
+ c-sources: adjustor/LibffiAdjustor.c
+ else
+ -- Use GHC's native adjustors
+ if arch(i386)
+ asm-sources: AdjustorAsm.S
+ c-sources: adjustor/Nativei386.c
+ if arch(x86_64)
+ c-sources: adjustor/NativeAmd64.c
+ if arch(ppc) || arch(ppc64)
+ asm-sources: AdjustorAsm.S
+ c-sources: adjustor/NativePowerPC.c
+ if arch(ia64)
+ c-sources: adjustor/NativeIA64.c
+ if arch(sparc)
+ c-sources: adjustor/NativeSparc.c
+
+ -- Use assembler STG entrypoint on archictures where it is used
if arch(ppc) || arch(ppc64) || arch(s390x) || arch(riscv64)
- asm-sources: StgCRunAsm.S
+ asm-sources: StgCRunAsm.S
c-sources: Adjustor.c
Arena.c