From 77c2d05bde2409a06a5c6571af37f0928d57e926 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 13 Mar 2026 07:31:52 -0700 Subject: [PATCH 1/4] Build libxml2 for LLDB Attempting to fix #612 --- cmake/wasi-sdk-toolchain.cmake | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/cmake/wasi-sdk-toolchain.cmake b/cmake/wasi-sdk-toolchain.cmake index 56920f784..acaf6b3b5 100644 --- a/cmake/wasi-sdk-toolchain.cmake +++ b/cmake/wasi-sdk-toolchain.cmake @@ -19,6 +19,7 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64" AND LLVM_CMAKE_FLAGS MATCHES "x86_64") set(LIBEDIT_DEFAULT OFF) endif() option(WASI_SDK_LIBEDIT "Whether or not to build libedit for LLDB" ${LIBEDIT_DEFAULT}) +option(WASI_SDK_LIBXML2 "Whether or not to build libxml2 for LLDB" ON) string(REGEX REPLACE "[ ]+" ";" llvm_cmake_flags_list "${LLVM_CMAKE_FLAGS}") @@ -104,7 +105,6 @@ if(WASI_SDK_LLDB) -DLLDB_ENABLE_LZMA=OFF -DLLDB_ENABLE_LUA=OFF -DLLDB_ENABLE_PYTHON=OFF - -DLLDB_ENABLE_LIBXML2=OFF -DLLDB_ENABLE_FBSDVMCORE=OFF -DLLDB_ENABLE_LINUXPTY=OFF ) @@ -146,8 +146,34 @@ if(WASI_SDK_LLDB) list(APPEND default_cmake_args -DLLDB_ENABLE_LIBEDIT=OFF) add_custom_target(libedit) endif() + + if (WASI_SDK_LIBXML2) + ExternalProject_Add(libxml2 + URL https://download.gnome.org/sources/libxml2/2.15/libxml2-2.15.2.tar.xz + URL_HASH SHA256=c8b9bc81f8b590c33af8cc6c336dbff2f53409973588a351c95f1c621b13d09d + + CMAKE_ARGS + ${default_cmake_args} + -DLIBXML2_WITH_PROGRAMS=OFF + -DLIBXML2_WITH_DEBUG=OFF + -DLIBXML2_WITH_DOCS=OFF + -DLIBXML2_WITH_TESTS=OFF + + USES_TERMINAL_CONFIGURE ON + USES_TERMINAL_BUILD ON + USES_TERMINAL_INSTALL ON + ) + list(APPEND default_cmake_args + -DLLDB_ENABLE_LIBXML2=ON + -DLibXml2_ROOT=${wasi_tmp_install} + ) + else() + list(APPEND default_cmake_args -DLLDB_ENABLE_LIBXML2=OFF) + add_custom_target(libxml2) + endif() else() add_custom_target(libedit) + add_custom_target(libxml2) endif() list(TRANSFORM tools PREPEND --target= OUTPUT_VARIABLE build_targets) @@ -190,7 +216,7 @@ ExternalProject_Add(llvm-build ) add_custom_target(build ALL DEPENDS llvm-build) -ExternalProject_Add_StepDependencies(llvm-build configure libedit) +ExternalProject_Add_StepDependencies(llvm-build configure libedit libxml2) # Installation target for this outer project for installing the toolchain to the # system. From ef0b695bfd20673d8872be3d28c346b35b1e4556 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 13 Mar 2026 11:10:02 -0700 Subject: [PATCH 2/4] Disable iconv on Windows --- cmake/wasi-sdk-toolchain.cmake | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cmake/wasi-sdk-toolchain.cmake b/cmake/wasi-sdk-toolchain.cmake index acaf6b3b5..947839117 100644 --- a/cmake/wasi-sdk-toolchain.cmake +++ b/cmake/wasi-sdk-toolchain.cmake @@ -147,6 +147,13 @@ if(WASI_SDK_LLDB) add_custom_target(libedit) endif() + set(libxml_cmake_args) + + # Windows doesn't have iconv by default, so disable it for now. + if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") + list(APPEND libxml_cmake_args -DLIBXML2_WITH_ICONV=OFF) + endif() + if (WASI_SDK_LIBXML2) ExternalProject_Add(libxml2 URL https://download.gnome.org/sources/libxml2/2.15/libxml2-2.15.2.tar.xz @@ -158,6 +165,7 @@ if(WASI_SDK_LLDB) -DLIBXML2_WITH_DEBUG=OFF -DLIBXML2_WITH_DOCS=OFF -DLIBXML2_WITH_TESTS=OFF + ${libxml_cmake_args} USES_TERMINAL_CONFIGURE ON USES_TERMINAL_BUILD ON From d2731a7a448f8a22cc49c57292e1743463053cad Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 13 Mar 2026 11:11:34 -0700 Subject: [PATCH 3/4] Pass more CMake flags to libxml2 --- cmake/wasi-sdk-toolchain.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/wasi-sdk-toolchain.cmake b/cmake/wasi-sdk-toolchain.cmake index 947839117..75fe5eaa8 100644 --- a/cmake/wasi-sdk-toolchain.cmake +++ b/cmake/wasi-sdk-toolchain.cmake @@ -166,6 +166,7 @@ if(WASI_SDK_LLDB) -DLIBXML2_WITH_DOCS=OFF -DLIBXML2_WITH_TESTS=OFF ${libxml_cmake_args} + ${LLVM_CMAKE_FLAGS} USES_TERMINAL_CONFIGURE ON USES_TERMINAL_BUILD ON From b079464ea123b37a289566d5f656de20befad81b Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 13 Mar 2026 13:22:19 -0700 Subject: [PATCH 4/4] Fix passing flags --- cmake/wasi-sdk-toolchain.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/wasi-sdk-toolchain.cmake b/cmake/wasi-sdk-toolchain.cmake index 75fe5eaa8..ef977c31f 100644 --- a/cmake/wasi-sdk-toolchain.cmake +++ b/cmake/wasi-sdk-toolchain.cmake @@ -166,7 +166,7 @@ if(WASI_SDK_LLDB) -DLIBXML2_WITH_DOCS=OFF -DLIBXML2_WITH_TESTS=OFF ${libxml_cmake_args} - ${LLVM_CMAKE_FLAGS} + ${llvm_cmake_flags_list} USES_TERMINAL_CONFIGURE ON USES_TERMINAL_BUILD ON