summaryrefslogtreecommitdiff
path: root/libxml2-config.cmake.cmake.in
blob: 27586aab153955a51a98f0329579981cd237e3cd (plain)
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# libxml2-config.cmake
# --------------------
#
# Libxml2 cmake module.
# This module sets the following variables:
#
# ::
#
#   LIBXML2_INCLUDE_DIR        - Directory where LibXml2 headers are located.
#   LIBXML2_INCLUDE_DIRS       - list of the include directories needed to use LibXml2.
#   LIBXML2_LIBRARY            - path to the LibXml2 library.
#   LIBXML2_LIBRARIES          - xml2 libraries to link against.
#   LIBXML2_DEFINITIONS        - the compiler switches required for using LibXml2.
#   LIBXML2_VERSION_MAJOR      - The major version of libxml2.
#   LIBXML2_VERSION_MINOR      - The minor version of libxml2.
#   LIBXML2_VERSION_PATCH      - The patch version of libxml2.
#   LIBXML2_VERSION_STRING     - version number as a string (ex: "2.3.4")
#   LIBXML2_MODULES            - whether libxml2 has dso support
#   LIBXML2_XMLLINT_EXECUTABLE - path to the XML checking tool xmllint coming with LibXml2

include("${CMAKE_CURRENT_LIST_DIR}/libxml2-export.cmake")

@PACKAGE_INIT@

set(LIBXML2_VERSION_MAJOR  @LIBXML_MAJOR_VERSION@)
set(LIBXML2_VERSION_MINOR  @LIBXML_MINOR_VERSION@)
set(LIBXML2_VERSION_PATCH  @LIBXML_MICRO_VERSION@)
set(LIBXML2_VERSION_STRING "@VERSION@")
set(LIBXML2_INSTALL_PREFIX ${PACKAGE_PREFIX_DIR})
set(LIBXML2_INCLUDE_DIR    ${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@/libxml2)
set(LIBXML2_LIBRARY_DIR    ${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_LIBDIR@)

macro(select_library_location target basename)
  if(TARGET ${target})
    foreach(property IN ITEMS IMPORTED_LOCATION IMPORTED_IMPLIB)
      get_target_property(${basename}_${property}_DEBUG ${target} ${property}_DEBUG)
      get_target_property(${basename}_${property}_MINSIZEREL ${target} ${property}_MINSIZEREL)
      get_target_property(${basename}_${property}_RELEASE ${target} ${property}_RELEASE)
      get_target_property(${basename}_${property}_RELWITHDEBINFO ${target} ${property}_RELWITHDEBINFO)

      if(${basename}_${property}_DEBUG AND ${basename}_${property}_RELEASE)
        set(${basename}_LIBRARY debug ${${basename}_${property}_DEBUG} optimized ${${basename}_${property}_RELEASE})
      elseif(${basename}_${property}_DEBUG AND ${basename}_${property}_RELWITHDEBINFO)
        set(${basename}_LIBRARY debug ${${basename}_${property}_DEBUG} optimized ${${basename}_${property}_RELWITHDEBINFO})
      elseif(${basename}_${property}_DEBUG AND ${basename}_${property}_MINSIZEREL)
        set(${basename}_LIBRARY debug ${${basename}_${property}_DEBUG} optimized ${${basename}_${property}_MINSIZEREL})
      elseif(${basename}_${property}_RELEASE)
        set(${basename}_LIBRARY ${${basename}_${property}_RELEASE})
      elseif(${basename}_${property}_RELWITHDEBINFO)
        set(${basename}_LIBRARY ${${basename}_${property}_RELWITHDEBINFO})
      elseif(${basename}_${property}_MINSIZEREL)
        set(${basename}_LIBRARY ${${basename}_${property}_MINSIZEREL})
      elseif(${basename}_${property}_DEBUG)
        set(${basename}_LIBRARY ${${basename}_${property}_DEBUG})
      endif()
    endforeach()
  endif()
endmacro()

macro(select_executable_location target basename)
  if(TARGET ${target})
    get_target_property(${basename}_IMPORTED_LOCATION_DEBUG ${target} IMPORTED_LOCATION_DEBUG)
    get_target_property(${basename}_IMPORTED_LOCATION_MINSIZEREL ${target} IMPORTED_LOCATION_MINSIZEREL)
    get_target_property(${basename}_IMPORTED_LOCATION_RELEASE ${target} IMPORTED_LOCATION_RELEASE)
    get_target_property(${basename}_IMPORTED_LOCATION_RELWITHDEBINFO ${target} IMPORTED_LOCATION_RELWITHDEBINFO)

    if(${basename}_IMPORTED_LOCATION_RELEASE)
      set(${basename}_EXECUTABLE ${${basename}_IMPORTED_LOCATION_RELEASE})
    elseif(${basename}_IMPORTED_LOCATION_RELWITHDEBINFO)
      set(${basename}_EXECUTABLE ${${basename}_IMPORTED_LOCATION_RELWITHDEBINFO})
    elseif(${basename}_IMPORTED_LOCATION_MINSIZEREL)
      set(${basename}_EXECUTABLE ${${basename}_IMPORTED_LOCATION_MINSIZEREL})
    elseif(${basename}_IMPORTED_LOCATION_DEBUG)
      set(${basename}_EXECUTABLE ${${basename}_IMPORTED_LOCATION_DEBUG})
    endif()
  endif()
endmacro()

select_library_location(LibXml2::LibXml2 LIBXML2)
select_executable_location(LibXml2::xmlcatalog LIBXML2_XMLCATALOG)
select_executable_location(LibXml2::xmllint LIBXML2_XMLLINT)

set(LIBXML2_LIBRARIES ${LIBXML2_LIBRARY})
set(LIBXML2_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR})

include(CMakeFindDependencyMacro)

set(LIBXML2_SHARED @BUILD_SHARED_LIBS@)
set(LIBXML2_WITH_ICONV @LIBXML2_WITH_ICONV@)
set(LIBXML2_WITH_THREADS @LIBXML2_WITH_THREADS@)
set(LIBXML2_WITH_ICU @LIBXML2_WITH_ICU@)
set(LIBXML2_WITH_LZMA @LIBXML2_WITH_LZMA@)
set(LIBXML2_WITH_ZLIB @LIBXML2_WITH_ZLIB@)

if(LIBXML2_WITH_ICONV)
  find_dependency(Iconv)
  list(APPEND LIBXML2_LIBRARIES    ${Iconv_LIBRARIES})
  list(APPEND LIBXML2_INCLUDE_DIRS ${Iconv_INCLUDE_DIRS})
endif()

if(NOT LIBXML2_SHARED)
  set(LIBXML2_DEFINITIONS -DLIBXML_STATIC)

  if(LIBXML2_WITH_THREADS)
    find_dependency(Threads)
    list(APPEND LIBXML2_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
  endif()

  if(LIBXML2_WITH_ICU)
    find_dependency(ICU COMPONENTS data i18n uc)
    list(APPEND LIBXML2_LIBRARIES    ${ICU_LIBRARIES})
  endif()

  if(LIBXML2_WITH_LZMA)
    find_dependency(LibLZMA)
    list(APPEND LIBXML2_LIBRARIES    ${LIBLZMA_LIBRARIES})
  endif()

  if(LIBXML2_WITH_ZLIB)
    find_dependency(ZLIB)
    list(APPEND LIBXML2_LIBRARIES    ${ZLIB_LIBRARIES})
  endif()

  if(UNIX)
    list(APPEND LIBXML2_LIBRARIES m)
  endif()

  if(WIN32)
    list(APPEND LIBXML2_LIBRARIES ws2_32)
  endif()
endif()

# whether libxml2 has dso support
set(LIBXML2_MODULES @LIBXML2_WITH_MODULES@)

mark_as_advanced(LIBXML2_LIBRARY LIBXML2_XMLCATALOG_EXECUTABLE LIBXML2_XMLLINT_EXECUTABLE)