diff options
Diffstat (limited to 'Modules/FindEXPAT.cmake')
-rw-r--r-- | Modules/FindEXPAT.cmake | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Modules/FindEXPAT.cmake b/Modules/FindEXPAT.cmake new file mode 100644 index 0000000..15b419a --- /dev/null +++ b/Modules/FindEXPAT.cmake @@ -0,0 +1,81 @@ +# 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 +^^^^^^^^^^^^^^^^ + +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 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) |