| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| # file Copyright.txt or https://cmake.org/licensing for details. | |
| #[=======================================================================[.rst: | |
| FindEXPAT | |
| --------- | |
| Find the native Expat headers and library. | |
| Expat is a stream-oriented XML parser library written in C. | |
| Imported Targets | |
| ^^^^^^^^^^^^^^^^ | |
| .. versionadded:: 3.10 | |
| This module defines the following :prop_tgt:`IMPORTED` targets: | |
| ``EXPAT::EXPAT`` | |
| The Expat ``expat`` library, if found. | |
| Result Variables | |
| ^^^^^^^^^^^^^^^^ | |
| This module will set the following variables in your project: | |
| ``EXPAT_INCLUDE_DIRS`` | |
| where to find expat.h, etc. | |
| ``EXPAT_LIBRARIES`` | |
| the libraries to link against to use Expat. | |
| ``EXPAT_FOUND`` | |
| true if the Expat headers and libraries were found. | |
| #]=======================================================================] | |
| find_package(PkgConfig QUIET) | |
| pkg_check_modules(PC_EXPAT QUIET expat) | |
| # Look for the header file. | |
| find_path(EXPAT_INCLUDE_DIR NAMES expat.h HINTS ${PC_EXPAT_INCLUDE_DIRS}) | |
| # Look for the library. | |
| find_library(EXPAT_LIBRARY NAMES expat libexpat NAMES_PER_DIR HINTS ${PC_EXPAT_LIBRARY_DIRS}) | |
| if (EXPAT_INCLUDE_DIR AND EXISTS "${EXPAT_INCLUDE_DIR}/expat.h") | |
| file(STRINGS "${EXPAT_INCLUDE_DIR}/expat.h" expat_version_str | |
| REGEX "^#[\t ]*define[\t ]+XML_(MAJOR|MINOR|MICRO)_VERSION[\t ]+[0-9]+$") | |
| unset(EXPAT_VERSION_STRING) | |
| foreach(VPART MAJOR MINOR MICRO) | |
| foreach(VLINE ${expat_version_str}) | |
| if(VLINE MATCHES "^#[\t ]*define[\t ]+XML_${VPART}_VERSION[\t ]+([0-9]+)$") | |
| set(EXPAT_VERSION_PART "${CMAKE_MATCH_1}") | |
| if(EXPAT_VERSION_STRING) | |
| string(APPEND EXPAT_VERSION_STRING ".${EXPAT_VERSION_PART}") | |
| else() | |
| set(EXPAT_VERSION_STRING "${EXPAT_VERSION_PART}") | |
| endif() | |
| endif() | |
| endforeach() | |
| endforeach() | |
| endif () | |
| include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) | |
| FIND_PACKAGE_HANDLE_STANDARD_ARGS(EXPAT | |
| REQUIRED_VARS EXPAT_LIBRARY EXPAT_INCLUDE_DIR | |
| VERSION_VAR EXPAT_VERSION_STRING) | |
| # Copy the results to the output variables and target. | |
| if(EXPAT_FOUND) | |
| set(EXPAT_LIBRARIES ${EXPAT_LIBRARY}) | |
| set(EXPAT_INCLUDE_DIRS ${EXPAT_INCLUDE_DIR}) | |
| if(NOT TARGET EXPAT::EXPAT) | |
| add_library(EXPAT::EXPAT UNKNOWN IMPORTED) | |
| set_target_properties(EXPAT::EXPAT PROPERTIES | |
| IMPORTED_LINK_INTERFACE_LANGUAGES "C" | |
| IMPORTED_LOCATION "${EXPAT_LIBRARY}" | |
| INTERFACE_INCLUDE_DIRECTORIES "${EXPAT_INCLUDE_DIRS}") | |
| endif() | |
| endif() | |
| mark_as_advanced(EXPAT_INCLUDE_DIR EXPAT_LIBRARY) |