diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/analysis/include-what-you-use/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/tools/analysis/include-what-you-use/default.nix | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/analysis/include-what-you-use/default.nix b/nixpkgs/pkgs/development/tools/analysis/include-what-you-use/default.nix new file mode 100644 index 000000000000..4222f72248a8 --- /dev/null +++ b/nixpkgs/pkgs/development/tools/analysis/include-what-you-use/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, cmake, llvmPackages, python2 }: + +stdenv.mkDerivation rec { + name = "include-what-you-use-${version}"; + # Also bump llvmPackages in all-packages.nix to the supported version! + version = "0.10"; + + src = fetchurl { + sha256 = "16alan9rwbhpyfxmlpc7gbfnbqd877wdqrkvgqrjb1jlqkzpg55s"; + url = "${meta.homepage}/downloads/${name}.src.tar.gz"; + }; + + buildInputs = with llvmPackages; [ clang-unwrapped llvm python2 ]; + nativeBuildInputs = [ cmake ]; + + cmakeFlags = [ "-DIWYU_LLVM_ROOT_PATH=${llvmPackages.clang-unwrapped}" ]; + + enableParallelBuilding = true; + + postInstall = '' + substituteInPlace $out/bin/iwyu_tool.py \ + --replace "['include-what-you-use']" "['$out/bin/include-what-you-use']" + ''; + + meta = with stdenv.lib; { + description = "Analyze #includes in C/C++ source files with clang"; + longDescription = '' + For every symbol (type, function variable, or macro) that you use in + foo.cc, either foo.cc or foo.h should #include a .h file that exports the + declaration of that symbol. The main goal of include-what-you-use is to + remove superfluous #includes, both by figuring out what #includes are not + actually needed for this file (for both .cc and .h files), and by + replacing #includes with forward-declares when possible. + ''; + homepage = https://include-what-you-use.org; + license = licenses.bsd3; + platforms = platforms.unix; + }; +} |