File: LocalLibXml2.cmake

package info (click to toggle)
libavif 1.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 21,648 kB
  • sloc: ansic: 30,743; cpp: 14,606; xml: 1,507; sh: 1,296; java: 307; makefile: 57
file content (64 lines) | stat: -rw-r--r-- 2,542 bytes parent folder | download
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")