1{
2 lib,
3 stdenv,
4 clang,
5 llvmPackages,
6 perl,
7 makeWrapper,
8 python3,
9}:
10
11stdenv.mkDerivation {
12 pname = "clang-analyzer";
13 inherit (llvmPackages.clang-unwrapped) src version;
14
15 patches = [ ./0001-Fix-scan-build-to-use-NIX_CFLAGS_COMPILE.patch ];
16 buildInputs = [
17 clang
18 llvmPackages.clang
19 perl
20 python3
21 ];
22 nativeBuildInputs = [ makeWrapper ];
23
24 dontBuild = true;
25
26 installPhase = ''
27 mkdir -p $out/share/scan-view $out/bin
28 cp -R clang/tools/scan-view/share/* $out/share/scan-view
29 cp -R clang/tools/scan-view/bin/* $out/bin/scan-view
30 cp -R clang/tools/scan-build/* $out
31
32 rm $out/bin/*.bat $out/libexec/*.bat $out/CMakeLists.txt
33
34 wrapProgram $out/bin/scan-build \
35 --add-flags "--use-cc=${clang}/bin/clang" \
36 --add-flags "--use-c++=${clang}/bin/clang++" \
37 --add-flags "--use-analyzer='${llvmPackages.clang}/bin/clang'"
38 '';
39
40 meta = {
41 description = "Clang Static Analyzer";
42 longDescription = ''
43 The Clang Static Analyzer is a source code analysis tool that finds bugs
44 in C, C++, and Objective-C programs.
45 '';
46 homepage = "https://clang-analyzer.llvm.org/";
47 license = lib.licenses.bsd3;
48 platforms = lib.platforms.unix;
49 maintainers = [ lib.maintainers.thoughtpolice ];
50 };
51}