]> granicus.if.org Git - clang/commitdiff
Utilize new build system support in Xcode 4.5 for easier interposition
authorTed Kremenek <kremenek@apple.com>
Fri, 14 Sep 2012 19:06:33 +0000 (19:06 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 14 Sep 2012 19:06:33 +0000 (19:06 +0000)
of a build without needing to use ccc-analyzer.

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

tools/scan-build/scan-build

index a13b235aa93d09d48e8d277a805eb49d12022476..d27a07396d726035b131dcb49b89c0b79165f4f4 100755 (executable)
@@ -884,6 +884,36 @@ sub RunXcodebuild {
   if ($IgnoreErrors) {
     AddIfNotPresent($Args,"-PBXBuildsContinueAfterErrors=YES");
   }
+
+  # Detect the version of Xcode.  If Xcode 4.5 or higher, use new
+  # in situ support for analyzer interposition without needed to override
+  # the compiler.
+  open(DETECT_XCODE, "xcodebuild -version |") or
+    die "error: cannot detect version of xcodebuild\n";
+
+  my $oldBehavior = 1;
+
+  while(<DETECT_XCODE>) {
+    if (/^Xcode (.+)$/) {
+      if ($1 >= 4.5) {
+        $oldBehavior = 0;
+        last;
+      }
+    }
+  }
+  close(DETECT_XCODE);
+  
+  if ($oldBehavior == 0) {
+    my $OutputDir = $Options->{"OUTPUT_DIR"};
+    my $CLANG = $Options->{"CLANG"};
+    push @$Args,
+        "RUN_CLANG_STATIC_ANALYZER=YES",
+        "CLANG_ANALYZER_OUTPUT=plist-html",
+        "CLANG_ANALYZER_EXEC=$CLANG",
+        "CLANG_ANALYZER_OUTPUT_DIR=$OutputDir";
+
+    return (system(@$Args) >> 8);     
+  }
   
   # Default to old behavior where we insert a bogus compiler.
   SetEnv($Options);