1
0

FindEXPAT.cmake 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. #[=======================================================================[.rst:
  4. FindEXPAT
  5. ---------
  6. Find the native Expat headers and library.
  7. Imported Targets
  8. ^^^^^^^^^^^^^^^^
  9. This module defines the following :prop_tgt:`IMPORTED` targets:
  10. ``EXPAT::EXPAT``
  11. The Expat ``expat`` library, if found.
  12. Result Variables
  13. ^^^^^^^^^^^^^^^^
  14. This module will set the following variables in your project:
  15. ``EXPAT_INCLUDE_DIRS``
  16. where to find expat.h, etc.
  17. ``EXPAT_LIBRARIES``
  18. the libraries to link against to use Expat.
  19. ``EXPAT_FOUND``
  20. true if the Expat headers and libraries were found.
  21. #]=======================================================================]
  22. find_package(PkgConfig QUIET)
  23. pkg_check_modules(PC_EXPAT QUIET expat)
  24. # Look for the header file.
  25. find_path(EXPAT_INCLUDE_DIR NAMES expat.h HINTS ${PC_EXPAT_INCLUDE_DIRS})
  26. # Look for the library.
  27. find_library(EXPAT_LIBRARY NAMES expat libexpat HINTS ${PC_EXPAT_LIBRARY_DIRS})
  28. if (EXPAT_INCLUDE_DIR AND EXISTS "${EXPAT_INCLUDE_DIR}/expat.h")
  29. file(STRINGS "${EXPAT_INCLUDE_DIR}/expat.h" expat_version_str
  30. REGEX "^#[\t ]*define[\t ]+XML_(MAJOR|MINOR|MICRO)_VERSION[\t ]+[0-9]+$")
  31. unset(EXPAT_VERSION_STRING)
  32. foreach(VPART MAJOR MINOR MICRO)
  33. foreach(VLINE ${expat_version_str})
  34. if(VLINE MATCHES "^#[\t ]*define[\t ]+XML_${VPART}_VERSION[\t ]+([0-9]+)$")
  35. set(EXPAT_VERSION_PART "${CMAKE_MATCH_1}")
  36. if(EXPAT_VERSION_STRING)
  37. string(APPEND EXPAT_VERSION_STRING ".${EXPAT_VERSION_PART}")
  38. else()
  39. set(EXPAT_VERSION_STRING "${EXPAT_VERSION_PART}")
  40. endif()
  41. endif()
  42. endforeach()
  43. endforeach()
  44. endif ()
  45. include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
  46. FIND_PACKAGE_HANDLE_STANDARD_ARGS(EXPAT
  47. REQUIRED_VARS EXPAT_LIBRARY EXPAT_INCLUDE_DIR
  48. VERSION_VAR EXPAT_VERSION_STRING)
  49. # Copy the results to the output variables and target.
  50. if(EXPAT_FOUND)
  51. set(EXPAT_LIBRARIES ${EXPAT_LIBRARY})
  52. set(EXPAT_INCLUDE_DIRS ${EXPAT_INCLUDE_DIR})
  53. if(NOT TARGET EXPAT::EXPAT)
  54. add_library(EXPAT::EXPAT UNKNOWN IMPORTED)
  55. set_target_properties(EXPAT::EXPAT PROPERTIES
  56. IMPORTED_LINK_INTERFACE_LANGUAGES "C"
  57. IMPORTED_LOCATION "${EXPAT_LIBRARY}"
  58. INTERFACE_INCLUDE_DIRECTORIES "${EXPAT_INCLUDE_DIRS}")
  59. endif()
  60. endif()
  61. mark_as_advanced(EXPAT_INCLUDE_DIR EXPAT_LIBRARY)