diff options
author | Griffin Smith <root@gws.fyi> | 2020-05-26T15·29-0400 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2020-05-26T15·29-0400 |
commit | db371a5a61340865228434b298ac6a81ea6bbc47 (patch) | |
tree | e25550be84d80c89b10dac552200b0933b053105 /pkgs | |
parent | da6724c979eb5f241e0f1b5ca856b1aadcee32c0 (diff) |
clang-tools, perhaps
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/clang-tools.nix | 15 | ||||
-rw-r--r-- | pkgs/clang-tools/default.nix | 24 | ||||
-rw-r--r-- | pkgs/clang-tools/wrapper | 20 |
3 files changed, 59 insertions, 0 deletions
diff --git a/pkgs/clang-tools.nix b/pkgs/clang-tools.nix new file mode 100644 index 000000000000..d13fbd44576a --- /dev/null +++ b/pkgs/clang-tools.nix @@ -0,0 +1,15 @@ +with import <nixpkgs> {}; +runCommand "clang-tools" {} '' + mkdir -p $out/bin + for file in ${clang-tools}/bin/*; do + if [ $(basename "$file") != "clangd" ]; then + ln -s "$file" $out/bin + fi + done + + sed \ + -e "18iexport CPLUS_INCLUDE_PATH=${llvmPackages.libcxx}/include/c++/v1\\''${CPATH:+':'}\\''${CPATH}" \ + -e '/CPLUS_INCLUDE_PATH/d' \ + < ${clang-tools}/bin/clangd \ + > $out/bin/clangd +'' diff --git a/pkgs/clang-tools/default.nix b/pkgs/clang-tools/default.nix new file mode 100644 index 000000000000..7c1009665eb6 --- /dev/null +++ b/pkgs/clang-tools/default.nix @@ -0,0 +1,24 @@ +{ pkgs }: +with pkgs; + +runCommand "clang-tools" {} '' + mkdir -p $out/bin + export libc_includes="${stdenv.lib.getDev stdenv.cc.libc}/include" + export libcpp_includes="${llvmPackages.libcxx}/include/c++/v1" + + export clang=${llvmPackages.clang-unwrapped} + + echo $clang + + substituteAll ${./wrapper} $out/bin/clangd + chmod +x $out/bin/clangd + for tool in \ + clang-apply-replacements \ + clang-check \ + clang-format \ + clang-rename \ + clang-tidy + do + ln -s $out/bin/clangd $out/bin/$tool + done +'' diff --git a/pkgs/clang-tools/wrapper b/pkgs/clang-tools/wrapper new file mode 100644 index 000000000000..949a4243e009 --- /dev/null +++ b/pkgs/clang-tools/wrapper @@ -0,0 +1,20 @@ +#!/bin/sh + +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=${CPATH}${CPATH:+':'}@libc_includes@ +export CPLUS_INCLUDE_PATH=@libcpp_includes@${CPATH:+':'}${CPATH} + +exec -a "$0" @clang@/bin/$(basename $0) "$@" |