1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
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")
|