https://github.com/keith updated https://github.com/llvm/llvm-project/pull/166867
>From c0efc4c4a360bc401b790e6022cf6bd5bfd2f750 Mon Sep 17 00:00:00 2001 From: Keith Smiley <[email protected]> Date: Thu, 4 Dec 2025 16:54:54 +0000 Subject: [PATCH 1/2] 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 25f7970119d07..45343c66dfb7f 100644 --- a/clang/cmake/caches/Release.cmake +++ b/clang/cmake/caches/Release.cmake @@ -171,6 +171,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 908580f791f36..7eee65139987f 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -605,6 +605,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 34f3548a8d3a278f4886801e500b6d8077ad532a Mon Sep 17 00:00:00 2001 From: Keith Smiley <[email protected]> Date: Thu, 4 Dec 2025 17:17:48 +0000 Subject: [PATCH 2/2] 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 3184d3a1ead0d..e3a5840564ac1 100644 --- a/lldb/source/Host/CMakeLists.txt +++ b/lldb/source/Host/CMakeLists.txt @@ -154,7 +154,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() _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
