2
0
Fork 0
genodepkgs/overlay/default.nix

79 lines
2.3 KiB
Nix

self: super:
let
inherit (super) lib stdenv;
genodeTarget = stdenv.targetPlatform ? isGenode
-> stdenv.targetPlatform.isGenode;
genodelibc = self.callPackage ./libc { stdenv = self.crossLibcStdenv; };
in {
binutils-unwrapped = super.binutils-unwrapped.overrideAttrs
(attrs: { patches = attrs.patches ++ [ ./binutils.patch ]; });
cmake = super.cmake.overrideAttrs (attrs: {
postInstall = if genodeTarget then ''
local MODULE="$out/share/cmake-${
lib.versions.majorMinor attrs.version
}/Modules/Platform/Genode.cmake"
if [ -e "$MODULE" ]; then
echo "Upstream provides $MODULE!"
exit 1
fi
cp ${./Genode.cmake} $MODULE
'' else
null;
});
llvmPackages = self.recurseIntoAttrs self.llvmPackages_8;
llvmPackages_8 = super.llvmPackages_8 // {
llvm = super.llvmPackages_8.llvm.overrideAttrs
(attrs: { patches = [ ./llvm.patch ]; });
compiler-rt = super.llvmPackages_8.compiler-rt.overrideAttrs
(attrs: { patches = attrs.patches ++ [ ./compiler-rt.patch ]; });
libcxxabi = (super.llvmPackages_8.libcxxabi.override {
enableShared = false;
}).overrideAttrs (attrs: {
postUnpack = attrs.postUnpack + ''
patch -p1 -d $(ls -d llvm-*) -i ${./llvm-genode.patch}
'';
cmakeFlags = attrs.cmakeFlags ++ (lib.optionals genodeTarget [
"-DCMAKE_C_FLAGS=-nodefaultlibs"
"-DLIBCXXABI_USE_LLVM_UNWINDER=OFF"
"-DLIBCXXABI_ENABLE_THREADS=OFF"
"-DLIBCXXABI_BAREMETAL=ON"
]);
installPhase = attrs.installPhase
+ "install -m 644 ../include/*.h $out/include";
});
libcxx = (super.llvmPackages_8.libcxx.override {
enableShared = false;
}).overrideAttrs (attrs: {
patches = attrs.patches ++ (lib.optional genodeTarget ./libc++.patch);
nativeBuildInputs = attrs.nativeBuildInputs
++ [ super.buildPackages.python ];
cmakeFlags = attrs.cmakeFlags
++ (lib.optional genodeTarget "-DLIBCXX_ENABLE_THREADS=OFF");
});
clang-unwrapped = super.llvmPackages_8.clang-unwrapped.overrideAttrs
(attrs: {
patches = attrs.patches ++ (lib.optional genodeTarget ./clang.patch);
});
};
genodeHeaders = self.callPackage ./headers { };
inherit genodelibc;
libcCross = genodelibc;
}