2024-05-13 21:24:10 +00:00
|
|
|
{ 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 }:
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
let
|
|
|
|
inherit (lib) optionals;
|
|
|
|
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
|
|
|
|
|
2024-05-13 21:24:10 +00:00
|
|
|
in {
|
2024-05-02 00:46:19 +00:00
|
|
|
# same for all gcc's
|
|
|
|
depsBuildBuild = [ buildPackages.stdenv.cc ];
|
|
|
|
|
2024-05-13 21:24:10 +00:00
|
|
|
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 ];
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
# For building runtime libs
|
|
|
|
# same for all gcc's
|
2024-05-13 21:24:10 +00:00
|
|
|
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 ];
|
2024-05-02 00:46:19 +00:00
|
|
|
|
2024-05-13 21:24:10 +00:00
|
|
|
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 ];
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
# threadsCross.package after gcc6 so i assume its okay for 4.8 and 4.9 too
|
2024-05-13 21:24:10 +00:00
|
|
|
depsTargetTarget = optionals
|
|
|
|
(!withoutTargetLibc && threadsCross != { } && threadsCross.package != null)
|
|
|
|
[ threadsCross.package ];
|
2024-05-02 00:46:19 +00:00
|
|
|
}
|