[Lldb-commits] [lldb] e19d740 - [lldb] Support both Lua 5.3 and Lua 5.4 (#115500)

via lldb-commits lldb-commits at lists.llvm.org
Mon Nov 11 08:11:06 PST 2024


Author: Jonas Devlieghere
Date: 2024-11-11T08:11:03-08:00
New Revision: e19d74016971faed321e5cca20da7016047eb029

URL: https://github.com/llvm/llvm-project/commit/e19d74016971faed321e5cca20da7016047eb029
DIFF: https://github.com/llvm/llvm-project/commit/e19d74016971faed321e5cca20da7016047eb029.diff

LOG: [lldb] Support both Lua 5.3 and Lua 5.4 (#115500)

Lua 5.3 and Lua 5.4 are similar enough that we can easily support both
in LLDB. This patch adds support for building LLDB with both and updates
the documentation accordingly.

Added: 
    

Modified: 
    lldb/CMakeLists.txt
    lldb/cmake/modules/FindLuaAndSwig.cmake
    lldb/docs/resources/build.rst
    lldb/test/API/lit.site.cfg.py.in
    lldb/test/API/lldbtest.py
    lldb/test/API/lua_api/TestLuaAPI.py

Removed: 
    


################################################################################
diff  --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt
index 5827e04b5662f3..85ba4fde17418a 100644
--- a/lldb/CMakeLists.txt
+++ b/lldb/CMakeLists.txt
@@ -87,8 +87,7 @@ if (LLDB_ENABLE_PYTHON)
 endif ()
 
 if (LLDB_ENABLE_LUA)
-  find_program(Lua_EXECUTABLE lua5.3)
-  set(LLDB_LUA_DEFAULT_RELATIVE_PATH "lib/lua/5.3")
+  set(LLDB_LUA_DEFAULT_RELATIVE_PATH "lib/lua/${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
   set(LLDB_LUA_RELATIVE_PATH ${LLDB_LUA_DEFAULT_RELATIVE_PATH}
     CACHE STRING "Path where Lua modules are installed, relative to install prefix")
 endif ()
@@ -138,12 +137,12 @@ endif()
 
 if (LLDB_ENABLE_LUA)
   if(LLDB_BUILD_FRAMEWORK)
-    set(lldb_lua_target_dir "${LLDB_FRAMEWORK_ABSOLUTE_BUILD_DIR}/LLDB.framework/Resources/Lua")
+    set(LLDB_LUA_CPATH "${LLDB_FRAMEWORK_ABSOLUTE_BUILD_DIR}/LLDB.framework/Resources/Lua")
   else()
-    set(lldb_lua_target_dir "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${LLDB_LUA_RELATIVE_PATH}")
+    set(LLDB_LUA_CPATH "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${LLDB_LUA_RELATIVE_PATH}")
   endif()
   get_target_property(lldb_lua_bindings_dir swig_wrapper_lua BINARY_DIR)
-  finish_swig_lua("lldb-lua" "${lldb_lua_bindings_dir}" "${lldb_lua_target_dir}")
+  finish_swig_lua("lldb-lua" "${lldb_lua_bindings_dir}" "${LLDB_LUA_CPATH}")
 endif()
 
 set(LLDB_INCLUDE_UNITTESTS ON)

diff  --git a/lldb/cmake/modules/FindLuaAndSwig.cmake b/lldb/cmake/modules/FindLuaAndSwig.cmake
index 11548b76f843f0..33fadb2a097407 100644
--- a/lldb/cmake/modules/FindLuaAndSwig.cmake
+++ b/lldb/cmake/modules/FindLuaAndSwig.cmake
@@ -8,11 +8,21 @@ if(LUA_LIBRARIES AND LUA_INCLUDE_DIR AND LLDB_ENABLE_SWIG)
   set(LUAANDSWIG_FOUND TRUE)
 else()
   if (LLDB_ENABLE_SWIG)
-    find_package(Lua 5.3 EXACT)
+    find_package(Lua 5.3)
     if(LUA_FOUND)
+      # Find the Lua executable. Only required to run a subset of the Lua
+      # tests.
+      find_program(LUA_EXECUTABLE
+        NAMES
+        "lua"
+        "lua${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
+      )
       mark_as_advanced(
         LUA_LIBRARIES
-        LUA_INCLUDE_DIR)
+        LUA_INCLUDE_DIR
+        LUA_VERSION_MINOR
+        LUA_VERSION_MAJOR
+        LUA_EXECUTABLE)
     endif()
   else()
     message(STATUS "SWIG 4 or later is required for Lua support in LLDB but could not be found")
@@ -26,5 +36,7 @@ else()
                                     REQUIRED_VARS
                                       LUA_LIBRARIES
                                       LUA_INCLUDE_DIR
+                                      LUA_VERSION_MINOR
+                                      LUA_VERSION_MAJOR
                                       LLDB_ENABLE_SWIG)
 endif()

diff  --git a/lldb/docs/resources/build.rst b/lldb/docs/resources/build.rst
index 33b6a6f79def4b..66db84522bff1f 100644
--- a/lldb/docs/resources/build.rst
+++ b/lldb/docs/resources/build.rst
@@ -64,7 +64,7 @@ CMake configuration error.
 +-------------------+------------------------------------------------------+--------------------------+
 | Python            | Python scripting                                     | ``LLDB_ENABLE_PYTHON``   |
 +-------------------+------------------------------------------------------+--------------------------+
-| Lua               | Lua scripting                                        | ``LLDB_ENABLE_LUA``      |
+| Lua               | Lua scripting. Lua 5.3 and 5.4 are supported.        | ``LLDB_ENABLE_LUA``      |
 +-------------------+------------------------------------------------------+--------------------------+
 
 Depending on your platform and package manager, one might run any of the

diff  --git a/lldb/test/API/lit.site.cfg.py.in b/lldb/test/API/lit.site.cfg.py.in
index 7dd8ffd2f5cb4c..ecebc447748593 100644
--- a/lldb/test/API/lit.site.cfg.py.in
+++ b/lldb/test/API/lit.site.cfg.py.in
@@ -20,7 +20,8 @@ config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
 config.target_triple = "@LLVM_TARGET_TRIPLE@"
 config.lldb_build_directory = "@LLDB_TEST_BUILD_DIRECTORY@"
 config.python_executable = "@Python3_EXECUTABLE@"
-config.lua_executable = "@Lua_EXECUTABLE@"
+config.lua_executable = "@LUA_EXECUTABLE@"
+config.lldb_lua_cpath = "@LLDB_LUA_CPATH@"
 config.lua_test_entry = "TestLuaAPI.py"
 config.dotest_common_args_str = lit_config.substitute("@LLDB_TEST_COMMON_ARGS@")
 config.dotest_user_args_str = lit_config.substitute("@LLDB_TEST_USER_ARGS@")

diff  --git a/lldb/test/API/lldbtest.py b/lldb/test/API/lldbtest.py
index c888fb574f4b7f..d6b79ebc2c4342 100644
--- a/lldb/test/API/lldbtest.py
+++ b/lldb/test/API/lldbtest.py
@@ -56,8 +56,8 @@ def execute(self, test, litConfig):
         cmd = [executable] + self.dotest_cmd + [testPath, "-p", testFile]
 
         if isLuaTest:
-            luaExecutable = test.config.lua_executable
-            cmd.extend(["--env", "LUA_EXECUTABLE=%s" % luaExecutable])
+            cmd.extend(["--env", "LUA_EXECUTABLE=%s" % test.config.lua_executable])
+            cmd.extend(["--env", "LLDB_LUA_CPATH=%s" % test.config.lldb_lua_cpath])
 
         timeoutInfo = None
         try:

diff  --git a/lldb/test/API/lua_api/TestLuaAPI.py b/lldb/test/API/lua_api/TestLuaAPI.py
index 065de61ad6577b..4ac795d6964253 100644
--- a/lldb/test/API/lua_api/TestLuaAPI.py
+++ b/lldb/test/API/lua_api/TestLuaAPI.py
@@ -162,15 +162,14 @@ def test_lua_api(self):
             self.skipTest("Lua API tests could not find Lua executable.")
             return
         lua_executable = os.environ["LUA_EXECUTABLE"]
+        lldb_lua_cpath = os.environ["LLDB_LUA_CPATH"]
 
         self.build()
         test_exe = self.getBuildArtifact("a.out")
         test_output = self.getBuildArtifact("output")
         test_input = self.getBuildArtifact("input")
 
-        lua_lldb_cpath = "%s/lua/5.3/?.so" % configuration.lldb_libs_dir
-
-        lua_prelude = "package.cpath = '%s;' .. package.cpath" % lua_lldb_cpath
+        lua_prelude = "package.cpath = '%s/?.so;' .. package.cpath" % lldb_lua_cpath
 
         lua_env = {
             "TEST_EXE": os.path.join(self.getBuildDir(), test_exe),


        


More information about the lldb-commits mailing list