[clang] [lldb] [llvm] [cmake] Add support for statically linking libxml2 (PR #166867)
Keith Smiley via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 9 15:31:20 PDT 2026
https://github.com/keith updated https://github.com/llvm/llvm-project/pull/166867
>From d2a0260d15559efd234459dc1d6db16191feae66 Mon Sep 17 00:00:00 2001
From: Keith Smiley <keithbsmiley at gmail.com>
Date: Thu, 4 Dec 2025 16:54:54 +0000
Subject: [PATCH 1/6] redo without external build
---
clang/cmake/caches/Release.cmake | 1 +
llvm/CMakeLists.txt | 2 ++
2 files changed, 3 insertions(+)
diff --git a/clang/cmake/caches/Release.cmake b/clang/cmake/caches/Release.cmake
index efe20a201dbc9..44d5aaabe675c 100644
--- a/clang/cmake/caches/Release.cmake
+++ b/clang/cmake/caches/Release.cmake
@@ -172,6 +172,7 @@ set_final_stage_var(CPACK_GENERATOR "TXZ" STRING)
set_final_stage_var(CPACK_ARCHIVE_THREADS "0" STRING)
set_final_stage_var(LLVM_USE_STATIC_ZSTD "ON" BOOL)
+set_final_stage_var(LLVM_USE_STATIC_LIBXML2 "ON" BOOL)
if (LLVM_RELEASE_ENABLE_LTO)
set_final_stage_var(LLVM_ENABLE_FATLTO "ON" BOOL)
set_final_stage_var(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_CURRENT_LIST_DIR}/release_cpack_pre_build_strip_lto.cmake" STRING)
diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index da012596cca93..6001928f92e37 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -646,6 +646,8 @@ set(LLVM_TARGET_ARCH "host"
set(LLVM_ENABLE_LIBXML2 "ON" CACHE STRING "Use libxml2 if available. Can be ON, OFF, or FORCE_ON")
+set(LLVM_USE_STATIC_LIBXML2 "OFF" CACHE BOOL "Use static version of libxml2. Can be ON, or OFF")
+
option(LLVM_ENABLE_LIBEDIT "Use libedit if available." ON)
option(LLVM_ENABLE_LIBPFM "Use libpfm for performance counters if available." ON)
>From bfe62964af8143f0f3446a99b0d1fc81c694922b Mon Sep 17 00:00:00 2001
From: Keith Smiley <keithbsmiley at gmail.com>
Date: Thu, 4 Dec 2025 17:17:48 +0000
Subject: [PATCH 2/6] re-work
---
lldb/source/Host/CMakeLists.txt | 2 +-
llvm/cmake/modules/FindLibXml2.cmake | 81 ++++++++++++++++++++++++++++
2 files changed, 82 insertions(+), 1 deletion(-)
create mode 100644 llvm/cmake/modules/FindLibXml2.cmake
diff --git a/lldb/source/Host/CMakeLists.txt b/lldb/source/Host/CMakeLists.txt
index d52183f2f968e..d7dc60895950f 100644
--- a/lldb/source/Host/CMakeLists.txt
+++ b/lldb/source/Host/CMakeLists.txt
@@ -158,7 +158,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "NetBSD")
list(APPEND EXTRA_LIBS kvm)
endif()
if (LLDB_ENABLE_LIBXML2)
- list(APPEND EXTRA_LIBS LibXml2::LibXml2)
+ list(APPEND EXTRA_LIBS LibXml2::LibXml2Shared)
endif()
if (HAVE_LIBDL)
list(APPEND EXTRA_LIBS ${CMAKE_DL_LIBS})
diff --git a/llvm/cmake/modules/FindLibXml2.cmake b/llvm/cmake/modules/FindLibXml2.cmake
new file mode 100644
index 0000000000000..2dc5aa2594eac
--- /dev/null
+++ b/llvm/cmake/modules/FindLibXml2.cmake
@@ -0,0 +1,81 @@
+# Based on https://gitlab.kitware.com/cmake/cmake/-/blob/3986f4b79ea6bf247eefad7ddb883cd6f65ac5c1/Modules/FindLibXml2.cmake
+# With support for using a static libxml2 library
+
+# use pkg-config to get the directories and then use these values
+# in the find_path() and find_library() calls
+find_package(PkgConfig QUIET)
+if(PkgConfig_FOUND)
+ pkg_check_modules(PC_LIBXML QUIET libxml-2.0)
+endif()
+
+find_path(LIBXML2_INCLUDE_DIR NAMES libxml/xpath.h
+ HINTS
+ ${PC_LIBXML_INCLUDEDIR}
+ ${PC_LIBXML_INCLUDE_DIRS}
+ PATH_SUFFIXES libxml2
+)
+
+if(DEFINED LIBXML2_LIBRARIES AND NOT DEFINED LIBXML2_LIBRARY)
+ set(LIBXML2_LIBRARY ${LIBXML2_LIBRARIES})
+endif()
+
+find_library(LIBXML2_SHARED_LIBRARY NAMES xml2 libxml2 libxml2_a
+ HINTS
+ ${PC_LIBXML_LIBDIR}
+ ${PC_LIBXML_LIBRARY_DIRS}
+)
+
+if(LLVM_USE_STATIC_LIBXML2)
+ set(_original_suffixes ${CMAKE_FIND_LIBRARY_SUFFIXES})
+ if(UNIX)
+ set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
+ elseif(WIN32)
+ set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a)
+ endif()
+
+ find_library(LIBXML2_STATIC_LIBRARY NAMES xml2 libxml2 libxml2_a
+ HINTS
+ ${PC_LIBXML_LIBDIR}
+ ${PC_LIBXML_LIBRARY_DIRS}
+ )
+
+ if(LIBXML2_STATIC_LIBRARY STREQUAL "LIBXML2_STATIC_LIBRARY-NOTFOUND")
+ message(FATAL_ERROR "Static libxml2 requested (LLVM_USE_STATIC_LIBXML2=ON) but not found")
+ endif()
+
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ${_original_suffixes})
+ set(LIBXML2_LIBRARY ${LIBXML2_STATIC_LIBRARY})
+else()
+ set(LIBXML2_LIBRARY ${LIBXML2_SHARED_LIBRARY})
+endif()
+
+set(LIBXML2_LIBRARIES ${LIBXML2_LIBRARY})
+set(LIBXML2_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR})
+
+unset(LIBXML2_DEFINITIONS)
+foreach(libxml2_pc_lib_dir IN LISTS PC_LIBXML_LIBDIR PC_LIBXML_LIBRARY_DIRS)
+ if (LIBXML2_LIBRARY MATCHES "^${libxml2_pc_lib_dir}")
+ list(APPEND LIBXML2_INCLUDE_DIRS ${PC_LIBXML_INCLUDE_DIRS})
+ set(LIBXML2_DEFINITIONS ${PC_LIBXML_CFLAGS_OTHER})
+ break()
+ endif()
+endforeach()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(LibXml2
+ REQUIRED_VARS LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR
+ VERSION_VAR LibXml2_VERSION)
+
+mark_as_advanced(LIBXML2_INCLUDE_DIR LIBXML2_LIBRARY)
+
+if(LibXml2_FOUND AND NOT TARGET LibXml2::LibXml2)
+ add_library(LibXml2::LibXml2 UNKNOWN IMPORTED)
+ set_target_properties(LibXml2::LibXml2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIRS}")
+ set_target_properties(LibXml2::LibXml2 PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXML2_DEFINITIONS}")
+ set_property(TARGET LibXml2::LibXml2 APPEND PROPERTY IMPORTED_LOCATION "${LIBXML2_LIBRARY}")
+
+ add_library(LibXml2::LibXml2Shared UNKNOWN IMPORTED)
+ set_target_properties(LibXml2::LibXml2Shared PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIRS}")
+ set_target_properties(LibXml2::LibXml2Shared PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXML2_DEFINITIONS}")
+ set_property(TARGET LibXml2::LibXml2Shared APPEND PROPERTY IMPORTED_LOCATION "${LIBXML2_SHARED_LIBRARY}")
+endif()
>From dff6d2f62df004e862aedc54557a926e473acd20 Mon Sep 17 00:00:00 2001
From: Keith Smiley <keithbsmiley at gmail.com>
Date: Thu, 4 Dec 2025 10:23:37 -0800
Subject: [PATCH 3/6] ignore on macOS
---
llvm/cmake/modules/FindLibXml2.cmake | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/llvm/cmake/modules/FindLibXml2.cmake b/llvm/cmake/modules/FindLibXml2.cmake
index 2dc5aa2594eac..3af75f1a098c0 100644
--- a/llvm/cmake/modules/FindLibXml2.cmake
+++ b/llvm/cmake/modules/FindLibXml2.cmake
@@ -25,6 +25,11 @@ find_library(LIBXML2_SHARED_LIBRARY NAMES xml2 libxml2 libxml2_a
${PC_LIBXML_LIBRARY_DIRS}
)
+# This is a system lib on macOS, so we don't need to avoid the dependency
+if(APPLE)
+ set(LLVM_USE_STATIC_LIBXML2 OFF)
+endif()
+
if(LLVM_USE_STATIC_LIBXML2)
set(_original_suffixes ${CMAKE_FIND_LIBRARY_SUFFIXES})
if(UNIX)
>From df4799e30c81b1f255fdd756c104932154aa3d7a Mon Sep 17 00:00:00 2001
From: Keith Smiley <keithbsmiley at gmail.com>
Date: Fri, 13 Mar 2026 14:38:16 -0700
Subject: [PATCH 4/6] Rework to move LLVM specific logic out
---
lldb/source/Host/CMakeLists.txt | 2 +-
llvm/cmake/modules/FindLibXml2.cmake | 96 ++++++++++---------------
llvm/lib/WindowsManifest/CMakeLists.txt | 10 ++-
3 files changed, 45 insertions(+), 63 deletions(-)
diff --git a/lldb/source/Host/CMakeLists.txt b/lldb/source/Host/CMakeLists.txt
index d7dc60895950f..d52183f2f968e 100644
--- a/lldb/source/Host/CMakeLists.txt
+++ b/lldb/source/Host/CMakeLists.txt
@@ -158,7 +158,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "NetBSD")
list(APPEND EXTRA_LIBS kvm)
endif()
if (LLDB_ENABLE_LIBXML2)
- list(APPEND EXTRA_LIBS LibXml2::LibXml2Shared)
+ list(APPEND EXTRA_LIBS LibXml2::LibXml2)
endif()
if (HAVE_LIBDL)
list(APPEND EXTRA_LIBS ${CMAKE_DL_LIBS})
diff --git a/llvm/cmake/modules/FindLibXml2.cmake b/llvm/cmake/modules/FindLibXml2.cmake
index 3af75f1a098c0..599506f9c734a 100644
--- a/llvm/cmake/modules/FindLibXml2.cmake
+++ b/llvm/cmake/modules/FindLibXml2.cmake
@@ -1,8 +1,15 @@
-# Based on https://gitlab.kitware.com/cmake/cmake/-/blob/3986f4b79ea6bf247eefad7ddb883cd6f65ac5c1/Modules/FindLibXml2.cmake
-# With support for using a static libxml2 library
+# Try to find the libxml2 library
+#
+# If successful, the following variables will be defined:
+# LIBXML2_INCLUDE_DIR
+# LIBXML2_LIBRARY
+# LIBXML2_STATIC_LIBRARY
+# LibXml2_FOUND
+#
+# Additionally, the following import targets will be defined:
+# LibXml2::LibXml2
+# LibXml2::LibXml2Static (if the static library is found)
-# use pkg-config to get the directories and then use these values
-# in the find_path() and find_library() calls
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(PC_LIBXML QUIET libxml-2.0)
@@ -19,68 +26,39 @@ if(DEFINED LIBXML2_LIBRARIES AND NOT DEFINED LIBXML2_LIBRARY)
set(LIBXML2_LIBRARY ${LIBXML2_LIBRARIES})
endif()
-find_library(LIBXML2_SHARED_LIBRARY NAMES xml2 libxml2 libxml2_a
+find_library(LIBXML2_LIBRARY NAMES xml2 libxml2 libxml2_a
HINTS
${PC_LIBXML_LIBDIR}
${PC_LIBXML_LIBRARY_DIRS}
)
-# This is a system lib on macOS, so we don't need to avoid the dependency
-if(APPLE)
- set(LLVM_USE_STATIC_LIBXML2 OFF)
-endif()
-
-if(LLVM_USE_STATIC_LIBXML2)
- set(_original_suffixes ${CMAKE_FIND_LIBRARY_SUFFIXES})
- if(UNIX)
- set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
- elseif(WIN32)
- set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a)
- endif()
-
- find_library(LIBXML2_STATIC_LIBRARY NAMES xml2 libxml2 libxml2_a
- HINTS
- ${PC_LIBXML_LIBDIR}
- ${PC_LIBXML_LIBRARY_DIRS}
- )
-
- if(LIBXML2_STATIC_LIBRARY STREQUAL "LIBXML2_STATIC_LIBRARY-NOTFOUND")
- message(FATAL_ERROR "Static libxml2 requested (LLVM_USE_STATIC_LIBXML2=ON) but not found")
- endif()
-
- set(CMAKE_FIND_LIBRARY_SUFFIXES ${_original_suffixes})
- set(LIBXML2_LIBRARY ${LIBXML2_STATIC_LIBRARY})
-else()
- set(LIBXML2_LIBRARY ${LIBXML2_SHARED_LIBRARY})
-endif()
-
-set(LIBXML2_LIBRARIES ${LIBXML2_LIBRARY})
-set(LIBXML2_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR})
-
-unset(LIBXML2_DEFINITIONS)
-foreach(libxml2_pc_lib_dir IN LISTS PC_LIBXML_LIBDIR PC_LIBXML_LIBRARY_DIRS)
- if (LIBXML2_LIBRARY MATCHES "^${libxml2_pc_lib_dir}")
- list(APPEND LIBXML2_INCLUDE_DIRS ${PC_LIBXML_INCLUDE_DIRS})
- set(LIBXML2_DEFINITIONS ${PC_LIBXML_CFLAGS_OTHER})
- break()
- endif()
-endforeach()
+find_library(LIBXML2_STATIC_LIBRARY NAMES
+ "${CMAKE_STATIC_LIBRARY_PREFIX}xml2${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ "${CMAKE_STATIC_LIBRARY_PREFIX}libxml2${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ HINTS
+ ${PC_LIBXML_LIBDIR}
+ ${PC_LIBXML_LIBRARY_DIRS}
+)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibXml2
- REQUIRED_VARS LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR
- VERSION_VAR LibXml2_VERSION)
-
-mark_as_advanced(LIBXML2_INCLUDE_DIR LIBXML2_LIBRARY)
-
-if(LibXml2_FOUND AND NOT TARGET LibXml2::LibXml2)
- add_library(LibXml2::LibXml2 UNKNOWN IMPORTED)
- set_target_properties(LibXml2::LibXml2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIRS}")
- set_target_properties(LibXml2::LibXml2 PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXML2_DEFINITIONS}")
- set_property(TARGET LibXml2::LibXml2 APPEND PROPERTY IMPORTED_LOCATION "${LIBXML2_LIBRARY}")
+ REQUIRED_VARS LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR
+ VERSION_VAR PC_LIBXML_VERSION
+)
- add_library(LibXml2::LibXml2Shared UNKNOWN IMPORTED)
- set_target_properties(LibXml2::LibXml2Shared PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIRS}")
- set_target_properties(LibXml2::LibXml2Shared PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXML2_DEFINITIONS}")
- set_property(TARGET LibXml2::LibXml2Shared APPEND PROPERTY IMPORTED_LOCATION "${LIBXML2_SHARED_LIBRARY}")
+if(LibXml2_FOUND)
+ if(NOT TARGET LibXml2::LibXml2)
+ add_library(LibXml2::LibXml2 UNKNOWN IMPORTED)
+ set_target_properties(LibXml2::LibXml2 PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIR}"
+ IMPORTED_LOCATION "${LIBXML2_LIBRARY}")
+ endif()
+ if(LIBXML2_STATIC_LIBRARY AND NOT TARGET LibXml2::LibXml2Static)
+ add_library(LibXml2::LibXml2Static STATIC IMPORTED)
+ set_target_properties(LibXml2::LibXml2Static PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIR}"
+ IMPORTED_LOCATION "${LIBXML2_STATIC_LIBRARY}")
+ endif()
endif()
+
+mark_as_advanced(LIBXML2_INCLUDE_DIR LIBXML2_LIBRARY LIBXML2_STATIC_LIBRARY)
diff --git a/llvm/lib/WindowsManifest/CMakeLists.txt b/llvm/lib/WindowsManifest/CMakeLists.txt
index 910132a4c7dec..9ed819d2386b9 100644
--- a/llvm/lib/WindowsManifest/CMakeLists.txt
+++ b/llvm/lib/WindowsManifest/CMakeLists.txt
@@ -1,7 +1,11 @@
include(GetLibraryName)
if(LLVM_ENABLE_LIBXML2)
- set(imported_libs LibXml2::LibXml2)
+ if(TARGET LibXml2::LibXml2Static AND LLVM_USE_STATIC_LIBXML2)
+ set(imported_libs LibXml2::LibXml2Static)
+ else()
+ set(imported_libs LibXml2::LibXml2)
+ endif()
endif()
add_llvm_component_library(LLVMWindowsManifest
@@ -24,10 +28,10 @@ if(LLVM_ENABLE_LIBXML2)
# CMAKE_BUILD_TYPE is only meaningful to single-configuration generators.
if(CMAKE_BUILD_TYPE)
string(TOUPPER ${CMAKE_BUILD_TYPE} build_type)
- get_property(libxml2_library TARGET LibXml2::LibXml2 PROPERTY LOCATION_${build_type})
+ get_property(libxml2_library TARGET ${imported_libs} PROPERTY LOCATION_${build_type})
endif()
if(NOT libxml2_library)
- get_property(libxml2_library TARGET LibXml2::LibXml2 PROPERTY LOCATION)
+ get_property(libxml2_library TARGET ${imported_libs} PROPERTY LOCATION)
endif()
get_library_name(${libxml2_library} libxml2_library)
set_property(TARGET LLVMWindowsManifest PROPERTY LLVM_SYSTEM_LIBS ${libxml2_library})
>From a2ff2410a97d5f6838cbe053db5d9c20064011fc Mon Sep 17 00:00:00 2001
From: Keith Smiley <keithbsmiley at gmail.com>
Date: Fri, 13 Mar 2026 15:30:05 -0700
Subject: [PATCH 5/6] check static lib links
---
llvm/cmake/config-ix.cmake | 19 ++++++++++++++++---
llvm/cmake/modules/FindLibXml2.cmake | 11 +++++++++++
llvm/lib/WindowsManifest/CMakeLists.txt | 2 +-
3 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake
index 7a5631b1ae3b5..7eca375e29b87 100644
--- a/llvm/cmake/config-ix.cmake
+++ b/llvm/cmake/config-ix.cmake
@@ -219,14 +219,27 @@ if(LLVM_ENABLE_LIBXML2)
# Check if libxml2 we found is usable; for example, we may have found a 32-bit
# library on a 64-bit system which would result in a link-time failure.
cmake_push_check_state()
- list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBXML2_INCLUDE_DIRS})
- list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBXML2_LIBRARIES})
- list(APPEND CMAKE_REQUIRED_DEFINITIONS ${LIBXML2_DEFINITIONS})
+ list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBXML2_INCLUDE_DIR})
+ list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBXML2_LIBRARY})
check_symbol_exists(xmlReadMemory libxml/xmlreader.h HAVE_LIBXML2)
cmake_pop_check_state()
if(LLVM_ENABLE_LIBXML2 STREQUAL FORCE_ON AND NOT HAVE_LIBXML2)
message(FATAL_ERROR "Failed to configure libxml2")
endif()
+
+ if(LLVM_USE_STATIC_LIBXML2)
+ if(NOT TARGET LibXml2::LibXml2Static)
+ message(FATAL_ERROR "Failed to find static libxml2 library, but LLVM_USE_STATIC_LIBXML2=ON")
+ endif()
+ cmake_push_check_state()
+ list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBXML2_INCLUDE_DIR})
+ list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBXML2_STATIC_LIBRARY} ${LIBXML2_STATIC_DEPS})
+ check_symbol_exists(xmlReadMemory libxml/xmlreader.h HAVE_LIBXML2_STATIC)
+ cmake_pop_check_state()
+ if(NOT HAVE_LIBXML2_STATIC)
+ message(FATAL_ERROR "Failed to configure static libxml2, but LLVM_USE_STATIC_LIBXML2=ON")
+ endif()
+ endif()
endif()
set(LLVM_ENABLE_LIBXML2 "${HAVE_LIBXML2}")
endif()
diff --git a/llvm/cmake/modules/FindLibXml2.cmake b/llvm/cmake/modules/FindLibXml2.cmake
index 599506f9c734a..24080bb1aeab2 100644
--- a/llvm/cmake/modules/FindLibXml2.cmake
+++ b/llvm/cmake/modules/FindLibXml2.cmake
@@ -58,6 +58,17 @@ if(LibXml2_FOUND)
set_target_properties(LibXml2::LibXml2Static PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIR}"
IMPORTED_LOCATION "${LIBXML2_STATIC_LIBRARY}")
+ # Static libraries need their transitive dependencies for linking.
+ set(LIBXML2_STATIC_DEPS)
+ foreach(lib IN LISTS PC_LIBXML_STATIC_LIBRARIES)
+ if(NOT lib STREQUAL "xml2")
+ list(APPEND LIBXML2_STATIC_DEPS ${lib})
+ endif()
+ endforeach()
+ if(LIBXML2_STATIC_DEPS)
+ set_target_properties(LibXml2::LibXml2Static PROPERTIES
+ INTERFACE_LINK_LIBRARIES "${LIBXML2_STATIC_DEPS}")
+ endif()
endif()
endif()
diff --git a/llvm/lib/WindowsManifest/CMakeLists.txt b/llvm/lib/WindowsManifest/CMakeLists.txt
index 9ed819d2386b9..46fe3b50357b6 100644
--- a/llvm/lib/WindowsManifest/CMakeLists.txt
+++ b/llvm/lib/WindowsManifest/CMakeLists.txt
@@ -1,7 +1,7 @@
include(GetLibraryName)
if(LLVM_ENABLE_LIBXML2)
- if(TARGET LibXml2::LibXml2Static AND LLVM_USE_STATIC_LIBXML2)
+ if(LLVM_USE_STATIC_LIBXML2)
set(imported_libs LibXml2::LibXml2Static)
else()
set(imported_libs LibXml2::LibXml2)
>From 40badfde4f883276643ce92626a29766a54c80f2 Mon Sep 17 00:00:00 2001
From: Keith Smiley <keithbsmiley at gmail.com>
Date: Fri, 13 Mar 2026 15:47:14 -0700
Subject: [PATCH 6/6] enable for linux only
---
clang/cmake/caches/Release.cmake | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/clang/cmake/caches/Release.cmake b/clang/cmake/caches/Release.cmake
index 44d5aaabe675c..b0bc3ebfe5cb6 100644
--- a/clang/cmake/caches/Release.cmake
+++ b/clang/cmake/caches/Release.cmake
@@ -172,7 +172,10 @@ set_final_stage_var(CPACK_GENERATOR "TXZ" STRING)
set_final_stage_var(CPACK_ARCHIVE_THREADS "0" STRING)
set_final_stage_var(LLVM_USE_STATIC_ZSTD "ON" BOOL)
-set_final_stage_var(LLVM_USE_STATIC_LIBXML2 "ON" BOOL)
+if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")
+ set_final_stage_var(LLVM_USE_STATIC_LIBXML2 "ON" BOOL)
+endif()
+
if (LLVM_RELEASE_ENABLE_LTO)
set_final_stage_var(LLVM_ENABLE_FATLTO "ON" BOOL)
set_final_stage_var(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_CURRENT_LIST_DIR}/release_cpack_pre_build_strip_lto.cmake" STRING)
More information about the cfe-commits
mailing list