diff options
-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 |