I would like to have multiple clang versions in the same environment each with a matching version of libclang and libllvm. I need them at build time to build clang plugins and at runtime to use clang with said plugins.
My current approach is to use makeWrapper
to create a wrapper for every version to prefix the linker and compilerflags with the flags I need. Something like:
pkgs.runCommand "clang-with-libs"
{
buildInputs = [ pkgs.makeWrapper ];
} ''
mkdir $out
ln -s ${llvmPackages.clang}/* $out
rm $out/bin
mkdir $out/bin
ln -s ${llvmPackages.clang}/bin/* $out/bin
rm $out/bin/bambu
makeWrapper ${llvmPackages.clang}/bin/bambu $out/bin/bambu \
--prefix NIX_LDFLAGS " " "-L${llvmPackages.clang.cc.dev}/lib -L${llvmPackages.clang.cc.libllvm.dev}/lib" \
--prefix NIX_CFLAGS_COMPILE " " "-isystem${llvmPackages.clang.cc.dev}/include -isystem${llvmPackages.clang.cc.libllvm.dev}/include"
''
It seems rather verbose to add the flags and stuff manually. Is there an easier way to do this? Ideally, I would like to have something like:
imaginaryWrapLikeShell llvmPackages.clang [llvmPackages.clang.cc.dev llvmPackages.clang.cc.libllvm.dev]
Do you have any ideas if there is something like this in the nixpkgs?
Thanks