1*f6aab3d8Srobert //===-- Version.cpp -------------------------------------------------------===// 2*f6aab3d8Srobert // 3*f6aab3d8Srobert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*f6aab3d8Srobert // See https://llvm.org/LICENSE.txt for license information. 5*f6aab3d8Srobert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*f6aab3d8Srobert // 7*f6aab3d8Srobert //===----------------------------------------------------------------------===// 8*f6aab3d8Srobert 9*f6aab3d8Srobert #include "lldb/Version/Version.h" 10*f6aab3d8Srobert #include "VCSVersion.inc" 11*f6aab3d8Srobert #include "lldb/Version/Version.inc" 12*f6aab3d8Srobert #include "clang/Basic/Version.h" 13*f6aab3d8Srobert GetLLDBVersion()14*f6aab3d8Srobertstatic const char *GetLLDBVersion() { 15*f6aab3d8Srobert #ifdef LLDB_FULL_VERSION_STRING 16*f6aab3d8Srobert return LLDB_FULL_VERSION_STRING; 17*f6aab3d8Srobert #else 18*f6aab3d8Srobert return "lldb version " LLDB_VERSION_STRING; 19*f6aab3d8Srobert #endif 20*f6aab3d8Srobert } 21*f6aab3d8Srobert GetLLDBRevision()22*f6aab3d8Srobertstatic const char *GetLLDBRevision() { 23*f6aab3d8Srobert #ifdef LLDB_REVISION 24*f6aab3d8Srobert return LLDB_REVISION; 25*f6aab3d8Srobert #else 26*f6aab3d8Srobert return nullptr; 27*f6aab3d8Srobert #endif 28*f6aab3d8Srobert } 29*f6aab3d8Srobert GetLLDBRepository()30*f6aab3d8Srobertstatic const char *GetLLDBRepository() { 31*f6aab3d8Srobert #ifdef LLDB_REPOSITORY 32*f6aab3d8Srobert return LLDB_REPOSITORY; 33*f6aab3d8Srobert #else 34*f6aab3d8Srobert return nullptr; 35*f6aab3d8Srobert #endif 36*f6aab3d8Srobert } 37*f6aab3d8Srobert GetVersion()38*f6aab3d8Srobertconst char *lldb_private::GetVersion() { 39*f6aab3d8Srobert static std::string g_version_str; 40*f6aab3d8Srobert 41*f6aab3d8Srobert if (g_version_str.empty()) { 42*f6aab3d8Srobert const char *lldb_version = GetLLDBVersion(); 43*f6aab3d8Srobert const char *lldb_repo = GetLLDBRepository(); 44*f6aab3d8Srobert const char *lldb_rev = GetLLDBRevision(); 45*f6aab3d8Srobert g_version_str += lldb_version; 46*f6aab3d8Srobert if (lldb_repo || lldb_rev) { 47*f6aab3d8Srobert g_version_str += " ("; 48*f6aab3d8Srobert if (lldb_repo) 49*f6aab3d8Srobert g_version_str += lldb_repo; 50*f6aab3d8Srobert if (lldb_repo && lldb_rev) 51*f6aab3d8Srobert g_version_str += " "; 52*f6aab3d8Srobert if (lldb_rev) { 53*f6aab3d8Srobert g_version_str += "revision "; 54*f6aab3d8Srobert g_version_str += lldb_rev; 55*f6aab3d8Srobert } 56*f6aab3d8Srobert g_version_str += ")"; 57*f6aab3d8Srobert } 58*f6aab3d8Srobert 59*f6aab3d8Srobert std::string clang_rev(clang::getClangRevision()); 60*f6aab3d8Srobert if (clang_rev.length() > 0) { 61*f6aab3d8Srobert g_version_str += "\n clang revision "; 62*f6aab3d8Srobert g_version_str += clang_rev; 63*f6aab3d8Srobert } 64*f6aab3d8Srobert 65*f6aab3d8Srobert std::string llvm_rev(clang::getLLVMRevision()); 66*f6aab3d8Srobert if (llvm_rev.length() > 0) { 67*f6aab3d8Srobert g_version_str += "\n llvm revision "; 68*f6aab3d8Srobert g_version_str += llvm_rev; 69*f6aab3d8Srobert } 70*f6aab3d8Srobert } 71*f6aab3d8Srobert 72*f6aab3d8Srobert return g_version_str.c_str(); 73*f6aab3d8Srobert } 74