diff options
Diffstat (limited to 'pkgs/development/haskell-modules')
-rw-r--r-- | pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix | 4 | ||||
-rw-r--r-- | pkgs/development/haskell-modules/make-package-set.nix | 14 |
2 files changed, 15 insertions, 3 deletions
diff --git a/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix b/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix index e14ad08b9263..0c6320e4f77b 100644 --- a/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix +++ b/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix @@ -272,7 +272,5 @@ self: super: { # the workaround on 9.6 is to revert to the LLVM backend (which is used # for these sorts of situations even on 9.2 and 9.4). # https://gitlab.haskell.org/ghc/ghc/-/issues/23746#note_525318 - tls = appendConfigureFlags - (lib.optionals pkgs.stdenv.hostPlatform.isAarch64 [ "--ghc-option=-fllvm" ]) - super.tls; + tls = if pkgs.stdenv.hostPlatform.isAarch64 then self.forceLlvmCodegenBackend super.tls else super.tls; } diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix index 753945ea6fc1..c39c934bed64 100644 --- a/pkgs/development/haskell-modules/make-package-set.nix +++ b/pkgs/development/haskell-modules/make-package-set.nix @@ -625,4 +625,18 @@ in package-set { inherit pkgs lib callPackage; } self // { else pkg ) { }; + /* + Modify given Haskell package to force GHC to employ the LLVM + codegen backend when compiling. Useful when working around bugs + in a native codegen backend GHC defaults to. + + Example: + forceLlvmCodegenBackend tls + + Type: drv -> drv + */ + forceLlvmCodegenBackend = haskellLib.overrideCabal (drv: { + configureFlags = drv.configureFlags or [ ] ++ [ "--ghc-option=-fllvm" ]; + buildTools = drv.buildTools or [ ] ++ [ self.llvmPackages.llvm ]; + }); } |