-
Notifications
You must be signed in to change notification settings - Fork 244
/
Copy pathghc.nix
81 lines (81 loc) · 4.77 KB
/
ghc.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{ system
, compiler
, flags
, pkgs
, hsPkgs
, pkgconfPkgs
, errorHandler
, config
, ... }:
{
flags = {
internal-interpreter = false;
dynamic-system-linker = true;
build-tool-depends = true;
with-libzstd = false;
static-libzstd = false;
hadrian-stage0 = false;
};
package = {
specVersion = "2.2";
identifier = { name = "ghc"; version = "9.10.1"; };
license = "BSD-3-Clause";
copyright = "";
maintainer = "[email protected]";
author = "The GHC Team";
homepage = "http://www.haskell.org/ghc/";
url = "";
synopsis = "The GHC API";
description = "GHC's functionality can be useful for more things than just\ncompiling Haskell programs. Important use cases are programs\nthat analyse (and perhaps transform) Haskell code. Others\ninclude loading Haskell code dynamically in a GHCi-like manner.\nFor this reason, a lot of GHC's functionality is made available\nthrough this package.\n\nSee <https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler>\nfor more information.\n\n__This package is not PVP-compliant.__\n\nThis package directly exposes GHC internals, which can and do change with\nevery release.";
buildType = "Custom";
setup-depends = [
(hsPkgs.pkgsBuildBuild.base or (pkgs.pkgsBuildBuild.base or (errorHandler.setupDepError "base")))
(hsPkgs.pkgsBuildBuild.Cabal or (pkgs.pkgsBuildBuild.Cabal or (errorHandler.setupDepError "Cabal")))
(hsPkgs.pkgsBuildBuild.directory or (pkgs.pkgsBuildBuild.directory or (errorHandler.setupDepError "directory")))
(hsPkgs.pkgsBuildBuild.process or (pkgs.pkgsBuildBuild.process or (errorHandler.setupDepError "process")))
(hsPkgs.pkgsBuildBuild.filepath or (pkgs.pkgsBuildBuild.filepath or (errorHandler.setupDepError "filepath")))
(hsPkgs.pkgsBuildBuild.containers or (pkgs.pkgsBuildBuild.containers or (errorHandler.setupDepError "containers")))
];
};
components = {
"library" = {
depends = [
(hsPkgs."base" or (errorHandler.buildDepError "base"))
(hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq"))
(hsPkgs."directory" or (errorHandler.buildDepError "directory"))
(hsPkgs."process" or (errorHandler.buildDepError "process"))
(hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring"))
(hsPkgs."binary" or (errorHandler.buildDepError "binary"))
(hsPkgs."time" or (errorHandler.buildDepError "time"))
(hsPkgs."containers" or (errorHandler.buildDepError "containers"))
(hsPkgs."array" or (errorHandler.buildDepError "array"))
(hsPkgs."filepath" or (errorHandler.buildDepError "filepath"))
(hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell"))
(hsPkgs."hpc" or (errorHandler.buildDepError "hpc"))
(hsPkgs."transformers" or (errorHandler.buildDepError "transformers"))
(hsPkgs."exceptions" or (errorHandler.buildDepError "exceptions"))
(hsPkgs."semaphore-compat" or (errorHandler.buildDepError "semaphore-compat"))
(hsPkgs."stm" or (errorHandler.buildDepError "stm"))
(hsPkgs."ghc-boot" or (errorHandler.buildDepError "ghc-boot"))
(hsPkgs."ghc-heap" or (errorHandler.buildDepError "ghc-heap"))
(hsPkgs."ghci" or (errorHandler.buildDepError "ghci"))
] ++ (if system.isWindows
then [ (hsPkgs."Win32" or (errorHandler.buildDepError "Win32")) ]
else [ (hsPkgs."unix" or (errorHandler.buildDepError "unix")) ]);
libs = pkgs.lib.optionals (flags.with-libzstd) (if flags.static-libzstd
then pkgs.lib.optional (!system.isOsx) (pkgs.":libzstd.a" or (errorHandler.sysDepError ":libzstd.a"))
else [ (pkgs."zstd" or (errorHandler.sysDepError "zstd")) ]);
build-tools = pkgs.lib.optionals (flags.build-tool-depends) [
(hsPkgs.pkgsBuildBuild.alex.components.exes.alex or (pkgs.pkgsBuildBuild.alex or (errorHandler.buildToolDepError "alex:alex")))
(hsPkgs.pkgsBuildBuild.happy.components.exes.happy or (pkgs.pkgsBuildBuild.happy or (errorHandler.buildToolDepError "happy:happy")))
(hsPkgs.pkgsBuildBuild.genprimopcode.components.exes.genprimopcode or (pkgs.pkgsBuildBuild.genprimopcode or (errorHandler.buildToolDepError "genprimopcode:genprimopcode")))
(hsPkgs.pkgsBuildBuild.deriveConstants.components.exes.deriveConstants or (pkgs.pkgsBuildBuild.deriveConstants or (errorHandler.buildToolDepError "deriveConstants:deriveConstants")))
];
buildable = if flags.with-libzstd
then if flags.static-libzstd
then if system.isOsx then false else true
else true
else true;
};
};
} // rec { src = pkgs.lib.mkDefault ./.; }