[Lldb-commits] [clang] [lldb] [llvm] [cmake] Add support for statically linking libxml2 (PR #166867)

Petr Hosek via lldb-commits lldb-commits at lists.llvm.org
Sun Nov 9 22:51:05 PST 2025


================
@@ -0,0 +1,31 @@
+include(ExternalProject)
+
+if (NOT LIBXML2_PREFIX)
+  set (LIBXML2_PREFIX libxml2)
+endif()
+
+set(LIBXML2_PATH ${CMAKE_CURRENT_BINARY_DIR}/${LIBXML2_PREFIX}/src/${LIBXML2_PREFIX})
+set(LIBXML2_LIB_PATH ${LIBXML2_PATH}-build/libxml2.a)
+
+ExternalProject_Add(${LIBXML2_PREFIX}
+  PREFIX ${LIBXML2_PREFIX}
+  GIT_REPOSITORY https://github.com/GNOME/libxml2.git
+  GIT_TAG v2.15.1
+  CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+             -DBUILD_SHARED_LIBS=OFF
+             -DLIBXML2_WITH_PYTHON=OFF
+             -DLIBXML2_WITH_PROGRAMS=OFF
+             -DLIBXML2_WITH_TESTS=OFF
+             -DLIBXML2_WITH_LZMA=OFF
+             -DLIBXML2_WITH_ZLIB=OFF
+  CMAKE_CACHE_ARGS -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
+                   -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
+                   -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
+  BUILD_BYPRODUCTS ${LIBXML2_LIB_PATH}
+  UPDATE_COMMAND ""
+  INSTALL_COMMAND ""
+  )
----------------
petrhosek wrote:

I don't want the build system to automatically clone and build a dependency without my approval (and what's worse, control this behavior by a flag such as `LLVM_USE_STATIC_LIBXML2`). This won't work on machines don't allow internet access during build stage (our bots actually fall into that category, and they statically link libxml2 already). I may also want to reuse an existing build of libxml2 or configure it in a specific way (for example enabling the zlib support or enabling LTO) which this implementation doesn't let me.

https://github.com/llvm/llvm-project/pull/166867


More information about the lldb-commits mailing list