1# Copyright (c) 2020 - 2024 David Guibert
2# Copyright (c) 2024 Antoine Morvan
3# Copyright (c) 2024 - 2025 Niclas Schroeter
6# SPDX-License-Identifier: Apache-2.0
8set_property(GLOBAL PROPERTY libxml2_can_use_system TRUE)
9set_property(GLOBAL PROPERTY libxml2_depends zlib)
11set(libxml2_configure_args "" CACHE STRING "Custom configure arguments for libxml2")
12set(libxml2_build_args "" CACHE STRING "Custom Make arguments for libxml2")
15 if(USE_SYSTEM_libxml2)
16 message(STATUS "LibXml2: enabled (system installed)")
17 find_package(LibXml2 REQUIRED)
19 get_filename_component(LIBXML2_DIR "${LIBXML2_INCLUDE_DIR}" DIRECTORY)
20 get_filename_component(LIBXML2_DIR "${LIBXML2_DIR}" DIRECTORY)
21 message(STATUS "LIBXML2_DIR: ${LIBXML2_DIR}")
22 set_if_not_present(ENV{CPATH} "$ENV{CPATH}"
23 "${LIBXML2_DIR}/include/libxml2")
24 set_if_not_present(ENV{LIBRARY_PATH} "$ENV{LIBRARY_PATH}"
26 set_if_not_present(ENV{LD_LIBRARY_PATH} "$ENV{LD_LIBRARY_PATH}"
28 set_if_not_present(ENV{PATH} "$ENV{PATH}" "${LIBXML2_DIR}/bin")
30 if(NOT TARGET libxml2)
31 message(STATUS "libxml2: enabled (internally built)")
33 find_package(Python REQUIRED)
35 ExternalProject_Data_Add(
40 CPATH=$ENV{CPATH} C_INCLUDE_PATH=$ENV{C_INCLUDE_PATH}
41 LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH} LIBRARY_PATH=$ENV{LIBRARY_PATH}
42 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER}
43 FC=${CMAKE_Fortran_COMPILER} ./configure --prefix=<INSTALL_DIR>
44 --with-python-install-dir=<INSTALL_DIR>/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages
45 --with-zlib=${ZLIB_DIR} ${default_configure_args} ${libxml2_configure_args}
47 CPATH=$ENV{CPATH} C_INCLUDE_PATH=$ENV{C_INCLUDE_PATH}
48 LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH} LIBRARY_PATH=$ENV{LIBRARY_PATH}
49 ${CMAKE_MAKE_PROGRAM} -j${BUILD_PARALLEL_LEVEL} ${default_build_args} ${libxml2_build_args})
51 ExternalProject_Get_Property(libxml2 INSTALL_DIR)
52 set(LIBXML2_DIR ${INSTALL_DIR})
54 set_if_not_present(ENV{CPATH} "$ENV{CPATH}"
55 "${LIBXML2_DIR}/include/libxml2")
56 set_if_not_present(ENV{LIBRARY_PATH} "$ENV{LIBRARY_PATH}"
58 set_if_not_present(ENV{LD_LIBRARY_PATH} "$ENV{LD_LIBRARY_PATH}"
63 "${LIBXML2_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages"
66 add_library(LibXml2::LibXml2 UNKNOWN IMPORTED)
67 set_target_properties(
69 PROPERTIES IMPORTED_LOCATION "${LIBXML2_DIR}/lib/libxml2.so"
70 LOCATION "${LIBXML2_DIR}/lib/libxml2.so"
71 INCLUDE_DIRECTORY "${LIBXML2_DIR}/include/libxml2")