set(AVIF_LIBXML_GIT_TAG "v2.15.3")

# First, whether the library exists.
set(PREFIXES "lib")
if(NOT AVIF_LIBRARY_PREFIX STREQUAL "lib")
    list(APPEND PREFIXES ${AVIF_LIBRARY_PREFIX})
endif()
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)
            return()
        endif()
    endforeach()
endforeach()

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