blob: 66111db28f98a67f4b1bf16673a12d998578c995 [file] [log] [blame]
set(AVIF_LIBXML_GIT_TAG "v2.15.1")
# 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 "-")
set(LIBXML2_BINARY_DIR "${FETCHCONTENT_BASE_DIR}/libxml2-build")
if(ANDROID_ABI)
set(LIBXML2_BINARY_DIR "${LIBXML2_BINARY_DIR}/${ANDROID_ABI}")
endif()
FetchContent_Declare(
libxml2
GIT_REPOSITORY "https://github.com/GNOME/libxml2.git"
BINARY_DIR "${LIBXML2_BINARY_DIR}"
GIT_TAG "${AVIF_LIBXML_GIT_TAG}"
GIT_SHALLOW ON
UPDATE_COMMAND ""
)
avif_fetchcontent_populate_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")