libxml2-config.cmake 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. # libxml2-config.cmake
  2. # --------------------
  3. #
  4. # Libxml2 cmake module.
  5. # This module sets the following variables:
  6. #
  7. # ::
  8. #
  9. # LIBXML2_INCLUDE_DIR - Directory where LibXml2 headers are located.
  10. # LIBXML2_INCLUDE_DIRS - list of the include directories needed to use LibXml2.
  11. # LIBXML2_LIBRARY - path to the LibXml2 library.
  12. # LIBXML2_LIBRARIES - xml2 libraries to link against.
  13. # LIBXML2_DEFINITIONS - the compiler switches required for using LibXml2.
  14. # LIBXML2_VERSION_MAJOR - The major version of libxml2.
  15. # LIBXML2_VERSION_MINOR - The minor version of libxml2.
  16. # LIBXML2_VERSION_PATCH - The patch version of libxml2.
  17. # LIBXML2_VERSION_STRING - version number as a string (ex: "2.3.4")
  18. # LIBXML2_MODULES - whether libxml2 has dso support
  19. # LIBXML2_XMLLINT_EXECUTABLE - path to the XML checking tool xmllint coming with LibXml2
  20. include("${CMAKE_CURRENT_LIST_DIR}/libxml2-export.cmake")
  21. ####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
  22. ####### Any changes to this file will be overwritten by the next CMake run ####
  23. ####### The input file was libxml2-config.cmake.cmake.in ########
  24. get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
  25. macro(set_and_check _var _file)
  26. set(${_var} "${_file}")
  27. if(NOT EXISTS "${_file}")
  28. message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
  29. endif()
  30. endmacro()
  31. macro(check_required_components _NAME)
  32. foreach(comp ${${_NAME}_FIND_COMPONENTS})
  33. if(NOT ${_NAME}_${comp}_FOUND)
  34. if(${_NAME}_FIND_REQUIRED_${comp})
  35. set(${_NAME}_FOUND FALSE)
  36. endif()
  37. endif()
  38. endforeach()
  39. endmacro()
  40. ####################################################################################
  41. set(LIBXML2_VERSION_MAJOR 2)
  42. set(LIBXML2_VERSION_MINOR 12)
  43. set(LIBXML2_VERSION_PATCH 9)
  44. set(LIBXML2_VERSION_STRING "2.12.9")
  45. set(LIBXML2_INSTALL_PREFIX ${PACKAGE_PREFIX_DIR})
  46. set(LIBXML2_INCLUDE_DIR ${PACKAGE_PREFIX_DIR}/include/libxml2)
  47. set(LIBXML2_LIBRARY_DIR ${PACKAGE_PREFIX_DIR}/lib)
  48. macro(select_library_location target basename)
  49. if(TARGET ${target})
  50. foreach(property IN ITEMS IMPORTED_LOCATION IMPORTED_IMPLIB)
  51. get_target_property(${basename}_${property}_DEBUG ${target} ${property}_DEBUG)
  52. get_target_property(${basename}_${property}_MINSIZEREL ${target} ${property}_MINSIZEREL)
  53. get_target_property(${basename}_${property}_NOCONFIG ${target} ${property}_NOCONFIG)
  54. get_target_property(${basename}_${property}_RELEASE ${target} ${property}_RELEASE)
  55. get_target_property(${basename}_${property}_RELWITHDEBINFO ${target} ${property}_RELWITHDEBINFO)
  56. if(${basename}_${property}_DEBUG AND ${basename}_${property}_RELEASE)
  57. set(${basename}_LIBRARY debug ${${basename}_${property}_DEBUG} optimized ${${basename}_${property}_RELEASE})
  58. elseif(${basename}_${property}_DEBUG AND ${basename}_${property}_RELWITHDEBINFO)
  59. set(${basename}_LIBRARY debug ${${basename}_${property}_DEBUG} optimized ${${basename}_${property}_RELWITHDEBINFO})
  60. elseif(${basename}_${property}_DEBUG AND ${basename}_${property}_MINSIZEREL)
  61. set(${basename}_LIBRARY debug ${${basename}_${property}_DEBUG} optimized ${${basename}_${property}_MINSIZEREL})
  62. elseif(${basename}_${property}_RELEASE)
  63. set(${basename}_LIBRARY ${${basename}_${property}_RELEASE})
  64. elseif(${basename}_${property}_RELWITHDEBINFO)
  65. set(${basename}_LIBRARY ${${basename}_${property}_RELWITHDEBINFO})
  66. elseif(${basename}_${property}_MINSIZEREL)
  67. set(${basename}_LIBRARY ${${basename}_${property}_MINSIZEREL})
  68. elseif(${basename}_${property}_DEBUG)
  69. set(${basename}_LIBRARY ${${basename}_${property}_DEBUG})
  70. elseif(${basename}_${property}_NOCONFIG)
  71. set(${basename}_LIBRARY ${${basename}_${property}_NOCONFIG})
  72. endif()
  73. endforeach()
  74. endif()
  75. endmacro()
  76. macro(select_executable_location target basename)
  77. if(TARGET ${target})
  78. get_target_property(${basename}_IMPORTED_LOCATION_DEBUG ${target} IMPORTED_LOCATION_DEBUG)
  79. get_target_property(${basename}_IMPORTED_LOCATION_MINSIZEREL ${target} IMPORTED_LOCATION_MINSIZEREL)
  80. get_target_property(${basename}_IMPORTED_LOCATION_NOCONFIG ${target} IMPORTED_LOCATION_NOCONFIG)
  81. get_target_property(${basename}_IMPORTED_LOCATION_RELEASE ${target} IMPORTED_LOCATION_RELEASE)
  82. get_target_property(${basename}_IMPORTED_LOCATION_RELWITHDEBINFO ${target} IMPORTED_LOCATION_RELWITHDEBINFO)
  83. if(${basename}_IMPORTED_LOCATION_RELEASE)
  84. set(${basename}_EXECUTABLE ${${basename}_IMPORTED_LOCATION_RELEASE})
  85. elseif(${basename}_IMPORTED_LOCATION_RELWITHDEBINFO)
  86. set(${basename}_EXECUTABLE ${${basename}_IMPORTED_LOCATION_RELWITHDEBINFO})
  87. elseif(${basename}_IMPORTED_LOCATION_MINSIZEREL)
  88. set(${basename}_EXECUTABLE ${${basename}_IMPORTED_LOCATION_MINSIZEREL})
  89. elseif(${basename}_IMPORTED_LOCATION_DEBUG)
  90. set(${basename}_EXECUTABLE ${${basename}_IMPORTED_LOCATION_DEBUG})
  91. elseif(${basename}_IMPORTED_LOCATION_NOCONFIG)
  92. set(${basename}_EXECUTABLE ${${basename}_IMPORTED_LOCATION_NOCONFIG})
  93. endif()
  94. endif()
  95. endmacro()
  96. select_library_location(LibXml2::LibXml2 LIBXML2)
  97. select_executable_location(LibXml2::xmlcatalog LIBXML2_XMLCATALOG)
  98. select_executable_location(LibXml2::xmllint LIBXML2_XMLLINT)
  99. set(LIBXML2_LIBRARIES ${LIBXML2_LIBRARY})
  100. set(LIBXML2_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR})
  101. include(CMakeFindDependencyMacro)
  102. set(LIBXML2_SHARED OFF)
  103. set(LIBXML2_WITH_ICONV OFF)
  104. set(LIBXML2_WITH_THREADS ON)
  105. set(LIBXML2_WITH_ICU OFF)
  106. set(LIBXML2_WITH_LZMA OFF)
  107. set(LIBXML2_WITH_ZLIB OFF)
  108. if(LIBXML2_WITH_ICONV)
  109. find_dependency(Iconv)
  110. list(APPEND LIBXML2_LIBRARIES ${Iconv_LIBRARIES})
  111. list(APPEND LIBXML2_INCLUDE_DIRS ${Iconv_INCLUDE_DIRS})
  112. if(NOT Iconv_FOUND)
  113. set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
  114. set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "Iconv dependency was not found")
  115. return()
  116. endif()
  117. endif()
  118. if(NOT LIBXML2_SHARED)
  119. set(LIBXML2_DEFINITIONS -DLIBXML_STATIC)
  120. if(LIBXML2_WITH_THREADS)
  121. find_dependency(Threads)
  122. list(APPEND LIBXML2_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
  123. if(NOT Threads_FOUND)
  124. set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
  125. set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "Threads dependency was not found")
  126. return()
  127. endif()
  128. endif()
  129. if(LIBXML2_WITH_ICU)
  130. find_dependency(ICU COMPONENTS data i18n uc)
  131. list(APPEND LIBXML2_LIBRARIES ${ICU_LIBRARIES})
  132. if(NOT ICU_FOUND)
  133. set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
  134. set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "ICU dependency was not found")
  135. return()
  136. endif()
  137. endif()
  138. if(LIBXML2_WITH_LZMA)
  139. find_dependency(LibLZMA)
  140. list(APPEND LIBXML2_LIBRARIES ${LIBLZMA_LIBRARIES})
  141. if(NOT LibLZMA_FOUND)
  142. set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
  143. set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "LibLZMA dependency was not found")
  144. return()
  145. endif()
  146. endif()
  147. if(LIBXML2_WITH_ZLIB)
  148. find_dependency(ZLIB)
  149. list(APPEND LIBXML2_LIBRARIES ${ZLIB_LIBRARIES})
  150. if(NOT ZLIB_FOUND)
  151. set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
  152. set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "ZLIB dependency was not found")
  153. return()
  154. endif()
  155. endif()
  156. if(UNIX)
  157. list(APPEND LIBXML2_LIBRARIES m)
  158. endif()
  159. if(WIN32)
  160. list(APPEND LIBXML2_LIBRARIES ws2_32)
  161. endif()
  162. endif()
  163. # whether libxml2 has dso support
  164. set(LIBXML2_MODULES OFF)
  165. mark_as_advanced(LIBXML2_LIBRARY LIBXML2_XMLCATALOG_EXECUTABLE LIBXML2_XMLLINT_EXECUTABLE)