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

* Add the usual Windows static library name "libxml2s"
* Windows build with static libxml2 requires compiler define
This commit is contained in:
Andrew Ng
2026-04-29 17:42:27 +01:00
committed by GitHub
parent 519333250f
commit 4d7c1c6b08
2 changed files with 4 additions and 0 deletions

View File

@@ -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)

View File

@@ -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)