diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-05-09 19:19:28 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-05-09 19:19:28 +0000 |
commit | 1f991f09df103fff1b3986148ecade6bd3c95aca (patch) | |
tree | a11be61b0f846dfac293d81955d1979752034d2f /clang/utils/scan-build | |
parent | 9085126bee67e932beec851eefc5e245bcd9e4b0 (diff) | |
download | bcm5719-llvm-1f991f09df103fff1b3986148ecade6bd3c95aca.tar.gz bcm5719-llvm-1f991f09df103fff1b3986148ecade6bd3c95aca.zip |
Add total hack to get scan-build working again. ccc-analyzer calls
'clang -###' to get the appropriate arguments to pass to clang-cc.
This isn't a permanent solution.
llvm-svn: 71364
Diffstat (limited to 'clang/utils/scan-build')
-rwxr-xr-x | clang/utils/scan-build | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/clang/utils/scan-build b/clang/utils/scan-build index 27883f0d864..74249f7031e 100755 --- a/clang/utils/scan-build +++ b/clang/utils/scan-build @@ -82,26 +82,42 @@ sub DieDiag { ##----------------------------------------------------------------------------## # First, look for 'clang-cc' in libexec. -my $ClangSB = Cwd::realpath("$RealBin/libexec/clang-cc"); +my $ClangCCSB = Cwd::realpath("$RealBin/libexec/clang-cc"); # Second, look for 'clang-cc' in the same directory as scan-build. -if (!defined $ClangSB || ! -x $ClangSB) { - $ClangSB = Cwd::realpath("$RealBin/clang-cc"); +if (!defined $ClangCCSB || ! -x $ClangCCSB) { + $ClangCCSB = Cwd::realpath("$RealBin/clang-cc"); } # Third, look for 'clang-cc' in ../libexec +if (!defined $ClangCCSB || ! -x $ClangCCSB) { + $ClangCCSB = Cwd::realpath("$RealBin/../libexec/clang-cc"); +} +# Finally, default to looking for 'clang-cc' in the path. +if (!defined $ClangCCSB || ! -x $ClangCCSB) { + $ClangCCSB = "clang-cc"; +} +my $ClangCC = $ClangCCSB; + +# Now find 'clang' +my $ClangSB = Cwd::realpath("$RealBin/bin/clang"); if (!defined $ClangSB || ! -x $ClangSB) { - $ClangSB = Cwd::realpath("$RealBin/../libexec/clang-cc"); + $ClangSB = Cwd::realpath("$RealBin/clang"); +} +# Third, look for 'clang' in ../bin +if (!defined $ClangSB || ! -x $ClangSB) { + $ClangSB = Cwd::realpath("$RealBin/../bin/clang"); } # Finally, default to looking for 'clang-cc' in the path. if (!defined $ClangSB || ! -x $ClangSB) { - $ClangSB = "clang-cc"; + $ClangSB = "clang"; } my $Clang = $ClangSB; + my %AvailableAnalyses; # Query clang for analysis options. -open(PIPE, "-|", $Clang, "--help") or - DieDiag("Cannot execute '$Clang'\n"); +open(PIPE, "-|", $ClangCC, "--help") or + DieDiag("Cannot execute '$ClangCC'\n"); my $FoundAnalysis = 0; @@ -1167,10 +1183,14 @@ if (!defined $Cmd || ! -x $Cmd) { DieDiag("Executable 'ccc-analyzer' does not exist at '$Cmd'\n") if(! -x $Cmd); } -if (!defined $ClangSB || ! -x $ClangSB) { +if (!defined $ClangCCSB || ! -x $ClangCCSB) { Diag("'clang-cc' executable not found in '$RealBin/libexec'.\n"); Diag("Using 'clang-cc' from path.\n"); } +if (!defined $ClangSB || ! -x $ClangSB) { + Diag("'clang' executable not found in '$RealBin/bin'.\n"); + Diag("Using 'clang' from path.\n"); +} if (defined $CXX) { $ENV{'CXX'} = $CXX; @@ -1181,6 +1201,7 @@ else { } $ENV{'CC'} = $Cmd; +$ENV{'CLANG_CC'} = $ClangCC; $ENV{'CLANG'} = $Clang; if ($Verbose >= 2) { |