110 lines
2.4 KiB
Nix
110 lines
2.4 KiB
Nix
|
{
|
||
|
lib,
|
||
|
stdenv,
|
||
|
version,
|
||
|
buildPackages,
|
||
|
targetPackages,
|
||
|
texinfo,
|
||
|
which,
|
||
|
gettext,
|
||
|
pkg-config ? null,
|
||
|
gnused,
|
||
|
patchelf,
|
||
|
gmp,
|
||
|
mpfr,
|
||
|
libmpc,
|
||
|
libucontext ? null,
|
||
|
libxcrypt ? null,
|
||
|
cloog ? null,
|
||
|
isl ? null,
|
||
|
zlib ? null,
|
||
|
gnat-bootstrap ? null,
|
||
|
flex ? null,
|
||
|
boehmgc ? null,
|
||
|
zip ? null,
|
||
|
unzip ? null,
|
||
|
gtk2 ? null,
|
||
|
libart_lgpl ? null,
|
||
|
perl ? null,
|
||
|
xlibs ? null,
|
||
|
langJava ? false,
|
||
|
javaAwtGtk ? false,
|
||
|
langAda ? false,
|
||
|
langGo ? false,
|
||
|
withoutTargetLibc ? null,
|
||
|
threadsCross ? null,
|
||
|
}:
|
||
|
|
||
|
let
|
||
|
inherit (lib) optionals;
|
||
|
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
|
||
|
in
|
||
|
|
||
|
{
|
||
|
# same for all gcc's
|
||
|
depsBuildBuild = [ buildPackages.stdenv.cc ];
|
||
|
|
||
|
nativeBuildInputs =
|
||
|
[
|
||
|
texinfo
|
||
|
which
|
||
|
gettext
|
||
|
]
|
||
|
++ optionals (perl != null) [ perl ]
|
||
|
++ optionals javaAwtGtk [ pkg-config ]
|
||
|
++ optionals (with stdenv.targetPlatform; isVc4 || isRedox && flex != null) [ flex ]
|
||
|
++ optionals langAda [ gnat-bootstrap ]
|
||
|
# The builder relies on GNU sed (for instance, Darwin's `sed' fails with
|
||
|
# "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
|
||
|
++ optionals buildPlatform.isDarwin [ gnused ];
|
||
|
|
||
|
# For building runtime libs
|
||
|
# same for all gcc's
|
||
|
depsBuildTarget =
|
||
|
(
|
||
|
if hostPlatform == buildPlatform then
|
||
|
[
|
||
|
targetPackages.stdenv.cc.bintools # newly-built gcc will be used
|
||
|
]
|
||
|
else
|
||
|
assert targetPlatform == hostPlatform;
|
||
|
[
|
||
|
# build != host == target
|
||
|
stdenv.cc
|
||
|
]
|
||
|
)
|
||
|
++ optionals targetPlatform.isLinux [ patchelf ];
|
||
|
|
||
|
buildInputs =
|
||
|
[
|
||
|
gmp
|
||
|
mpfr
|
||
|
libmpc
|
||
|
]
|
||
|
++ optionals (lib.versionAtLeast version "10") [ libxcrypt ]
|
||
|
++ [
|
||
|
targetPackages.stdenv.cc.bintools # For linking code at run-time
|
||
|
]
|
||
|
++ optionals (lib.versionOlder version "5" && cloog != null) [ cloog ]
|
||
|
++ optionals (isl != null) [ isl ]
|
||
|
++ optionals (zlib != null) [ zlib ]
|
||
|
++ optionals langJava [
|
||
|
boehmgc
|
||
|
zip
|
||
|
unzip
|
||
|
]
|
||
|
++ optionals javaAwtGtk (
|
||
|
[
|
||
|
gtk2
|
||
|
libart_lgpl
|
||
|
]
|
||
|
++ xlibs
|
||
|
)
|
||
|
++ optionals (langGo && stdenv.hostPlatform.isMusl) [ libucontext ];
|
||
|
|
||
|
# threadsCross.package after gcc6 so i assume its okay for 4.8 and 4.9 too
|
||
|
depsTargetTarget = optionals (
|
||
|
!withoutTargetLibc && threadsCross != { } && threadsCross.package != null
|
||
|
) [ threadsCross.package ];
|
||
|
}
|