//
//===----------------------------------------------------------------------===//
-#include "clang/Basic/Version.h"
-
#include "lldb/lldb-python.h"
#include "lldb/lldb-private.h"
#include "lldb/Target/Thread.h"
#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/raw_ostream.h"
#include "Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h"
#include "Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h"
using namespace lldb;
using namespace lldb_private;
-namespace {
-
-std::string getLLDBRevision() {
-#ifdef LLDB_REVISION
- return LLDB_REVISION;
-#else
- return "";
-#endif
-}
-
-std::string getLLDBRepository() {
-#ifdef LLDB_REPOSITORY
- return LLDB_REPOSITORY;
-#else
- return "";
-#endif
-}
-
-}
-
void
lldb_private::Initialize ()
{
#if defined (__APPLE__)
extern "C" const double liblldb_coreVersionNumber;
+#else
+
+#include "clang/Basic/Version.h"
+
+static const char *
+GetLLDBRevision()
+{
+#ifdef LLDB_REVISION
+ return LLDB_REVISION;
+#else
+ return NULL;
+#endif
+}
+
+static const char *
+GetLLDBRepository()
+{
+#ifdef LLDB_REPOSITORY
+ return LLDB_REPOSITORY;
+#else
+ return NULL;
+#endif
+}
+
#endif
const char *
return g_version_string;
#else
// On Linux/FreeBSD/Windows, report a version number in the same style as the clang tool.
- static std::string buf;
- llvm::raw_string_ostream OS(buf);
- OS << "lldb version " CLANG_VERSION_STRING " ";
-
- std::string lldb_repo = getLLDBRepository();
- if (lldb_repo.length() > 0)
- OS << "(" << lldb_repo;
-
- std::string lldb_rev = getLLDBRevision();
- if (lldb_rev.length() > 0)
- OS << " revision " << lldb_rev;
-
- std::string clang_rev = clang::getClangRevision();
- if (clang_rev.length() > 0)
- OS << " clang revision " << clang_rev;
-
- std::string llvm_rev = clang::getLLVMRevision();
- if (llvm_rev.length() > 0)
- OS << " llvm revision " << llvm_rev;
+ static std::string g_version_str;
+ if (g_version_str.empty())
+ {
+ g_version_str += "lldb version ";
+ g_version_str += CLANG_VERSION_STRING;
+ const char * lldb_repo = GetLLDBRepository();
+ if (lldb_repo)
+ {
+ g_version_str += " (";
+ g_version_str += lldb_repo;
+ }
- if (lldb_repo.length() > 0)
- OS << ")";
+ const char *lldb_rev = GetLLDBRevision();
+ if (lldb_rev)
+ {
+ g_version_str += " revision ";
+ g_version_str += lldb_rev;
+ }
+ std::string clang_rev (clang::getClangRevision());
+ if (clang_rev.length() > 0)
+ {
+ g_version_str += " clang revision ";
+ g_version_str += clang_rev;
+ }
+ std::string llvm_rev (clang::getLLVMRevision());
+ if (llvm_rev.length() > 0)
+ {
+ g_version_str += " llvm revision ";
+ g_version_str += llvm_rev;
+ }
- return OS.str().c_str();
+ if (lldb_repo)
+ g_version_str += ")";
+ }
+ return g_version_str.c_str();
#endif
}