[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