[llvm] [cmake] Fix find libxml2 for Windows static libraries (PR #194894)

Andrew Ng via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 29 08:47:02 PDT 2026


https://github.com/nga888 created https://github.com/llvm/llvm-project/pull/194894

* Add the usual Windows static library name "libxml2s"
* Windows build with static libxml2 requires compiler define

>From 0cd8d5a7338d9803b5d935c6efb20f9ce93ddb6b Mon Sep 17 00:00:00 2001
From: Andrew Ng <andrew.ng at sony.com>
Date: Wed, 29 Apr 2026 15:57:55 +0100
Subject: [PATCH] [cmake] Fix find libxml2 for Windows static libraries

* Add the usual Windows static library name "libxml2s"
* Windows build with static libxml2 requires compiler define
---
 llvm/cmake/config-ix.cmake           | 1 +
 llvm/cmake/modules/FindLibXml2.cmake | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake
index 70248c560de1c..3111c8dfe6c19 100644
--- a/llvm/cmake/config-ix.cmake
+++ b/llvm/cmake/config-ix.cmake
@@ -235,6 +235,7 @@ if(LLVM_ENABLE_LIBXML2)
       cmake_push_check_state()
       list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBXML2_INCLUDE_DIR})
       list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBXML2_STATIC_LIBRARY} ${LIBXML2_STATIC_DEPS})
+      list(APPEND CMAKE_REQUIRED_DEFINITIONS ${LIBXML2_DEFINITIONS})
       check_symbol_exists(xmlReadMemory libxml/xmlreader.h HAVE_LIBXML2_STATIC)
       cmake_pop_check_state()
       if(NOT HAVE_LIBXML2_STATIC)
diff --git a/llvm/cmake/modules/FindLibXml2.cmake b/llvm/cmake/modules/FindLibXml2.cmake
index a2323b3bfe1a7..c35d51a2fdc5d 100644
--- a/llvm/cmake/modules/FindLibXml2.cmake
+++ b/llvm/cmake/modules/FindLibXml2.cmake
@@ -33,6 +33,7 @@ find_library(LIBXML2_LIBRARY NAMES xml2 libxml2 libxml2s libxml2_a
 )
 
 find_library(LIBXML2_STATIC_LIBRARY NAMES
+  "${CMAKE_STATIC_LIBRARY_PREFIX}libxml2s${CMAKE_STATIC_LIBRARY_SUFFIX}"
   "${CMAKE_STATIC_LIBRARY_PREFIX}xml2${CMAKE_STATIC_LIBRARY_SUFFIX}"
   "${CMAKE_STATIC_LIBRARY_PREFIX}libxml2${CMAKE_STATIC_LIBRARY_SUFFIX}"
   HINTS
@@ -51,12 +52,14 @@ if(LibXml2_FOUND)
     add_library(LibXml2::LibXml2 UNKNOWN IMPORTED)
     set_target_properties(LibXml2::LibXml2 PROPERTIES
         INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIR}"
+        INTERFACE_COMPILE_OPTIONS "${PC_LIBXML_CFLAGS_OTHER}"
         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}"
+        INTERFACE_COMPILE_OPTIONS "${PC_LIBXML_CFLAGS_OTHER}"
         IMPORTED_LOCATION "${LIBXML2_STATIC_LIBRARY}")
     # Static libraries need their transitive dependencies for linking.
     set(LIBXML2_STATIC_DEPS)



More information about the llvm-commits mailing list