]> granicus.if.org Git - clang/commitdiff
On OS X, use xcrun (if present) to find the clang to use for static analysis if
authorTed Kremenek <kremenek@apple.com>
Fri, 24 Aug 2012 04:53:06 +0000 (04:53 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 24 Aug 2012 04:53:06 +0000 (04:53 +0000)
no clang can be found relative to the location of scan-build.

Fixes <rdar://problem/11691794>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162535 91177308-0d34-0410-b5e6-96231b3b80d8

tools/scan-build/scan-build

index 65c4893124f3e203d65615a9c86071e9dd5e80fe..e2efa44bc1a62a6cddc66933689a1af26a2332ae 100755 (executable)
@@ -102,12 +102,26 @@ if (!defined $ClangSB || ! -x $ClangSB) {
   $ClangSB = Cwd::realpath("$RealBin/clang");
 }
 my $Clang;
+my $howFound = "from path";
 if (!defined $ClangSB || ! -x $ClangSB) {
-  # Default to looking for 'clang' in the path.
-  $Clang = `which clang`;
-  chomp $Clang;
-  if ($Clang eq "") {
-    DieDiag("No 'clang' executable found in path.\n");
+  # Default to looking for 'clang' in the path, or xcrun
+  # on OS X.
+  my $xcrun = `which xcrun`;
+  chomp $xcrun;
+  if ($xcrun ne "") {
+    $Clang = `$xcrun -toolchain XcodeDefault -find clang`;
+    chomp $Clang;  
+    if ($Clang eq "") {
+      DieDiag("No 'clang' executable found by 'xcrun'\n");
+    }
+    $howFound = "found using 'xcrun'";
+  }
+  else {
+    $Clang = `which clang`;
+    chomp $Clang;
+    if ($Clang eq "") {
+      DieDiag("No 'clang' executable found in path\n");
+    }
   }
 }
 else {
@@ -1459,7 +1473,7 @@ if (!defined $CmdCXX || ! -x $CmdCXX) {
 
 if (!defined $ClangSB || ! -x $ClangSB) {
   Diag("'clang' executable not found in '$RealBin/bin'.\n");
-  Diag("Using 'clang' from path: $Clang\n");
+  Diag("Using 'clang' $howFound: $Clang\n");
 }
 
 SetHtmlEnv(\@ARGV, $HtmlDir);