diff options
author | Ben Gamari <ben@smart-cactus.org> | 2021-07-21 09:22:06 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-07-27 04:47:51 -0400 |
commit | 63184a71277aa15608659ad20f45b7b0fe9746bc (patch) | |
tree | 09ebc39bfc16ec045931be9abd39005a144d5bf8 | |
parent | dd3c9602fdb0d408509d166cc0bf05777753ca43 (diff) | |
download | haskell-63184a71277aa15608659ad20f45b7b0fe9746bc.tar.gz |
rts: Don't declare libCffi as bundled when using system libffi
Previously the rts's cabal file would claim that it bundled libffi, even
if we are using the system's libffi. Fixes #19869.
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | hadrian/src/Settings/Packages.hs | 2 | ||||
-rw-r--r-- | rts/rts.cabal.in | 14 |
3 files changed, 15 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac index 535a0c3b88..b91c86f1ba 100644 --- a/configure.ac +++ b/configure.ac @@ -1083,10 +1083,12 @@ AC_ARG_WITH([system-libffi], ]) AS_IF([test "x$with_system_libffi" = "xyes"], - [UseSystemLibFFI="YES"], [UseSystemLibFFI="NO"] + [UseSystemLibFFI="YES"; CabalUseSystemLibFFI="True"], + [UseSystemLibFFI="NO"; CabalUseSystemLibFFI="True"] ) AC_SUBST(UseSystemLibFFI) +AC_SUBST(CabalUseSystemLibFFI) AC_ARG_WITH([ffi-includes], [AS_HELP_STRING([--with-ffi-includes=ARG], diff --git a/hadrian/src/Settings/Packages.hs b/hadrian/src/Settings/Packages.hs index 3b722e05a9..1a3d191c99 100644 --- a/hadrian/src/Settings/Packages.hs +++ b/hadrian/src/Settings/Packages.hs @@ -245,6 +245,7 @@ rtsPackageArgs = package rts ? do way <- getWay path <- getBuildPath top <- expr topDirectory + useSystemFfi <- expr $ flag UseSystemFfi libffiName <- expr libffiLibraryName ffiIncludeDir <- getSetting FfiIncludeDir ffiLibraryDir <- getSetting FfiLibDir @@ -355,6 +356,7 @@ rtsPackageArgs = package rts ? do , any (wayUnit Debug) rtsWays `cabalFlag` "debug" , any (wayUnit Logging) rtsWays `cabalFlag` "logging" , any (wayUnit Dynamic) rtsWays `cabalFlag` "dynamic" + , useSystemFfi `cabalFlag` "use-system-libffi" , useLibffiForAdjustors `cabalFlag` "libffi-adjustors" , Debug `wayUnit` way `cabalFlag` "find-ptr" ] diff --git a/rts/rts.cabal.in b/rts/rts.cabal.in index ded2f15509..c46873e205 100644 --- a/rts/rts.cabal.in +++ b/rts/rts.cabal.in @@ -12,6 +12,8 @@ flag libdl default: @CabalHaveLibdl@ flag ffi default: @CabalHaveLibffi@ +flag use-system-libffi + default: @CabalUseSystemLibFFI@ flag libffi-adjustors default: @CabalLibffiAdjustors@ flag need-pthread @@ -57,10 +59,14 @@ library -- expects the unit-id to be -- set without version ghc-options: -this-unit-id rts - if os(windows) - extra-bundled-libraries: Cffi-6 - else - extra-bundled-libraries: Cffi + + -- If we are using an in-tree libffi then we must declare it as a bundled + -- library to ensure that Cabal installs it. + if !flag(use-system-libffi) + if os(windows) + extra-bundled-libraries: Cffi-6 + else + extra-bundled-libraries: Cffi -- The make build system does something special in config.mk.in -- for generating profiled, debugged, etc builds of those |