76 lines
2.6 KiB
Nix
76 lines
2.6 KiB
Nix
{ final, prev }:
|
|
|
|
let
|
|
addPatches = patches': drv:
|
|
(drv.overrideAttrs
|
|
({ patches ? [ ], ... }: { patches = patches ++ patches'; }));
|
|
|
|
libraries = prev.llvmPackages_11.libraries.extend (final': prev': {
|
|
|
|
libcxxabi = prev'.libcxxabi.overrideAttrs ({ cmakeFlags, ... }: {
|
|
cmakeFlags = cmakeFlags ++ [ "-DLIBCXXABI_ENABLE_THREADS=OFF" ];
|
|
});
|
|
|
|
libcxx = prev'.libcxx.overrideAttrs ({ cmakeFlags, patches ? [ ], ... }: {
|
|
patches = patches ++ [ ./libcxx-genode.patch ];
|
|
});
|
|
|
|
});
|
|
|
|
tools = prev.llvmPackages_11.tools.extend (final': prev': {
|
|
|
|
libllvm = addPatches [ ./llvm-genode.patch ] prev'.libllvm;
|
|
|
|
lld = addPatches [ ./lld-genode.patch ] prev'.lld;
|
|
|
|
libclang = prev'.libclang.overrideAttrs
|
|
({ patches ? [ ], postPatch, ... }: {
|
|
patches = patches ++ [ ./clang-genode.patch ];
|
|
postPatch = postPatch + ''
|
|
sed -i -e 's/lgcc_s/lgcc_eh/' lib/Driver/ToolChains/*.cpp
|
|
'';
|
|
});
|
|
|
|
clangUseLLVM = let inherit (final.genodePackages) genodeSources;
|
|
in (prev'.clangNoLibcxx.override {
|
|
gccForLibs = genodeSources.toolchain.cc;
|
|
nixSupport = {
|
|
cc-cflags = [
|
|
"--gcc-toolchain=${genodeSources.toolchain.cc}"
|
|
"--sysroot=${genodeSources.genodeBase}"
|
|
"-I${genodeSources.genodeBase}/include"
|
|
"-L${genodeSources.genodeBase}"
|
|
];
|
|
libcxx-ldflags = [ "${final.genodePackages.stdcxx}/lib/stdcxx.lib.so" ];
|
|
};
|
|
}).overrideAttrs ({ postFixup, ... }: {
|
|
postFixup = postFixup + (with final; ''
|
|
|
|
for dir in ${genodeSources.toolchain.cc}/${stdenv.targetPlatform.config}/include/c++/*; do
|
|
echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags
|
|
done
|
|
echo "-isystem ${genodeSources}/repos/libports/include/stdcxx" >> $out/nix-support/libcxx-cxxflags
|
|
for dir in ${genodeSources.ports.stdcxx}/*/include/stdcxx; do
|
|
echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags
|
|
echo "-isystem $dir/std" >> $out/nix-support/libcxx-cxxflags
|
|
echo "-isystem $dir/c_global" >> $out/nix-support/libcxx-cxxflags
|
|
done
|
|
echo "${genodePackages.stdcxx}/lib/stdcxx.lib.so" >> $out/nix-support/libcxx-ldflags
|
|
'');
|
|
});
|
|
|
|
clangNoLibcxx = prev'.clangNoLibcxx.override (with final.genodePackages; {
|
|
nixSupport = {
|
|
cc-cflags = [
|
|
"--gcc-toolchain=${genodeSources.toolchain.cc}"
|
|
"--sysroot=${genodeSources.genodeBase}"
|
|
"-I${genodeSources.genodeBase}/include"
|
|
];
|
|
cc-ldflags = [ "-L${genodeSources.genodeBase}" ];
|
|
};
|
|
});
|
|
|
|
});
|
|
|
|
in { inherit libraries tools; } // libraries // tools # awkward
|