blob: 18a8a88810dd64dbc752ca527be5334f4ad4a3e8 [file] [log] [blame]
Douglas Gregor60b5d8e2009-10-05 18:52:24 +00001//===- Version.cpp - Clang Version Number -----------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file defines several version-related utility functions for Clang.
11//
12//===----------------------------------------------------------------------===//
13#include <cstring>
14#include <cstdlib>
15using namespace std;
16
17namespace clang {
18
19const char *getClangSubversionPath() {
20 static const char *Path = 0;
21 if (Path)
22 return Path;
23
24 static char URL[] = "$URL$";
25 char *End = strstr(URL, "/lib/Basic");
26 if (End)
27 *End = 0;
28
Douglas Gregor1fbf1f02009-11-05 23:46:05 +000029 End = strstr(URL, "/clang/tools/clang");
30 if (End)
31 *End = 0;
32
Douglas Gregor60b5d8e2009-10-05 18:52:24 +000033 char *Begin = strstr(URL, "cfe/");
34 if (Begin) {
35 Path = Begin + 4;
36 return Path;
37 }
38
39 Path = URL;
40 return Path;
41}
42
43
44unsigned getClangSubversionRevision() {
45#ifndef SVN_REVISION
Douglas Gregorb8d11912009-10-05 20:33:49 +000046 // Subversion was not available at build time?
Douglas Gregor60b5d8e2009-10-05 18:52:24 +000047 return 0;
48#else
Douglas Gregorb8d11912009-10-05 20:33:49 +000049 return strtol(SVN_REVISION, 0, 10);
Douglas Gregor60b5d8e2009-10-05 18:52:24 +000050#endif
51}
52
53} // end namespace clang