set(AVIF_LIBXML_GIT_TAG "v2.15.2")

# First, whether the library exists.
set(PREFIXES lib ${AVIF_LIBRARY_PREFIX})
set(SUFFIXES "s" "sd" "")
foreach(PREFIX IN LISTS PREFIXES)
    foreach(SUFFIX IN LISTS SUFFIXES)
        set(LIB_FILENAME
            "${AVIF_SOURCE_DIR}/ext/libxml2/install.libavif/lib/${PREFIX}xml2${SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}"
        )
        if(EXISTS "${LIB_FILENAME}")
            message(INFO ${CMAKE_LINK_LIBRARY_FLAG})
            message(STATUS "libavif(AVIF_LIBXML2=LOCAL): compiled library found at ${LIB_FILENAME}")
            add_library(LibXml2 STATIC IMPORTED GLOBAL)
            set_target_properties(LibXml2 PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}" AVIF_LOCAL ON)
            if(WIN32)
                target_link_libraries(LibXml2 INTERFACE bcrypt.lib)
            endif()
            target_compile_definitions(LibXml2 INTERFACE LIBXML_STATIC)
            target_include_directories(LibXml2 INTERFACE "${AVIF_SOURCE_DIR}/ext/libxml2/install.libavif/include/libxml2")
            add_library(LibXml2::LibXml2 ALIAS LibXml2)
        endif()
    endforeach()
endforeach()

if(TARGET LibXml2::LibXml2)
    return()
endif()

message(STATUS "libavif(AVIF_LIBXML2=LOCAL): compiled library not found at ${LIB_FILENAME}; using FetchContent")
if(EXISTS "${AVIF_SOURCE_DIR}/ext/libxml2")
    message(STATUS "libavif(AVIF_LIBXML2=LOCAL): ext/libxml2 found; using as FetchContent SOURCE_DIR")
    set(FETCHCONTENT_SOURCE_DIR_LIBXML2 "${AVIF_SOURCE_DIR}/ext/libxml2")
    message(CHECK_START "libavif(AVIF_LIBXML2=LOCAL): configuring libxml2")
else()
    message(CHECK_START "libavif(AVIF_LIBXML2=LOCAL): fetching and configuring libxml2")
endif()

set(LIBXML2_WITH_ICONV OFF CACHE INTERNAL "-")
set(LIBXML2_WITH_PROGRAMS OFF CACHE INTERNAL "-")
set(LIBXML2_WITH_PYTHON OFF CACHE INTERNAL "-")
set(LIBXML2_WITH_TESTS OFF CACHE INTERNAL "-")
set(LIBXML2_WITH_ZLIB OFF CACHE INTERNAL "-")

FetchContent_Declare(
    libxml2
    EXCLUDE_FROM_ALL
    GIT_REPOSITORY "https://github.com/GNOME/libxml2.git"
    GIT_TAG "${AVIF_LIBXML_GIT_TAG}"
    GIT_SHALLOW ON
    UPDATE_COMMAND ""
)

avif_fetchcontent_makeavailable_cmake(libxml2)

set_property(TARGET LibXml2 PROPERTY AVIF_LOCAL ON)
get_target_property(VAR1 LibXml2 LINKER_LANGUAGE)
get_target_property(VAR2 LibXml2 LINK_LIBRARIES)
get_target_property(VAR3 LibXml2 LINK_DIRECTORIES)
get_target_property(VAR4 LibXml2 LINKER_TYPE)
get_target_property(VAR5 LibXml2 LINK_FLAGS)
get_target_property(VAR6 LibXml2 LINK_OPTIONS)

message(CHECK_PASS "complete")
