diff --git a/pkgs/development/tools/rtags/default.nix b/pkgs/development/tools/rtags/default.nix new file mode 100644 index 000000000000..208445c3ec5c --- /dev/null +++ b/pkgs/development/tools/rtags/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchgit, cmake, llvm, openssl, clang, writeScript, bash }: + +let llvm-config-wrapper = writeScript "llvm-config" '' + #! ${bash}/bin/bash + if [[ "$1" = "--cxxflags" ]]; then + echo $(${llvm}/bin/llvm-config "$@") -isystem ${clang.cc}/include + else + ${llvm}/bin/llvm-config "$@" + fi + ''; + +in stdenv.mkDerivation rec { + name = "rtags-${version}"; + rev = "9fed420d20935faf55770765591fc2de02eeee28"; + version = "${stdenv.lib.strings.substring 0 7 rev}"; + + buildInputs = [ cmake llvm openssl clang ]; + + preConfigure = '' + export LIBCLANG_LLVM_CONFIG_EXECUTABLE=${llvm-config-wrapper} + ''; + + src = fetchgit { + inherit rev; + fetchSubmodules = true; + url = "https://github.com/andersbakken/rtags.git"; + sha256 = "1sb6wfknhvrgirqp65paz7kihv4zgg8g5f7a7i14i10sysalxbif"; + }; + + meta = { + description = "C/C++ client-server indexer based on clang"; + + homepage = https://github.com/andersbakken/rtags; + + license = stdenv.lib.licenses.gpl3; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1ba07ba0c8e6..f55b0a536d66 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4716,6 +4716,8 @@ let ocaml = ocaml_3_08_0; }; + rtags = callPackage ../development/tools/rtags/default.nix {}; + rustcMaster = callPackage ../development/compilers/rustc/head.nix {}; rustc = callPackage ../development/compilers/rustc {}; @@ -11387,6 +11389,7 @@ let external = { inherit (haskellPackages) ghc-mod structured-haskell-mode Agda; inherit (pythonPackages) elpy; + inherit rtags; }; }; diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix index 534fedddcc27..fc75417ec897 100644 --- a/pkgs/top-level/emacs-packages.nix +++ b/pkgs/top-level/emacs-packages.nix @@ -706,6 +706,15 @@ let self = _self // overrides; meta = { license = bsd3; }; }; + rtags = melpaBuild rec { + pname = "rtags"; + version = "2.0"; # really, it's some arbitrary git hash + src = external.rtags.src; + propagatedUserEnvPkgs = [ external.rtags ]; + fileSpecs = [ "src/*.el" ]; + inherit (external.rtags) meta; + }; + git-auto-commit-mode = melpaBuild rec { pname = "git-auto-commit-mode"; version = "4.4.0";