Skip to content

Commit 1031e80

Browse files
michiviMichivi
andauthored
fix: use target libffi instead of build libffi (#538)
Co-authored-by: Michivi <[email protected]>
1 parent 2a03328 commit 1031e80

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

compiler/ghc/default.nix

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,12 @@ let
7373
inherit (bootPkgs) ghc;
7474

7575
# TODO check if this posible fix for segfaults works or not.
76-
libffiStaticEnabled = if libffi == null || !stdenv.targetPlatform.isMusl
77-
then libffi
78-
else targetPackages.libffi.overrideAttrs (old: { dontDisableStatic = true; });
76+
targetLibffi =
77+
if stdenv.targetPlatform.isMusl
78+
then targetPackages.libffi.overrideAttrs (old: { dontDisableStatic = true; })
79+
else if targetPlatform != hostPlatform
80+
then targetPackages.libffi
81+
else libffi;
7982

8083
# TODO(@Ericson2314) Make unconditional
8184
targetPrefix = stdenv.lib.optionalString
@@ -116,7 +119,7 @@ let
116119

117120
# Splicer will pull out correct variations
118121
libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ]
119-
++ [libffiStaticEnabled]
122+
++ [targetLibffi]
120123
++ stdenv.lib.optional (!enableIntegerSimple) gmp
121124
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
122125

@@ -208,7 +211,7 @@ in let configured-src = stdenv.mkDerivation (rec {
208211
configureFlags = [
209212
"--datadir=$doc/share/doc/ghc"
210213
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
211-
] ++ stdenv.lib.optionals (libffiStaticEnabled != null) ["--with-system-libffi" "--with-ffi-includes=${libffiStaticEnabled.dev}/include" "--with-ffi-libraries=${libffiStaticEnabled.out}/lib"
214+
] ++ stdenv.lib.optionals (targetLibffi != null) ["--with-system-libffi" "--with-ffi-includes=${targetLibffi.dev}/include" "--with-ffi-libraries=${targetLibffi.out}/lib"
212215
] ++ stdenv.lib.optional (!enableIntegerSimple) [
213216
"--with-gmp-includes=${targetPackages.gmp.dev}/include" "--with-gmp-libraries=${targetPackages.gmp.out}/lib"
214217
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [

0 commit comments

Comments
 (0)