tvl-depot/third_party/nix/clangd.nix
2020-05-24 18:19:28 +01:00

30 lines
845 B
Nix

# Create a clangd wrapper script that can be used with this project.
# The default Nix wrapper only works with C projects, not C++
# projects.
#
# The CPATH construction logic is lifted from the original wrapper
# script.
pkgs:
pkgs.writeShellScriptBin "nix-clangd" ''
buildcpath() {
local path
while (( $# )); do
case $1 in
-isystem)
shift
path=$path''${path:+':'}$1
esac
shift
done
echo $path
}
export CPATH=''${CPATH}''${CPATH:+':'}:$(buildcpath ''${NIX_CFLAGS_COMPILE})
export CPATH=${pkgs.glibc.dev}/include''${CPATH:+':'}''${CPATH}
export CPLUS_INCLUDE_PATH=${pkgs.llvmPackages.libcxx}/include/c++/v1:''${CPATH}
# TODO(tazjin): Configurable commands directory?
exec -a clangd ${pkgs.llvmPackages.clang-unwrapped}/bin/clangd -cross-file-rename $@
''