syndicate_utils: 20240509 -> 20250110
[NixPkgs.git] / pkgs / development / compilers / gcc / common / dependencies.nix
blob0e29fd51e45bb955ae7e5289f39ff4ad6c3be0cf
2   lib,
3   stdenv,
4   version,
5   buildPackages,
6   targetPackages,
7   texinfo,
8   which,
9   gettext,
10   gnused,
11   patchelf,
12   gmp,
13   mpfr,
14   libmpc,
15   libucontext ? null,
16   libxcrypt ? null,
17   darwin ? null,
18   isl ? null,
19   zlib ? null,
20   gnat-bootstrap ? null,
21   flex ? null,
22   perl ? null,
23   langAda ? false,
24   langGo ? false,
25   langRust ? false,
26   cargo,
27   withoutTargetLibc ? null,
28   threadsCross ? null,
31 let
32   inherit (lib) optionals;
33   inherit (stdenv) buildPlatform hostPlatform targetPlatform;
37   # same for all gcc's
38   depsBuildBuild = [ buildPackages.stdenv.cc ];
40   nativeBuildInputs =
41     [
42       texinfo
43       which
44       gettext
45     ]
46     ++ optionals (perl != null) [ perl ]
47     ++ optionals (with stdenv.targetPlatform; isVc4 || isRedox && flex != null) [ flex ]
48     ++ optionals langAda [ gnat-bootstrap ]
49     ++ optionals langRust [ cargo ]
50     # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
51     # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
52     ++ optionals buildPlatform.isDarwin [ gnused ];
54   # For building runtime libs
55   # same for all gcc's
56   depsBuildTarget =
57     (
58       if hostPlatform == buildPlatform then
59         [
60           targetPackages.stdenv.cc.bintools # newly-built gcc will be used
61         ]
62       else
63         assert targetPlatform == hostPlatform;
64         [
65           # build != host == target
66           stdenv.cc
67         ]
68     )
69     ++ optionals targetPlatform.isLinux [ patchelf ];
71   buildInputs =
72     [
73       gmp
74       mpfr
75       libmpc
76     ]
77     ++ optionals (lib.versionAtLeast version "10") [ libxcrypt ]
78     ++ [
79       targetPackages.stdenv.cc.bintools # For linking code at run-time
80     ]
81     ++ optionals (isl != null) [ isl ]
82     ++ optionals (zlib != null) [ zlib ]
83     ++ optionals (langGo && stdenv.hostPlatform.isMusl) [ libucontext ]
84     ++ optionals (lib.versionAtLeast version "14" && stdenv.hostPlatform.isDarwin) [
85       darwin.apple_sdk.frameworks.CoreServices
86     ];
88   depsTargetTarget = optionals (
89     !withoutTargetLibc && threadsCross != { } && threadsCross.package != null
90   ) [ threadsCross.package ];