forked from OSchip/llvm-project
[scan-build] Add an option to skip overriding CC and CXX make vars
Autoconf and some other systems tend to add essential compilation options to CC (e.g. -std=gnu99). When running such an auto-generated makefile, scan-build does not need to change CC and CXX as they are already set to use ccc-analyzer by a configure script. Implement a new option --keep-cc as was proposed in this discussion: http://lists.llvm.org/pipermail/cfe-dev/2013-September/031832.html Patch by Paul Fertser! llvm-svn: 323665
This commit is contained in:
parent
9cf6302cce
commit
4a205fd038
|
@ -51,6 +51,7 @@ my %Options = (
|
|||
OutputDir => undef, # Parent directory to store HTML files.
|
||||
HtmlTitle => basename($CurrentDir)." - scan-build results",
|
||||
IgnoreErrors => 0, # Ignore build errors.
|
||||
KeepCC => 0, # Do not override CC and CXX make variables
|
||||
ViewResults => 0, # View results when the build terminates.
|
||||
ExitStatusFoundBugs => 0, # Exit status reflects whether bugs were found
|
||||
ShowDescription => 0, # Display the description of the defect in the list
|
||||
|
@ -1062,6 +1063,7 @@ sub RunXcodebuild {
|
|||
sub RunBuildCommand {
|
||||
my $Args = shift;
|
||||
my $IgnoreErrors = shift;
|
||||
my $KeepCC = shift;
|
||||
my $Cmd = $Args->[0];
|
||||
my $CCAnalyzer = shift;
|
||||
my $CXXAnalyzer = shift;
|
||||
|
@ -1099,8 +1101,10 @@ sub RunBuildCommand {
|
|||
unshift @$Args, $CXXAnalyzer;
|
||||
}
|
||||
elsif ($Cmd eq "make" or $Cmd eq "gmake" or $Cmd eq "mingw32-make") {
|
||||
AddIfNotPresent($Args, "CC=$CCAnalyzer");
|
||||
AddIfNotPresent($Args, "CXX=$CXXAnalyzer");
|
||||
if (!$KeepCC) {
|
||||
AddIfNotPresent($Args, "CC=$CCAnalyzer");
|
||||
AddIfNotPresent($Args, "CXX=$CXXAnalyzer");
|
||||
}
|
||||
if ($IgnoreErrors) {
|
||||
AddIfNotPresent($Args,"-k");
|
||||
AddIfNotPresent($Args,"-i");
|
||||
|
@ -1158,6 +1162,12 @@ OPTIONS:
|
|||
currently supports make and xcodebuild. This is a convenience option; one
|
||||
can specify this behavior directly using build options.
|
||||
|
||||
--keep-cc
|
||||
|
||||
Do not override CC and CXX make variables. Useful when running make in
|
||||
autoconf-based (and similar) projects where configure can add extra flags
|
||||
to those variables.
|
||||
|
||||
--html-title [title]
|
||||
--html-title=[title]
|
||||
|
||||
|
@ -1532,6 +1542,12 @@ sub ProcessArgs {
|
|||
next;
|
||||
}
|
||||
|
||||
if ($arg eq "--keep-cc") {
|
||||
shift @$Args;
|
||||
$Options{KeepCC} = 1;
|
||||
next;
|
||||
}
|
||||
|
||||
if ($arg =~ /^--use-cc(=(.+))?$/) {
|
||||
shift @$Args;
|
||||
my $cc;
|
||||
|
@ -1838,8 +1854,8 @@ my %EnvVars = (
|
|||
);
|
||||
|
||||
# Run the build.
|
||||
my $ExitStatus = RunBuildCommand(\@ARGV, $Options{IgnoreErrors}, $Cmd, $CmdCXX,
|
||||
\%EnvVars);
|
||||
my $ExitStatus = RunBuildCommand(\@ARGV, $Options{IgnoreErrors}, $Options{KeepCC},
|
||||
$Cmd, $CmdCXX, \%EnvVars);
|
||||
|
||||
if (defined $Options{OutputFormat}) {
|
||||
if ($Options{OutputFormat} =~ /plist/) {
|
||||
|
|
|
@ -248,7 +248,7 @@ you will probably need to run <tt>configure</tt> script through
|
|||
|
||||
<pre class="code_example">
|
||||
$ scan-build ./configure
|
||||
$ scan-build make
|
||||
$ scan-build --keepk-cc make
|
||||
</pre>
|
||||
|
||||
<p>The reason <tt>configure</tt> also needs to be run through
|
||||
|
|
Loading…
Reference in New Issue