nixpkgs/pkgs/development/tools/analysis/clang-analyzer/0001-Fix-scan-build-to-use-NIX_CFLAGS_COMPILE.patch
Austin Seipp 59528d9f0e clang-analyzer: respect $NIX_CFLAGS_COMPILE
When using scan-build, you're often going to want to use it in the
context of a Nix expression with buildInputs, and the default wrapper
scripts will put things like include locations for those inputs
$NIX_CFLAGS_COMPILE. Thus, scan-build also needs to pass them to the
analyzer - while the link flags aren't relevant, the include flags are.

This is because the analyzer executable that gets run by scan-build is
*not* clang-wrapper, but the actual clang executable, so it doesn't
implicitly add such arguments. The build is two-stage - it runs the real
clang wrapper once, and then the analyzer once.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
2014-05-02 14:07:37 -05:00

34 lines
957 B
Diff

From 6ab08bc1c889e4fb9a39432b1a654eaa19ee65eb Mon Sep 17 00:00:00 2001
From: Austin Seipp <aseipp@pobox.com>
Date: Fri, 2 May 2014 12:28:23 -0500
Subject: [PATCH] Fix scan-build to use NIX_CFLAGS_COMPILE
Signed-off-by: Austin Seipp <aseipp@pobox.com>
---
tools/scan-build/ccc-analyzer | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/tools/scan-build/ccc-analyzer b/tools/scan-build/ccc-analyzer
index b463ec0..9d39dd0 100755
--- a/tools/scan-build/ccc-analyzer
+++ b/tools/scan-build/ccc-analyzer
@@ -207,6 +207,15 @@ sub Analyze {
push @Args, "-Xclang", "-analyzer-viz-egraph-ubigraph";
}
+
+ # Add Nix flags to analysis
+ if (defined $ENV{'NIX_CFLAGS_COMPILE'}) {
+ my @nixArgs = split(/\s+/, $ENV{'NIX_CFLAGS_COMPILE'});
+ foreach my $nixArg (@nixArgs) {
+ push @Args, $nixArg;
+ }
+ }
+
my $AnalysisArgs = GetCCArgs("--analyze", \@Args);
@CmdArgs = @$AnalysisArgs;
}
--
1.8.3.2