forked from mirrors/nixpkgs
58dbc09c41
* gnatboot can't be used as cross compiler, so we should prevent this at eval time. * Explicitly checking hostPlatform is also a lot nicer. Keeping system since gnatboot seems to be statically linked so gnu/musl which is also tracked in config isn't important.
56 lines
1.4 KiB
Nix
56 lines
1.4 KiB
Nix
{ lib, stdenv, fetchurl }:
|
|
|
|
if stdenv.hostPlatform != stdenv.targetPlatform
|
|
then builtins.throw "gnatboot can't cross-compile"
|
|
else
|
|
|
|
stdenv.mkDerivation {
|
|
pname = "gentoo-gnatboot";
|
|
version = "4.1";
|
|
|
|
src = if stdenv.hostPlatform.system == "i686-linux" then
|
|
fetchurl {
|
|
url = mirror://gentoo/distfiles/gnatboot-4.1-i386.tar.bz2;
|
|
sha256 = "0665zk71598204bf521vw68i5y6ccqarq9fcxsqp7ccgycb4lysr";
|
|
}
|
|
else if stdenv.hostPlatform.system == "x86_64-linux" then
|
|
fetchurl {
|
|
url = mirror://gentoo/distfiles/gnatboot-4.1-amd64.tar.bz2;
|
|
sha256 = "1li4d52lmbnfs6llcshlbqyik2q2q4bvpir0f7n38nagp0h6j0d4";
|
|
}
|
|
else
|
|
throw "Platform not supported";
|
|
|
|
dontStrip = 1;
|
|
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp -R * $out
|
|
|
|
set +e
|
|
for a in $out/bin/* ; do
|
|
patchelf --interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
|
|
--set-rpath $(cat $NIX_CC/nix-support/orig-libc)/lib:$(cat $NIX_CC/nix-support/orig-cc)/lib64:$(cat $NIX_CC/nix-support/orig-cc)/lib $a
|
|
done
|
|
set -e
|
|
|
|
mv $out/bin/gnatgcc_2wrap $out/bin/gnatgcc
|
|
ln -s $out/bin/gnatgcc $out/bin/gcc
|
|
'';
|
|
|
|
passthru = {
|
|
langC = true; # TRICK for gcc-wrapper to wrap it
|
|
langCC = false;
|
|
langFortran = false;
|
|
langAda = true;
|
|
};
|
|
|
|
meta = with lib; {
|
|
homepage = "https://gentoo.org";
|
|
license = licenses.gpl3Plus;
|
|
maintainers = [ maintainers.lucus16 ];
|
|
|
|
platforms = platforms.linux;
|
|
};
|
|
}
|