[Lldb-commits] [lldb] [lldb] fix the install-lldb target (PR #196070)
Charles Zablit via lldb-commits
lldb-commits at lists.llvm.org
Thu May 7 03:49:14 PDT 2026
https://github.com/charles-zablit updated https://github.com/llvm/llvm-project/pull/196070
>From b210688f23bcb0b12e3d8e5c2adf9b40a8460b2f Mon Sep 17 00:00:00 2001
From: Charles Zablit <c_zablit at apple.com>
Date: Wed, 6 May 2026 14:27:54 +0100
Subject: [PATCH 1/3] [lldb][windows] fix install-lldb target on Windows
---
lldb/CMakeLists.txt | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt
index 0a1ca5cf391ef..3291e6621193a 100644
--- a/lldb/CMakeLists.txt
+++ b/lldb/CMakeLists.txt
@@ -165,6 +165,28 @@ if (LLDB_ENABLE_LUA)
finish_swig_lua("lldb-lua" "${lldb_lua_bindings_dir}" "${LLDB_LUA_CPATH}")
endif()
+set(lldb_runtime_install_deps)
+if(TARGET install-liblldb)
+ list(APPEND lldb_runtime_install_deps liblldb)
+endif()
+if(LLDB_ENABLE_PYTHON AND TARGET install-lldb-python-scripts)
+ list(APPEND lldb_runtime_install_deps lldb-python-scripts)
+endif()
+if(LLDB_ENABLE_LUA AND TARGET install-lldb-lua-library)
+ list(APPEND lldb_runtime_install_deps lldb-lua-library)
+endif()
+
+foreach(lldb_tool lldb lldb-dap)
+ foreach(dep ${lldb_runtime_install_deps})
+ if(TARGET install-${lldb_tool} AND TARGET install-${dep})
+ add_dependencies(install-${lldb_tool} install-${dep})
+ endif()
+ if(TARGET install-${lldb_tool}-stripped AND TARGET install-${dep}-stripped)
+ add_dependencies(install-${lldb_tool}-stripped install-${dep}-stripped)
+ endif()
+ endforeach()
+endforeach()
+
set(LLDB_INCLUDE_UNITTESTS ON)
if (NOT TARGET llvm_gtest)
set(LLDB_INCLUDE_UNITTESTS OFF)
>From 2034139ceb1aab8e8ba583a9c11cdba140fca5ab Mon Sep 17 00:00:00 2001
From: Charles Zablit <c_zablit at apple.com>
Date: Wed, 6 May 2026 17:06:13 +0100
Subject: [PATCH 2/3] fixup! [lldb][windows] fix install-lldb target on Windows
---
lldb/CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt
index 3291e6621193a..fe242e2c4d112 100644
--- a/lldb/CMakeLists.txt
+++ b/lldb/CMakeLists.txt
@@ -169,10 +169,10 @@ set(lldb_runtime_install_deps)
if(TARGET install-liblldb)
list(APPEND lldb_runtime_install_deps liblldb)
endif()
-if(LLDB_ENABLE_PYTHON AND TARGET install-lldb-python-scripts)
+if(TARGET install-lldb-python-scripts)
list(APPEND lldb_runtime_install_deps lldb-python-scripts)
endif()
-if(LLDB_ENABLE_LUA AND TARGET install-lldb-lua-library)
+if(TARGET install-lldb-lua-library)
list(APPEND lldb_runtime_install_deps lldb-lua-library)
endif()
>From 0d1e1ca9a95d83bafee60c248005a4fe070fe534 Mon Sep 17 00:00:00 2001
From: Charles Zablit <c_zablit at apple.com>
Date: Thu, 7 May 2026 11:48:26 +0100
Subject: [PATCH 3/3] fixup! [lldb][windows] fix install-lldb target on Windows
---
lldb/CMakeLists.txt | 22 ------------------
lldb/bindings/lua/CMakeLists.txt | 9 ++++++++
lldb/bindings/python/CMakeLists.txt | 9 ++++++++
lldb/cmake/modules/AddLLDB.cmake | 36 +++++++++++++++++++++++++++++
4 files changed, 54 insertions(+), 22 deletions(-)
diff --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt
index fe242e2c4d112..0a1ca5cf391ef 100644
--- a/lldb/CMakeLists.txt
+++ b/lldb/CMakeLists.txt
@@ -165,28 +165,6 @@ if (LLDB_ENABLE_LUA)
finish_swig_lua("lldb-lua" "${lldb_lua_bindings_dir}" "${LLDB_LUA_CPATH}")
endif()
-set(lldb_runtime_install_deps)
-if(TARGET install-liblldb)
- list(APPEND lldb_runtime_install_deps liblldb)
-endif()
-if(TARGET install-lldb-python-scripts)
- list(APPEND lldb_runtime_install_deps lldb-python-scripts)
-endif()
-if(TARGET install-lldb-lua-library)
- list(APPEND lldb_runtime_install_deps lldb-lua-library)
-endif()
-
-foreach(lldb_tool lldb lldb-dap)
- foreach(dep ${lldb_runtime_install_deps})
- if(TARGET install-${lldb_tool} AND TARGET install-${dep})
- add_dependencies(install-${lldb_tool} install-${dep})
- endif()
- if(TARGET install-${lldb_tool}-stripped AND TARGET install-${dep}-stripped)
- add_dependencies(install-${lldb_tool}-stripped install-${dep}-stripped)
- endif()
- endforeach()
-endforeach()
-
set(LLDB_INCLUDE_UNITTESTS ON)
if (NOT TARGET llvm_gtest)
set(LLDB_INCLUDE_UNITTESTS OFF)
diff --git a/lldb/bindings/lua/CMakeLists.txt b/lldb/bindings/lua/CMakeLists.txt
index 677a07044c2af..0274f08ce7914 100644
--- a/lldb/bindings/lua/CMakeLists.txt
+++ b/lldb/bindings/lua/CMakeLists.txt
@@ -64,6 +64,15 @@ function(finish_swig_lua swig_target lldb_lua_bindings_dir lldb_lua_target_dir)
add_llvm_install_targets(${lldb_lua_library_install_target}
COMPONENT ${lldb_lua_library_target}
DEPENDS ${lldb_lua_library_target})
+ # Tools that link liblldb need the lua bindings installed alongside.
+ foreach(tool lldb lldb-dap)
+ if(TARGET install-${tool})
+ add_dependencies(install-${tool} ${lldb_lua_library_install_target})
+ endif()
+ if(TARGET install-${tool}-stripped AND TARGET ${lldb_lua_library_install_target}-stripped)
+ add_dependencies(install-${tool}-stripped ${lldb_lua_library_install_target}-stripped)
+ endif()
+ endforeach()
endif()
endfunction()
diff --git a/lldb/bindings/python/CMakeLists.txt b/lldb/bindings/python/CMakeLists.txt
index 04457dfd32e3c..6e7c3e52709fe 100644
--- a/lldb/bindings/python/CMakeLists.txt
+++ b/lldb/bindings/python/CMakeLists.txt
@@ -187,6 +187,15 @@ function(finish_swig_python swig_target lldb_python_bindings_dir lldb_python_tar
add_llvm_install_targets(${python_scripts_install_target}
COMPONENT ${python_scripts_target}
DEPENDS ${python_scripts_target})
+ # Tools that link liblldb need the python scripts installed alongside.
+ foreach(tool lldb lldb-dap)
+ if(TARGET install-${tool})
+ add_dependencies(install-${tool} ${python_scripts_install_target})
+ endif()
+ if(TARGET install-${tool}-stripped AND TARGET ${python_scripts_install_target}-stripped)
+ add_dependencies(install-${tool}-stripped ${python_scripts_install_target}-stripped)
+ endif()
+ endforeach()
endif()
# Add a Post-Build Event to copy the custom Python DLL to the lldb binaries dir so that Windows can find it when launching
diff --git a/lldb/cmake/modules/AddLLDB.cmake b/lldb/cmake/modules/AddLLDB.cmake
index 93b6bd2740abb..a04e16a2ba105 100644
--- a/lldb/cmake/modules/AddLLDB.cmake
+++ b/lldb/cmake/modules/AddLLDB.cmake
@@ -36,6 +36,30 @@ function(lldb_tablegen)
endif()
endfunction(lldb_tablegen)
+# Returns TRUE in `out_var` if any of `libs` is `liblldb` or already carries
+# the LLDB_LINKS_LIBLLDB property.
+function(_lldb_links_liblldb_check out_var libs)
+ set(${out_var} FALSE PARENT_SCOPE)
+ foreach(lib ${libs})
+ if("${lib}" STREQUAL "liblldb")
+ set(${out_var} TRUE PARENT_SCOPE)
+ return()
+ endif()
+ if(TARGET "${lib}")
+ get_target_property(_p "${lib}" LLDB_LINKS_LIBLLDB)
+ if(_p)
+ set(${out_var} TRUE PARENT_SCOPE)
+ return()
+ endif()
+ endif()
+ endforeach()
+endfunction()
+
+function(_lldb_propagate_links_liblldb name libs)
+ _lldb_links_liblldb_check(_links_liblldb "${libs}")
+ set_target_properties(${name} PROPERTIES LLDB_LINKS_LIBLLDB ${_links_liblldb})
+endfunction()
+
function(add_lldb_library name)
include_directories(BEFORE
${CMAKE_CURRENT_BINARY_DIR}
@@ -95,6 +119,9 @@ function(add_lldb_library name)
${pass_NO_INSTALL_RPATH}
)
+ # Mark whether this library transitively pulls in liblldb.
+ _lldb_propagate_links_liblldb(${name} "${PARAM_LINK_LIBS}")
+
if(CLANG_LINK_CLANG_DYLIB)
target_link_libraries(${name} PRIVATE clang-cpp)
else()
@@ -220,6 +247,15 @@ function(add_lldb_executable name)
add_llvm_install_targets(install-${name}
DEPENDS ${name}
COMPONENT ${name})
+ # An installed tool that links liblldb won't run without liblldb
+ # installed alongside it.
+ _lldb_links_liblldb_check(_links_liblldb "${ARG_LINK_LIBS}")
+ if(_links_liblldb AND TARGET install-liblldb)
+ add_dependencies(install-${name} install-liblldb)
+ if(TARGET install-${name}-stripped AND TARGET install-liblldb-stripped)
+ add_dependencies(install-${name}-stripped install-liblldb-stripped)
+ endif()
+ endif()
endif()
if(APPLE AND ARG_INSTALL_PREFIX)
lldb_add_post_install_steps_darwin(${name} ${ARG_INSTALL_PREFIX})
More information about the lldb-commits
mailing list