[cfe-commits] r83319 - /cfe/trunk/lib/Basic/Version.cpp

Douglas Gregor dgregor at apple.com
Mon Oct 5 11:52:24 PDT 2009


Author: dgregor
Date: Mon Oct  5 13:52:24 2009
New Revision: 83319

URL: http://llvm.org/viewvc/llvm-project?rev=83319&view=rev
Log:
Pre-commit commit to get URL keyword expansion for Clang version information

Added:
    cfe/trunk/lib/Basic/Version.cpp   (with props)

Added: cfe/trunk/lib/Basic/Version.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Version.cpp?rev=83319&view=auto

==============================================================================
--- cfe/trunk/lib/Basic/Version.cpp (added)
+++ cfe/trunk/lib/Basic/Version.cpp Mon Oct  5 13:52:24 2009
@@ -0,0 +1,63 @@
+//===- Version.cpp - Clang Version Number -----------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines several version-related utility functions for Clang.
+//
+//===----------------------------------------------------------------------===//
+#include <cstring>
+#include <cstdlib>
+using namespace std;
+
+namespace clang {
+  
+const char *getClangSubversionPath() {
+  static const char *Path = 0;
+  if (Path)
+    return Path;
+  
+  static char URL[] = "$URL$";
+  char *End = strstr(URL, "/lib/Basic");
+  if (End)
+    *End = 0;
+  
+  char *Begin = strstr(URL, "cfe/");
+  if (Begin) {
+    Path = Begin + 4;
+    return Path;
+  }
+  
+  Path = URL;
+  return Path;
+}
+
+
+unsigned getClangSubversionRevision() {
+#ifndef SVN_REVISION
+  return 0;
+#else
+  // What follows is an evil trick. We can end up getting three different
+  // kinds of results when asking for the Subversion information:
+  //   - if SVN_REVISION is a number, we return that number (adding 0 to it is
+  //     harmless).
+  //   - if SVN_REVISION is "exported" (for an tree without any Subversion 
+  //     info), we end up referencing the local variable "exported" and adding
+  //     zero to it, and we return 0.
+  //   - if SVN_REVISION is empty (because "svn info" returned no results),
+  //     the "+" turns into a unary "+" operator and we return 0.
+  //
+  // Making this less ugly requires doing more computation in the CMake- and
+  // Makefile-based build systems, with all sorts of checking to make sure we
+  // don't end up breaking this build. It's better this way. Really.
+  const unsigned exported = 0;
+  (void)exported;
+  return SVN_REVISION + 0;
+#endif
+}
+
+} // end namespace clang

Propchange: cfe/trunk/lib/Basic/Version.cpp

------------------------------------------------------------------------------
    svn:keywords = URL





More information about the cfe-commits mailing list