Author: Jonas Devlieghere
Date: 2026-02-24T19:56:16-08:00
New Revision: ba34cbad4132148447d5593127bbafec7b6f13b1

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

LOG: [lldb] Extract CMake logic to add SWIG wrapper into helper function 
(#183203)

Extract the CMake logic to add SWIG wrapper into helper function defined
in the bindings directly. This avoid code duplication between Python and
Lua.

The function is parameterized in its target, making it possible to add
the wrapper to a different target, for example the respective script
interpreter plugin when building dynamic plugins.

Added: 
    

Modified: 
    lldb/bindings/CMakeLists.txt
    lldb/bindings/lua/CMakeLists.txt
    lldb/bindings/python/CMakeLists.txt
    lldb/source/API/CMakeLists.txt

Removed: 
    


################################################################################
diff  --git a/lldb/bindings/CMakeLists.txt b/lldb/bindings/CMakeLists.txt
index bec694e43bd7b..6b81a15960eae 100644
--- a/lldb/bindings/CMakeLists.txt
+++ b/lldb/bindings/CMakeLists.txt
@@ -50,6 +50,16 @@ function(create_relative_symlink swig_target dest_file 
output_dir output_name)
     WORKING_DIRECTORY ${output_dir})
 endfunction()
 
+function(add_swig_wrapper target wrapper)
+  if (MSVC)
+    set_property(SOURCE ${wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0")
+  else()
+    set_property(SOURCE ${wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " -w")
+  endif()
+  set_source_files_properties(${wrapper} PROPERTIES GENERATED ON)
+  target_sources(${target} PRIVATE ${wrapper})
+endfunction()
+
 if (LLDB_ENABLE_PYTHON)
   add_subdirectory(python)
 endif()

diff  --git a/lldb/bindings/lua/CMakeLists.txt 
b/lldb/bindings/lua/CMakeLists.txt
index 4a110f7829b03..677a07044c2af 100644
--- a/lldb/bindings/lua/CMakeLists.txt
+++ b/lldb/bindings/lua/CMakeLists.txt
@@ -66,3 +66,11 @@ function(finish_swig_lua swig_target lldb_lua_bindings_dir 
lldb_lua_target_dir)
                             DEPENDS ${lldb_lua_library_target})
   endif()
 endfunction()
+
+function(add_lua_wrapper target)
+  get_target_property(lua_bindings_dir swig_wrapper_lua BINARY_DIR)
+  set(lldb_lua_wrapper ${lua_bindings_dir}/LLDBWrapLua.cpp)
+
+  add_dependencies(${target} swig_wrapper_lua)
+  add_swig_wrapper(${target} ${lldb_lua_wrapper})
+endfunction()

diff  --git a/lldb/bindings/python/CMakeLists.txt 
b/lldb/bindings/python/CMakeLists.txt
index 2ebcf5a8e7aca..04457dfd32e3c 100644
--- a/lldb/bindings/python/CMakeLists.txt
+++ b/lldb/bindings/python/CMakeLists.txt
@@ -202,3 +202,25 @@ function(finish_swig_python swig_target 
lldb_python_bindings_dir lldb_python_tar
       COMMENT "Copying Python DLL to LLDB binaries directory.")
   endif()
 endfunction()
+
+function(add_python_wrapper target)
+  get_target_property(python_bindings_dir swig_wrapper_python BINARY_DIR)
+  set(lldb_python_wrapper ${python_bindings_dir}/LLDBWrapPython.cpp)
+
+  add_dependencies(${target} swig_wrapper_python)
+  add_swig_wrapper(${target} ${lldb_python_wrapper})
+
+  # lib/pythonX.Y/dist-packages/lldb/_lldb.so is a symlink to lib/liblldb.so,
+  # which depends on lib/libLLVM*.so (BUILD_SHARED_LIBS) or 
lib/libLLVM-10git.so
+  # (LLVM_LINK_LLVM_DYLIB). Add an additional rpath $ORIGIN/../../../../lib so
+  # that _lldb.so can be loaded from Python.
+  if(LLDB_ENABLE_PYTHON AND (BUILD_SHARED_LIBS OR LLVM_LINK_LLVM_DYLIB) AND 
UNIX AND NOT APPLE)
+    set_property(TARGET ${target} APPEND PROPERTY INSTALL_RPATH 
"\$ORIGIN/../../../../lib${LLVM_LIBDIR_SUFFIX}")
+  endif()
+
+  if(Python3_RPATH)
+    set_property(TARGET ${target} APPEND PROPERTY INSTALL_RPATH 
"${Python3_RPATH}")
+    set_property(TARGET ${target} APPEND PROPERTY BUILD_RPATH   
"${Python3_RPATH}")
+  endif()
+
+endfunction()

diff  --git a/lldb/source/API/CMakeLists.txt b/lldb/source/API/CMakeLists.txt
index 22f920a0368d7..d921e52aa5190 100644
--- a/lldb/source/API/CMakeLists.txt
+++ b/lldb/source/API/CMakeLists.txt
@@ -11,13 +11,6 @@ if(LLDB_ENABLE_PYTHON)
     # inside an extern "C" block.
     remove_module_flags()
   endif()
-  get_target_property(python_bindings_dir swig_wrapper_python BINARY_DIR)
-  set(lldb_python_wrapper ${python_bindings_dir}/LLDBWrapPython.cpp)
-endif()
-
-if(LLDB_ENABLE_LUA)
-  get_target_property(lua_bindings_dir swig_wrapper_lua BINARY_DIR)
-  set(lldb_lua_wrapper ${lua_bindings_dir}/LLDBWrapLua.cpp)
 endif()
 
 # Generate SBLanguages.h from Dwarf.def.
@@ -123,8 +116,6 @@ add_lldb_library(liblldb SHARED ${option_framework}
   SBWatchpoint.cpp
   SBWatchpointOptions.cpp
   SystemInitializerFull.cpp
-  ${lldb_python_wrapper}
-  ${lldb_lua_wrapper}
 
   ADDITIONAL_HEADER_DIRS
     ${LLDB_INCLUDE_DIR}/lldb/API
@@ -151,52 +142,12 @@ add_lldb_library(liblldb SHARED ${option_framework}
   ${option_install_prefix}
 )
 
-# lib/pythonX.Y/dist-packages/lldb/_lldb.so is a symlink to lib/liblldb.so,
-# which depends on lib/libLLVM*.so (BUILD_SHARED_LIBS) or lib/libLLVM-10git.so
-# (LLVM_LINK_LLVM_DYLIB). Add an additional rpath $ORIGIN/../../../../lib so
-# that _lldb.so can be loaded from Python.
-if(LLDB_ENABLE_PYTHON AND (BUILD_SHARED_LIBS OR LLVM_LINK_LLVM_DYLIB) AND UNIX 
AND NOT APPLE)
-  set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH 
"\$ORIGIN/../../../../lib${LLVM_LIBDIR_SUFFIX}")
-endif()
-
-if(Python3_RPATH)
-  set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "${Python3_RPATH}")
-  set_property(TARGET liblldb APPEND PROPERTY BUILD_RPATH   "${Python3_RPATH}")
-endif()
-
-
-if(LLDB_ENABLE_PYTHON)
-  add_dependencies(liblldb swig_wrapper_python)
-
-  if (MSVC)
-    set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY 
COMPILE_FLAGS " /W0")
-  else()
-    set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY 
COMPILE_FLAGS " -w")
-  endif()
-
-  set_source_files_properties(${lldb_python_wrapper} PROPERTIES GENERATED ON)
-  if (CLANG_CL)
-    set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING
-      PROPERTY COMPILE_FLAGS " -Wno-unused-function")
-  endif()
-  if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND
-      NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
-    set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING
-      PROPERTY COMPILE_FLAGS " -Wno-sequence-point -Wno-cast-qual")
-  endif ()
+if (LLDB_ENABLE_PYTHON)
+  add_python_wrapper(liblldb)
 endif()
 
 if(LLDB_ENABLE_LUA)
-  add_dependencies(liblldb swig_wrapper_lua)
-  target_include_directories(liblldb PRIVATE ${LUA_INCLUDE_DIR})
-
-  if (MSVC)
-    set_property(SOURCE ${lldb_lua_wrapper} APPEND_STRING PROPERTY 
COMPILE_FLAGS " /W0")
-  else()
-    set_property(SOURCE ${lldb_lua_wrapper} APPEND_STRING PROPERTY 
COMPILE_FLAGS " -w")
-  endif()
-
-  set_source_files_properties(${lldb_lua_wrapper} PROPERTIES GENERATED ON)
+  add_lua_wrapper(liblldb)
 endif()
 
 set_target_properties(liblldb
@@ -342,7 +293,7 @@ foreach(header
   add_custom_command(
     OUTPUT ${staged_header}
     COMMAND ${copy_command}
-    DEPENDS ${header}     
+    DEPENDS ${header}
     COMMENT "LLDB headers: stage LLDB headers in include directory")
 
   list(APPEND lldb_staged_headers ${staged_header})


        
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to