summaryrefslogtreecommitdiffstats
path: root/clang/utils/scan-build
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-05-09 19:19:28 +0000
committerTed Kremenek <kremenek@apple.com>2009-05-09 19:19:28 +0000
commit1f991f09df103fff1b3986148ecade6bd3c95aca (patch)
treea11be61b0f846dfac293d81955d1979752034d2f /clang/utils/scan-build
parent9085126bee67e932beec851eefc5e245bcd9e4b0 (diff)
downloadbcm5719-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-xclang/utils/scan-build37
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) {
OpenPOWER on IntegriCloud