JDevlieghere created this revision.
JDevlieghere added reviewers: labath, bulbazord.
Herald added subscribers: tstellar, mgorny.
JDevlieghere requested review of this revision.

Instead of trying to squeeze `GetVersion` into `lldb-private.h`, give it its 
own header and implementation file in its own directory. I called it `Basic`, 
partially because the library was already called `lldbBase` (?) but mostly to 
align with `clang/Basic/Version.h` (and `swift/Basic/Version.h`) which might 
explain the current library name. but I'm pretty flexible as far as naming 
goes, I think `Version/Version.h` would work pretty well too.

Additional benefits of this patch include that we can get rid of the quoting 
macros and that other place of LLDB can read the version number from 
`Version.inc`. A downstream change requiring the latter was the main motivation 
for this patch. I considered adding a few other functions similar to what clang 
offers but decided against it since there would be no existing uses for them.


https://reviews.llvm.org/D115211

Files:
  lldb/include/lldb/Basic/Version.h
  lldb/include/lldb/Basic/Version.inc.in
  lldb/include/lldb/lldb-private.h
  lldb/source/API/CMakeLists.txt
  lldb/source/API/SBDebugger.cpp
  lldb/source/API/SBReproducer.cpp
  lldb/source/Basic/CMakeLists.txt
  lldb/source/Basic/Version.cpp
  lldb/source/CMakeLists.txt
  lldb/source/Commands/CMakeLists.txt
  lldb/source/Commands/CommandObjectVersion.cpp
  lldb/source/Initialization/SystemInitializerCommon.cpp
  lldb/source/lldb.cpp
  lldb/tools/lldb-server/CMakeLists.txt
  lldb/tools/lldb-server/lldb-server.cpp
  lldb/tools/lldb-test/CMakeLists.txt

Index: lldb/tools/lldb-test/CMakeLists.txt
===================================================================
--- lldb/tools/lldb-test/CMakeLists.txt
+++ lldb/tools/lldb-test/CMakeLists.txt
@@ -6,7 +6,7 @@
   SystemInitializerTest.cpp
 
   LINK_LIBS
-    lldbBase
+    lldbBasic
     lldbBreakpoint
     lldbCore
     lldbDataFormatters
Index: lldb/tools/lldb-server/lldb-server.cpp
===================================================================
--- lldb/tools/lldb-server/lldb-server.cpp
+++ lldb/tools/lldb-server/lldb-server.cpp
@@ -7,8 +7,8 @@
 //===----------------------------------------------------------------------===//
 
 #include "SystemInitializerLLGS.h"
+#include "lldb/Basic/Version.h"
 #include "lldb/Initialization/SystemLifetimeManager.h"
-#include "lldb/lldb-private.h"
 
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringRef.h"
Index: lldb/tools/lldb-server/CMakeLists.txt
===================================================================
--- lldb/tools/lldb-server/CMakeLists.txt
+++ lldb/tools/lldb-server/CMakeLists.txt
@@ -46,7 +46,7 @@
     SystemInitializerLLGS.cpp
 
     LINK_LIBS
-      lldbBase
+      lldbBasic
       lldbHost
       lldbInitialization
       ${LLDB_PLUGINS}
Index: lldb/source/Initialization/SystemInitializerCommon.cpp
===================================================================
--- lldb/source/Initialization/SystemInitializerCommon.cpp
+++ lldb/source/Initialization/SystemInitializerCommon.cpp
@@ -9,13 +9,13 @@
 #include "lldb/Initialization/SystemInitializerCommon.h"
 
 #include "Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h"
+#include "lldb/Basic/Version.h"
 #include "lldb/Host/FileSystem.h"
 #include "lldb/Host/Host.h"
 #include "lldb/Host/Socket.h"
 #include "lldb/Utility/Log.h"
 #include "lldb/Utility/ReproducerProvider.h"
 #include "lldb/Utility/Timer.h"
-#include "lldb/lldb-private.h"
 
 #if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__)
 #include "Plugins/Process/POSIX/ProcessPOSIXLog.h"
Index: lldb/source/Commands/CommandObjectVersion.cpp
===================================================================
--- lldb/source/Commands/CommandObjectVersion.cpp
+++ lldb/source/Commands/CommandObjectVersion.cpp
@@ -8,8 +8,8 @@
 
 #include "CommandObjectVersion.h"
 
+#include "lldb/Basic/Version.h"
 #include "lldb/Interpreter/CommandReturnObject.h"
-#include "lldb/lldb-private.h"
 
 using namespace lldb;
 using namespace lldb_private;
Index: lldb/source/Commands/CMakeLists.txt
===================================================================
--- lldb/source/Commands/CMakeLists.txt
+++ lldb/source/Commands/CMakeLists.txt
@@ -41,7 +41,7 @@
   CommandOptionsProcessLaunch.cpp
 
   LINK_LIBS
-    lldbBase
+    lldbBasic
     lldbBreakpoint
     lldbCore
     lldbDataFormatters
Index: lldb/source/CMakeLists.txt
===================================================================
--- lldb/source/CMakeLists.txt
+++ lldb/source/CMakeLists.txt
@@ -1,42 +1,6 @@
 include_directories(.)
 
-set(lldbBase_SOURCES
-    lldb.cpp
-  )
-
-
-find_first_existing_vc_file("${LLDB_SOURCE_DIR}" lldb_vc)
-
-set(version_inc "${CMAKE_CURRENT_BINARY_DIR}/VCSVersion.inc")
-set(generate_vcs_version_script "${LLVM_CMAKE_DIR}/GenerateVersionFromVCS.cmake")
-
-if(lldb_vc AND LLVM_APPEND_VC_REV)
-  set(lldb_source_dir ${LLDB_SOURCE_DIR})
-endif()
-
-add_custom_command(OUTPUT "${version_inc}"
-  DEPENDS "${lldb_vc}" "${generate_vcs_version_script}"
-  COMMAND ${CMAKE_COMMAND} "-DNAMES=LLDB"
-                           "-DLLDB_SOURCE_DIR=${lldb_source_dir}"
-                           "-DHEADER_FILE=${version_inc}"
-                           -P "${generate_vcs_version_script}")
-
-# Mark the generated header as being generated.
-set_source_files_properties("${version_inc}"
-  PROPERTIES GENERATED TRUE
-             HEADER_FILE_ONLY TRUE)
-
-list(APPEND lldbBase_SOURCES ${version_inc})
-
-if(LLDB_VERSION_STRING)
-  set_property(SOURCE lldb.cpp APPEND PROPERTY
-               COMPILE_DEFINITIONS "LLDB_VERSION_STRING=${LLDB_VERSION_STRING}")
-endif()
-
-add_lldb_library(lldbBase
-  ${lldbBase_SOURCES}
-  )
-
+add_subdirectory(Basic)
 add_subdirectory(Breakpoint)
 add_subdirectory(Commands)
 add_subdirectory(Core)
Index: lldb/source/Basic/Version.cpp
===================================================================
--- lldb/source/Basic/Version.cpp
+++ lldb/source/Basic/Version.cpp
@@ -1,4 +1,4 @@
-//===-- lldb.cpp ----------------------------------------------------------===//
+//===-- Version.cpp -------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,21 +6,14 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "lldb/Basic/Version.h"
 #include "VCSVersion.inc"
-#include "lldb/lldb-private.h"
+#include "Version.inc"
 #include "clang/Basic/Version.h"
 
-using namespace lldb;
-using namespace lldb_private;
-
-// LLDB_VERSION_STRING is set through a define so unlike the other defines
-// expanded with CMake, it lacks the double quotes.
-#define QUOTE(str) #str
-#define EXPAND_AND_QUOTE(str) QUOTE(str)
-
 static const char *GetLLDBVersion() {
-#ifdef LLDB_VERSION_STRING
-  return EXPAND_AND_QUOTE(LLDB_VERSION_STRING);
+#ifdef LLDB_FULL_VERSION_STRING
+  return LLDB_FULL_VERSION_STRING;
 #else
   return "lldb version " CLANG_VERSION_STRING;
 #endif
@@ -30,7 +23,7 @@
 #ifdef LLDB_REVISION
   return LLDB_REVISION;
 #else
-  return NULL;
+  return nullptr;
 #endif
 }
 
@@ -38,12 +31,13 @@
 #ifdef LLDB_REPOSITORY
   return LLDB_REPOSITORY;
 #else
-  return NULL;
+  return nullptr;
 #endif
 }
 
 const char *lldb_private::GetVersion() {
   static std::string g_version_str;
+
   if (g_version_str.empty()) {
     const char *lldb_version = GetLLDBVersion();
     const char *lldb_repo = GetLLDBRepository();
@@ -67,11 +61,13 @@
       g_version_str += "\n  clang revision ";
       g_version_str += clang_rev;
     }
+
     std::string llvm_rev(clang::getLLVMRevision());
     if (llvm_rev.length() > 0) {
       g_version_str += "\n  llvm revision ";
       g_version_str += llvm_rev;
     }
   }
+
   return g_version_str.c_str();
 }
Index: lldb/source/Basic/CMakeLists.txt
===================================================================
--- /dev/null
+++ lldb/source/Basic/CMakeLists.txt
@@ -0,0 +1,42 @@
+if(LLDB_VERSION_STRING)
+  set(LLDB_FULL_VERSION_STRING LLDB_VERSION_STRING)
+endif()
+
+# Configure the VCSVersion.inc file.
+set(vcs_version_inc "${CMAKE_CURRENT_BINARY_DIR}/VCSVersion.inc")
+set(generate_vcs_version_script "${LLVM_CMAKE_DIR}/GenerateVersionFromVCS.cmake")
+
+find_first_existing_vc_file("${LLDB_SOURCE_DIR}" lldb_vc)
+
+if(lldb_vc AND LLVM_APPEND_VC_REV)
+  set(lldb_source_dir ${LLDB_SOURCE_DIR})
+endif()
+
+add_custom_command(OUTPUT "${vcs_version_inc}"
+  DEPENDS "${lldb_vc}" "${generate_vcs_version_script}"
+  COMMAND ${CMAKE_COMMAND} "-DNAMES=LLDB"
+                           "-DLLDB_SOURCE_DIR=${lldb_source_dir}"
+                           "-DHEADER_FILE=${vcs_version_inc}"
+                           -P "${generate_vcs_version_script}")
+
+set_source_files_properties("${vcs_version_inc}"
+  PROPERTIES GENERATED TRUE
+             HEADER_FILE_ONLY TRUE)
+
+# Configure the Version.inc file.
+set(version_inc "${CMAKE_CURRENT_BINARY_DIR}/Version.inc")
+
+configure_file(
+  ${LLDB_SOURCE_DIR}/include/lldb/Basic/Version.inc.in
+  ${version_inc})
+
+set_source_files_properties("${version_inc}"
+  PROPERTIES GENERATED TRUE
+             HEADER_FILE_ONLY TRUE)
+
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+add_lldb_library(lldbBasic
+  Version.cpp
+  ${vcs_version_inc}
+  ${version_inc})
Index: lldb/source/API/SBReproducer.cpp
===================================================================
--- lldb/source/API/SBReproducer.cpp
+++ lldb/source/API/SBReproducer.cpp
@@ -22,8 +22,8 @@
 #include "lldb/API/SBFileSpec.h"
 #include "lldb/API/SBHostOS.h"
 #include "lldb/API/SBReproducer.h"
+#include "lldb/Basic/Version.h"
 #include "lldb/Host/FileSystem.h"
-#include "lldb/lldb-private.h"
 
 using namespace lldb;
 using namespace lldb_private;
Index: lldb/source/API/SBDebugger.cpp
===================================================================
--- lldb/source/API/SBDebugger.cpp
+++ lldb/source/API/SBDebugger.cpp
@@ -11,8 +11,6 @@
 
 #include "lldb/API/SBDebugger.h"
 
-#include "lldb/lldb-private.h"
-
 #include "lldb/API/SBBroadcaster.h"
 #include "lldb/API/SBCommandInterpreter.h"
 #include "lldb/API/SBCommandInterpreterRunOptions.h"
@@ -36,6 +34,7 @@
 #include "lldb/API/SBTypeSummary.h"
 #include "lldb/API/SBTypeSynthetic.h"
 
+#include "lldb/Basic/Version.h"
 #include "lldb/Core/Debugger.h"
 #include "lldb/Core/PluginManager.h"
 #include "lldb/Core/Progress.h"
Index: lldb/source/API/CMakeLists.txt
===================================================================
--- lldb/source/API/CMakeLists.txt
+++ lldb/source/API/CMakeLists.txt
@@ -94,7 +94,7 @@
   ${lldb_lua_wrapper}
 
   LINK_LIBS
-    lldbBase
+    lldbBasic
     lldbBreakpoint
     lldbCore
     lldbDataFormatters
Index: lldb/include/lldb/lldb-private.h
===================================================================
--- lldb/include/lldb/lldb-private.h
+++ lldb/include/lldb/lldb-private.h
@@ -17,12 +17,6 @@
 #include "lldb/lldb-private-types.h"
 #include "lldb/lldb-public.h"
 
-namespace lldb_private {
-
-const char *GetVersion();
-
-} // namespace lldb_private
-
 #endif // defined(__cplusplus)
 
 #endif // LLDB_LLDB_PRIVATE_H
Index: lldb/include/lldb/Basic/Version.inc.in
===================================================================
--- /dev/null
+++ lldb/include/lldb/Basic/Version.inc.in
@@ -0,0 +1,6 @@
+#define LLDB_VERSION @LLDB_VERSION@
+#define LLDB_VERSION_STRING "@LLDB_VERSION@"
+#define LLDB_VERSION_MAJOR @LLDB_VERSION_MAJOR@
+#define LLDB_VERSION_MINOR @LLDB_VERSION_MINOR@
+#define LLDB_VERSION_PATCHLEVEL @LLDB_VERSION_PATCHLEVEL@
+#cmakedefine LLDB_FULL_VERSION_STRING "@LLDB_FULL_VERSION_STRING@"
Index: lldb/include/lldb/Basic/Version.h
===================================================================
--- /dev/null
+++ lldb/include/lldb/Basic/Version.h
@@ -0,0 +1,23 @@
+//===-- Version.h -----------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_BASIC_VERSION_H
+#define LLDB_BASIC_VERSION_H
+
+#include <string>
+
+namespace lldb_private {
+
+/// Retrieves a string representing the complete LLDB version, which includes
+/// the lldb version number, as well as embedded compiler versions and the
+/// vendor tag.
+const char *GetVersion();
+
+} // namespace lldb_private
+
+#endif // LLDB_BASIC_VERSION_H
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to